Browse Source

Merge branch 'bug20716_026' into maint-0.2.9

Nick Mathewson 7 years ago
parent
commit
8b93cbc16d
2 changed files with 10 additions and 4 deletions
  1. 3 0
      changes/bug20716
  2. 7 4
      src/or/connection.c

+ 3 - 0
changes/bug20716

@@ -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.

+ 7 - 4
src/or/connection.c

@@ -1594,16 +1594,19 @@ connection_handle_listener_read(connection_t *conn, int new_type)
 
     /* remember the remote address */
     tor_addr_copy(&newconn->addr, &addr);
-    newconn->port = port;
-    newconn->address = tor_addr_to_str_dup(&addr);
+    if (new_type == CONN_TYPE_AP && conn->socket_family == AF_UNIX) {
+      newconn->port = 0;
+      newconn->address = tor_strdup(conn->address);
+    } else {
+      newconn->port = port;
+      newconn->address = tor_addr_to_str_dup(&addr);
+    }
 
     if (new_type == CONN_TYPE_AP && conn->socket_family != AF_UNIX) {
       log_info(LD_NET, "New SOCKS connection opened from %s.",
                fmt_and_decorate_addr(&addr));
     }
     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");
     }
     if (new_type == CONN_TYPE_CONTROL) {