[tor-commits] [tor/master] Avoid reordering IPv6 interface addresses

nickm at torproject.org nickm at torproject.org
Mon Oct 3 17:51:13 UTC 2016


commit 3b2f012e28f73267a894c5e3b468c65d8e093b15
Author: cypherpunks <cypherpunks at localhost>
Date:   Fri Sep 30 21:49:09 2016 +0000

    Avoid reordering IPv6 interface addresses
    
    When deleting unsuitable addresses in get_interface_address6_list(), to
    avoid reordering IPv6 interface addresses and keep the order returned by
    the OS, use SMARTLIST_DEL_CURRENT_KEEPORDER() instead of
    SMARTLIST_DEL_CURRENT().
    
    This issue was reported by René Mayrhofer.
    
    [Closes ticket 20163; changes file written by teor. This paragraph
    added by nickm]
---
 changes/20163        | 6 ++++++
 src/common/address.c | 4 ++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/changes/20163 b/changes/20163
new file mode 100644
index 0000000..04074de
--- /dev/null
+++ b/changes/20163
@@ -0,0 +1,6 @@
+  o Minor bugfixes (address discovery):
+    - Stop reordering IP addresses returned by the OS.
+This makes is more likely that Tor will guess the same relay IP address every time.
+Fixes issue 20163; bugfix on 0.2.7.1-alpha, ticket 17027.
+Reported by René Mayrhofer, patch by "cypherpunks".
+
diff --git a/src/common/address.c b/src/common/address.c
index 6799dd6..15ee3db 100644
--- a/src/common/address.c
+++ b/src/common/address.c
@@ -1770,13 +1770,13 @@ MOCK_IMPL(smartlist_t *,get_interface_address6_list,(int severity,
     {
       if (tor_addr_is_loopback(a) ||
           tor_addr_is_multicast(a)) {
-        SMARTLIST_DEL_CURRENT(addrs, a);
+        SMARTLIST_DEL_CURRENT_KEEPORDER(addrs, a);
         tor_free(a);
         continue;
       }
 
       if (!include_internal && tor_addr_is_internal(a, 0)) {
-        SMARTLIST_DEL_CURRENT(addrs, a);
+        SMARTLIST_DEL_CURRENT_KEEPORDER(addrs, a);
         tor_free(a);
         continue;
       }



More information about the tor-commits mailing list