Module: wine Branch: master Commit: 6992f2cba58982f8453c307e3cfcf65b767e82da URL: https://gitlab.winehq.org/wine/wine/-/commit/6992f2cba58982f8453c307e3cfcf65...
Author: Paul Gofman pgofman@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) {