Browse Source

Fix assertion to actually have a chance of failing

This assertion can only fail if we mess up some of our other code,
but let's try to get it right.

Closes 22244.
Nick Mathewson 7 years ago
parent
commit
0e348720fc
2 changed files with 9 additions and 2 deletions
  1. 6 0
      changes/bug22244
  2. 3 2
      src/or/dns.c

+ 6 - 0
changes/bug22244

@@ -0,0 +1,6 @@
+  o Minor bugfixes (exit-side DNS):
+    - Fix an untriggerable assertion that checked the output of a
+      libevent DNS error, so that the assertion actually behaves as
+      expected.  Fixes bug 22244; bugfix on 0.2.0.20-rc. Found by Andrey
+      Karpov using PVS-Studio.
+

+ 3 - 2
src/or/dns.c

@@ -160,8 +160,9 @@ evdns_log_cb(int warn, const char *msg)
   }
   if (!strcmpstart(msg, "Nameserver ") && (cp=strstr(msg, " has failed: "))) {
     char *ns = tor_strndup(msg+11, cp-(msg+11));
-    const char *err = strchr(cp, ':')+2;
-    tor_assert(err);
+    const char *colon = strchr(cp, ':');
+    tor_assert(colon);
+    const char *err = colon+2;
     /* Don't warn about a single failed nameserver; we'll warn with 'all
      * nameservers have failed' if we're completely out of nameservers;
      * otherwise, the situation is tolerable. */