From f38c0b43d5620ab6457bf8a4fbdaf3a7bf90627c Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Fri, 30 May 2014 14:20:40 +0200 Subject: swrap: check whether an address:port is already in use in swrap_bind() Signed-off-by: Michael Adam Reviewed-by: Andreas Schneider --- src/socket_wrapper.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c index 477f115..f6adc95 100644 --- a/src/socket_wrapper.c +++ b/src/socket_wrapper.c @@ -2829,6 +2829,7 @@ static int swrap_bind(int s, const struct sockaddr *myaddr, socklen_t addrlen) struct sockaddr_un un_addr; struct socket_info *si = find_socket_info(s); int bind_error = 0; + bool in_use; if (!si) { return libc_bind(s, myaddr, addrlen); @@ -2884,6 +2885,12 @@ static int swrap_bind(int s, const struct sockaddr *myaddr, socklen_t addrlen) return -1; } + in_use = check_addr_port_in_use(myaddr, addrlen); + if (in_use) { + errno = EADDRINUSE; + return -1; + } + free(si->myname); si->myname_len = addrlen; si->myname = sockaddr_dup(myaddr, addrlen); -- cgit