From a29999392af7085a65714c92029733a1c2dfbe85 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 9 Mar 2011 11:46:34 +0100 Subject: socket_wrapper: fix handling of addr and addrlen metze --- lib/socket_wrapper/socket_wrapper.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'lib/socket_wrapper/socket_wrapper.c') diff --git a/lib/socket_wrapper/socket_wrapper.c b/lib/socket_wrapper/socket_wrapper.c index cd913275f63..6eb4979d3fc 100644 --- a/lib/socket_wrapper/socket_wrapper.c +++ b/lib/socket_wrapper/socket_wrapper.c @@ -1538,10 +1538,11 @@ _PUBLIC_ int swrap_accept(int s, struct sockaddr *addr, socklen_t *addrlen) child_si->peername = sockaddr_dup(my_addr, len); if (addr != NULL && addrlen != NULL) { - *addrlen = len; - if (*addrlen >= len) - memcpy(addr, my_addr, len); - *addrlen = 0; + size_t copy_len = MIN(*addrlen, len); + if (copy_len > 0) { + memcpy(addr, my_addr, copy_len); + } + *addrlen = len; } ret = real_getsockname(fd, (struct sockaddr *)(void *)&un_my_addr, -- cgit