[tor-commits] [stem/master] Validate address before connecting

atagar at torproject.org atagar at torproject.org
Wed Feb 7 20:29:07 UTC 2018


commit 801ceb20f5cb113253d88956fac9a9501ce2521e
Author: Damian Johnson <atagar at torproject.org>
Date:   Wed Feb 7 12:27:43 2018 -0800

    Validate address before connecting
    
    Oops, the Address constructor indeed validates addresses *but* it was called
    after we established a socket. As such our integ tests failed with...
    
      ======================================================================
      ERROR: test_invalid_arguments
      ----------------------------------------------------------------------
      Traceback (most recent call last):
        File "/srv/jenkins-workspace/workspace/stem-tor-ci/test/integ/client/connection.py", line 20, in test_invalid_arguments
          self.assertRaisesRegexp(ValueError, "'nope' isn't an IPv4 or IPv6 address", Relay.connect, 'nope', 80)
        File "/srv/jenkins-workspace/workspace/stem-tor-ci/stem/util/test_tools.py", line 278, in assertRaisesRegexp
          return super(original_type, self).assertRaisesRegexp(exc_type, exc_msg, func, *args, **kwargs)
        File "/usr/lib/python2.7/unittest/case.py", line 993, in assertRaisesRegexp
          callable_obj(*args, **kwargs)
        File "/srv/jenkins-workspace/workspace/stem-tor-ci/stem/client/__init__.py", line 80, in connect
          conn = stem.socket.RelaySocket(address, port)
        File "/srv/jenkins-workspace/workspace/stem-tor-ci/stem/socket.py", line 378, in __init__
          self.connect()
        File "/srv/jenkins-workspace/workspace/stem-tor-ci/stem/socket.py", line 177, in connect
          self._socket = self._make_socket()
        File "/srv/jenkins-workspace/workspace/stem-tor-ci/stem/socket.py", line 418, in _make_socket
          raise stem.SocketError(exc)
      SocketError: [Errno -2] Name or service not known
    
      ----------------------------------------------------------------------
---
 stem/client/__init__.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/stem/client/__init__.py b/stem/client/__init__.py
index 2b853baa..340082c7 100644
--- a/stem/client/__init__.py
+++ b/stem/client/__init__.py
@@ -71,6 +71,8 @@ class Relay(object):
       * :class:`stem.SocketError` if we're unable to establish a connection
     """
 
+    relay_addr = Address(address)
+
     if not stem.util.connection.is_valid_port(port):
       raise ValueError("'%s' isn't a valid port" % port)
     elif not link_protocols:
@@ -108,7 +110,7 @@ class Relay(object):
     # where it would help.
 
     link_protocol = max(common_protocols)
-    conn.send(stem.client.cell.NetinfoCell(Address(address), []).pack(link_protocol))
+    conn.send(stem.client.cell.NetinfoCell(relay_addr, []).pack(link_protocol))
 
     return Relay(conn, link_protocol)
 



More information about the tor-commits mailing list