[tor-commits] [tor/master] Treat null address as "unknown", not "rejected" in md policy

nickm at torproject.org nickm at torproject.org
Fri Jul 15 21:53:23 UTC 2011


commit f40df02f3e26df792b7e364d1b6ea5dab167405c
Author: Nick Mathewson <nickm at torproject.org>
Date:   Fri Jul 15 12:44:51 2011 -0400

    Treat null address as "unknown", not "rejected" in md policy
    
    Previously, we had an issue where we'd treat an unknown address as
    0, which turned into "0.0.0.0", which looked like a rejected
    address.  This meant in practice that as soon as we started doing
    comparisons of unknown uint32 addresses to short policies, we'd get
    'rejected' right away.  Because of the circumstances under which
    this would be called, it would only happen when we had local DNS
    cached entries and we were looking to launch new circuits.
---
 changes/shortpolicy_compare |    4 ++++
 src/or/policies.c           |    4 +++-
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/changes/shortpolicy_compare b/changes/shortpolicy_compare
new file mode 100644
index 0000000..3de0948
--- /dev/null
+++ b/changes/shortpolicy_compare
@@ -0,0 +1,4 @@
+  o Major bugfixes:
+    - Fix a bug where comparing an unknown address to a microdescriptor's
+      shortened exit policy would always seem to give a "rejected" result.
+      Bugfix on 0.2.3.1-alpha. Fixes bug 3599.
diff --git a/src/or/policies.c b/src/or/policies.c
index 5bd13b5..93cae76 100644
--- a/src/or/policies.c
+++ b/src/or/policies.c
@@ -1415,8 +1415,10 @@ compare_tor_addr_to_short_policy(const tor_addr_t *addr, uint16_t port,
 
   tor_assert(port != 0);
 
+  if (addr && tor_addr_is_null(addr))
+    addr = NULL; /* Unspec means 'no address at all,' in this context. */
+
   if (addr && (tor_addr_is_internal(addr, 0) ||
-               tor_addr_is_null(addr) ||
                tor_addr_is_loopback(addr)))
     return ADDR_POLICY_REJECTED;
 





More information about the tor-commits mailing list