]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fix assertion in addressmap_clear_excluded_trackexithosts
authorNick Mathewson <nickm@torproject.org>
Wed, 7 Sep 2011 00:26:20 +0000 (20:26 -0400)
committerNick Mathewson <nickm@torproject.org>
Wed, 7 Sep 2011 00:26:20 +0000 (20:26 -0400)
Fixes bug 3923; bugfix on 0.2.2.25-alpha; bugfix from 'laruldan' on trac.

changes/bug3923 [new file with mode: 0644]
src/or/connection_edge.c

diff --git a/changes/bug3923 b/changes/bug3923
new file mode 100644 (file)
index 0000000..9c0e138
--- /dev/null
@@ -0,0 +1,5 @@
+  o Major bugfies:
+    - Avoid an assertion failure when reloading a configuration with
+      TrackExitHosts changes.  Found and fixed by 'laruldan'. Fixes
+      bug 3923; bugfix on 0.2.2.25-alpha.
+
index d4d7e1c73ce70ce0e884509b6c74e615fc8d98f9..8609b023d5726e3aa95fc018d5e4f640dd059e3f 100644 (file)
@@ -842,12 +842,10 @@ addressmap_clear_excluded_trackexithosts(or_options_t *options)
     if (len < 6)
       continue; /* malformed. */
     dot = target + len - 6; /* dot now points to just before .exit */
-    dot = strrchr(dot, '.'); /* dot now points to the . before .exit or NULL */
-    if (!dot) {
-      nodename = tor_strndup(target, len-5);
-    } else {
-      nodename = tor_strndup(dot+1, strlen(dot+1)-5);
-    }
+    while(dot > target && *dot != '.')
+       dot--;
+    if (*dot == '.') dot++;
+    nodename = tor_strndup(dot, len-5-(dot-target));;
     ri = router_get_by_nickname(nodename, 0);
     tor_free(nodename);
     if (!ri ||