mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
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).
This commit is contained in:
parent
031e695aa5
commit
d819663b66
7
changes/bug9400
Normal file
7
changes/bug9400
Normal file
@ -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.
|
||||||
|
|
@ -1281,7 +1281,6 @@ tor_socketpair(int family, int type, int protocol, tor_socket_t fd[2])
|
|||||||
goto tidy_up_and_fail;
|
goto tidy_up_and_fail;
|
||||||
if (size != sizeof(listen_addr))
|
if (size != sizeof(listen_addr))
|
||||||
goto abort_tidy_up_and_fail;
|
goto abort_tidy_up_and_fail;
|
||||||
tor_close_socket(listener);
|
|
||||||
/* Now check we are talking to ourself by matching port and host on the
|
/* Now check we are talking to ourself by matching port and host on the
|
||||||
two sockets. */
|
two sockets. */
|
||||||
if (getsockname(connector, (struct sockaddr *) &connect_addr, &size) == -1)
|
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) {
|
|| listen_addr.sin_port != connect_addr.sin_port) {
|
||||||
goto abort_tidy_up_and_fail;
|
goto abort_tidy_up_and_fail;
|
||||||
}
|
}
|
||||||
|
tor_close_socket(listener);
|
||||||
fd[0] = connector;
|
fd[0] = connector;
|
||||||
fd[1] = acceptor;
|
fd[1] = acceptor;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user