[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor/master] Avoid a double-close on one failing case of the socketpair replacement code
commit d819663b661aea4f276404224fec6fe9c33f0bd9
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date: Tue Aug 6 16:41:57 2013 -0400
Avoid a double-close on one failing case of the socketpair replacement code
Fix for bug 9400, spotted by coverity. Bug introduced in revision 2cb4f7a4
(subversion revision r389).
---
changes/bug9400 | 7 +++++++
src/common/compat.c | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/changes/bug9400 b/changes/bug9400
new file mode 100644
index 0000000..9742240
--- /dev/null
+++ b/changes/bug9400
@@ -0,0 +1,7 @@
+ o Minor bugfixes:
+
+ - Avoid double-closing the listener socket in our socketpair replacement
+ (used on Windows) in the case where the addresses on our opened
+ sockets don't match what we expected. Fixes bug 9400; bugfix on
+ every released Tor version. Found by Coverity.
+
diff --git a/src/common/compat.c b/src/common/compat.c
index bf6a0a4..d88c5f9 100644
--- a/src/common/compat.c
+++ b/src/common/compat.c
@@ -1281,7 +1281,6 @@ tor_socketpair(int family, int type, int protocol, tor_socket_t fd[2])
goto tidy_up_and_fail;
if (size != sizeof(listen_addr))
goto abort_tidy_up_and_fail;
- tor_close_socket(listener);
/* Now check we are talking to ourself by matching port and host on the
two sockets. */
if (getsockname(connector, (struct sockaddr *) &connect_addr, &size) == -1)
@@ -1292,6 +1291,7 @@ tor_socketpair(int family, int type, int protocol, tor_socket_t fd[2])
|| listen_addr.sin_port != connect_addr.sin_port) {
goto abort_tidy_up_and_fail;
}
+ tor_close_socket(listener);
fd[0] = connector;
fd[1] = acceptor;
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits