mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
Fix memory leak in bug 20716
newconn->address is strdup'ed twice when new_type == CONN_TYPE_AP and conn->socket_family == AF_UNIX. Whilst here, juggle code to make sure newconn->port is assigned from an initialised value in the above case.
This commit is contained in:
parent
6c2174d44d
commit
3b6da3f90c
3
changes/bug20716
Normal file
3
changes/bug20716
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
o Minor bugfixes (client, memory leak):
|
||||||
|
- Fix a small memory leak when receiving AF_UNIX connections on
|
||||||
|
a SocksPort. Fixes bug 20716; bugfix on 0.2.6.3-alpha.
|
@ -1497,16 +1497,19 @@ connection_handle_listener_read(connection_t *conn, int new_type)
|
|||||||
|
|
||||||
/* remember the remote address */
|
/* remember the remote address */
|
||||||
tor_addr_copy(&newconn->addr, &addr);
|
tor_addr_copy(&newconn->addr, &addr);
|
||||||
newconn->port = port;
|
if (new_type == CONN_TYPE_AP && conn->socket_family == AF_UNIX) {
|
||||||
newconn->address = tor_dup_addr(&addr);
|
newconn->port = 0;
|
||||||
|
newconn->address = tor_strdup(conn->address);
|
||||||
|
} else {
|
||||||
|
newconn->port = port;
|
||||||
|
newconn->address = tor_dup_addr(&addr);
|
||||||
|
}
|
||||||
|
|
||||||
if (new_type == CONN_TYPE_AP && conn->socket_family != AF_UNIX) {
|
if (new_type == CONN_TYPE_AP && conn->socket_family != AF_UNIX) {
|
||||||
log_info(LD_NET, "New SOCKS connection opened from %s.",
|
log_info(LD_NET, "New SOCKS connection opened from %s.",
|
||||||
fmt_and_decorate_addr(&addr));
|
fmt_and_decorate_addr(&addr));
|
||||||
}
|
}
|
||||||
if (new_type == CONN_TYPE_AP && conn->socket_family == AF_UNIX) {
|
if (new_type == CONN_TYPE_AP && conn->socket_family == AF_UNIX) {
|
||||||
newconn->port = 0;
|
|
||||||
newconn->address = tor_strdup(conn->address);
|
|
||||||
log_info(LD_NET, "New SOCKS AF_UNIX connection opened");
|
log_info(LD_NET, "New SOCKS AF_UNIX connection opened");
|
||||||
}
|
}
|
||||||
if (new_type == CONN_TYPE_CONTROL) {
|
if (new_type == CONN_TYPE_CONTROL) {
|
||||||
|
Loading…
Reference in New Issue
Block a user