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.
This commit is contained in:
Nick Mathewson 2017-05-15 11:25:52 -04:00
parent 1ec45bb546
commit 0e348720fc
2 changed files with 9 additions and 2 deletions

6
changes/bug22244 Normal file
View File

@ -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.

View File

@ -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. */