diff --git a/changes/bug22244 b/changes/bug22244 new file mode 100644 index 0000000000..ed5d36b1dd --- /dev/null +++ b/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. + diff --git a/src/or/dns.c b/src/or/dns.c index cd84a64758..024a21abfe 100644 --- a/src/or/dns.c +++ b/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. */