Paul Gofman : server: Set error in check_addr_usage().
Module: wine Branch: master Commit: 6992f2cba58982f8453c307e3cfcf65b767e82da URL: https://gitlab.winehq.org/wine/wine/-/commit/6992f2cba58982f8453c307e3cfcf65... Author: Paul Gofman <pgofman(a)codeweavers.com> Date: Mon Oct 31 15:06:47 2022 -0600 server: Set error in check_addr_usage(). --- server/sock.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/server/sock.c b/server/sock.c index 5ed62ae700f..3bb04c5925a 100644 --- a/server/sock.c +++ b/server/sock.c @@ -335,7 +335,11 @@ static int check_addr_usage( struct sock *sock, const union unix_sockaddr *addr, if ((entry = rb_get( &bound_addresses_tree, &search_addr ))) { bound_addr = WINE_RB_ENTRY_VALUE(entry, struct bound_addr, entry); - if (bound_addr->reuse_count == -1 || !sock->reuseaddr) return 1; + if (bound_addr->reuse_count == -1 || !sock->reuseaddr) + { + set_error( sock->reuseaddr ? STATUS_ACCESS_DENIED : STATUS_SHARING_VIOLATION ); + return 1; + } } if (sock->family != WS_AF_INET6 || v6only) return 0; @@ -344,7 +348,11 @@ static int check_addr_usage( struct sock *sock, const union unix_sockaddr *addr, if ((entry = rb_get( &bound_addresses_tree, &search_addr ))) { bound_addr = WINE_RB_ENTRY_VALUE(entry, struct bound_addr, entry); - if (bound_addr->reuse_count == -1 || !sock->reuseaddr) return 1; + if (bound_addr->reuse_count == -1 || !sock->reuseaddr) + { + set_error( sock->reuseaddr ? STATUS_ACCESS_DENIED : STATUS_SHARING_VIOLATION ); + return 1; + } } return 0; } @@ -2895,10 +2903,7 @@ static void sock_ioctl( struct fd *fd, ioctl_code_t code, struct async *async ) #endif if (check_addr_usage( sock, &bind_addr, v6only )) - { - set_error( sock->reuseaddr ? STATUS_ACCESS_DENIED : STATUS_SHARING_VIOLATION ); return; - } if (bind( unix_fd, &bind_addr.addr, unix_len ) < 0) {
participants (1)
-
Alexandre Julliard