diff options
author | Nick Mathewson <nickm@torproject.org> | 2013-03-18 15:44:23 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2013-03-18 15:44:23 -0400 |
commit | 0b827cbcb11abece686d402170bd58724a77e365 (patch) | |
tree | e677c07fade6ad1d67b91af9a0510877281af6a6 /src/common | |
parent | eff1cfaaf7bf82aefd16b39922b1297e2f8ce2c9 (diff) | |
download | tor-0b827cbcb11abece686d402170bd58724a77e365.tar.gz tor-0b827cbcb11abece686d402170bd58724a77e365.zip |
Fix another case of bug 8206; patch from flupzor
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/compat.c | 20 |
1 files changed, 16 insertions, 4 deletions
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. */ |