From: Nick Mathewson Date: Mon, 18 Mar 2013 19:44:23 +0000 (-0400) Subject: Fix another case of bug 8206; patch from flupzor X-Git-Tag: tor-0.2.5.1-alpha~260^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0b827cbcb11abece686d402170bd58724a77e365;p=thirdparty%2Ftor.git Fix another case of bug 8206; patch from flupzor --- diff --git a/src/common/compat.c b/src/common/compat.c index 25df9a960c..4fa9fee42e 100644 --- a/src/common/compat.c +++ b/src/common/compat.c @@ -1172,10 +1172,22 @@ tor_socketpair(int family, int type, int protocol, tor_socket_t fd[2]) return -errno; #if defined(FD_CLOEXEC) - if (SOCKET_OK(fd[0])) - fcntl(fd[0], F_SETFD, FD_CLOEXEC); - if (SOCKET_OK(fd[1])) - fcntl(fd[1], F_SETFD, FD_CLOEXEC); + if (SOCKET_OK(fd[0])) { + r = fcntl(fd[0], F_SETFD, FD_CLOEXEC); + if (r == -1) { + close(fd[0]); + close(fd[1]); + return -errno; + } + } + if (SOCKET_OK(fd[1])) { + r = fcntl(fd[1], F_SETFD, FD_CLOEXEC); + if (r == -1) { + close(fd[0]); + close(fd[1]); + return -errno; + } + } #endif goto sockets_ok; /* So that sockets_ok will not be unused. */