[tor-bugs] #12585 [Tor]: Implement new option SocksSocket

Tor Bug Tracker & Wiki blackhole at torproject.org
Fri Aug 8 12:04:57 UTC 2014


#12585: Implement new option SocksSocket
-----------------------------+--------------------------------
     Reporter:  ioerror      |      Owner:
         Type:  enhancement  |     Status:  needs_revision
     Priority:  normal       |  Milestone:  Tor: 0.2.6.x-final
    Component:  Tor          |    Version:  Tor: unspecified
   Resolution:               |   Keywords:  026-triaged-1
Actual Points:               |  Parent ID:
       Points:               |
-----------------------------+--------------------------------
Changes (by yawning):

 * status:  needs_review => needs_revision


Comment:

 (I looked at SocksSocket-009.patch.)

 Some quick thoughts after a casual review:
  * This patch will break the build in environments that do not define
 AF_UNIX.  I'm not sure we actually care or build in such places
 (src/or/connections.c and src/or/cpuworker.c also will break the build),
 but a good fraction of the code has explicit guards.
  * In or/config.c:parse_ports() the parse_unix_socket_config() call should
 probably be next to where the normal SocksPort/SocksListenAddress is
 handled, instead of in a block where the control port is handled. (Minor)
  * In or/connection.c:
    * check_location_for_socks_unix_socket() is duplicating
 check_location_for_unix_socket() just to look at a different option and
 print "SocksSocket" instead of "control socket".  This should probably be
 one routine, that takes the group writable option as an argument and an
 error message that works for both cases (or another argument).
    * check_location_for_socks_unix_socket() inherited not using
 path_is_relative() from check_location_for_unix_socket().  Both cases
 should probably be fixed for future portability.
    * connection_listener_new() has left overs from what looks like an
 attempt to handle the control port and SocksSocket with the same code.
 "if ( type == CONN_TYPE_CONTROL_LISTENER ) {") is harmless  but should be
 removed.  "if (options->SocksSocketsGroupWritable) {" is a bug (the
 control port socket will be made group writable based off
 SocksSocketGroupWritable").
    * connection_handle_listener_read() leaks memory, a tor_dup_addr() call
 needs to be moved into a branch.
 {{{
     newconn->address = tor_dup_addr(&addr); /* malloc() here */
     /* <snip> */
     if (new_type == CONN_TYPE_AP && conn->socket_family == AF_UNIX) {
       newconn->port = 0;
       newconn->address = tor_strdup(conn->address); /* leak here */
 }}}
  * Run make check-spaces and fix the whitespace issues.

 It looks mostly ok, but there's a few minor bug fixes required (and
 whitespace cleanup), setting to needs_revision.

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/12585#comment:28>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list