diff options
author | Nick Mathewson <nickm@torproject.org> | 2007-05-29 19:54:51 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2007-05-29 19:54:51 +0000 |
commit | 1359871c1459a1de5a5e3bc55e752064b8ec4716 (patch) | |
tree | 6569ae98ab8d7dca447cfefaf8707e4d912bca36 /src/or/eventdns.c | |
parent | 3f9afa06250febe954c8bcebbea3a21c398e89a1 (diff) | |
download | tor-1359871c1459a1de5a5e3bc55e752064b8ec4716.tar tor-1359871c1459a1de5a5e3bc55e752064b8ec4716.tar.gz |
r13070@catbus: nickm | 2007-05-29 15:53:21 -0400
Fix handling of resolves with very long or otherwise malformed addresses, and comment dns_resolve better, and stop making what should be a BUG warning into an assert(0). This fixes bug 427, which was introduced around 9900/9931/9932. Not a backport candidate: 0.1.2.x never had this bug.
svn:r10399
Diffstat (limited to 'src/or/eventdns.c')
-rw-r--r-- | src/or/eventdns.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/or/eventdns.c b/src/or/eventdns.c index a3bb3bf24..a53642521 100644 --- a/src/or/eventdns.c +++ b/src/or/eventdns.c @@ -2658,14 +2658,23 @@ resolv_conf_parse_line(char *const start, int flags) { #define NEXT_TOKEN strtok_r(NULL, delims, &strtok_state) char *const first_token = strtok_r(start, delims, &strtok_state); - if (!first_token) return; + if (!first_token) { + log(EVDNS_LOG_WARN,"No token."); + return; + } + + + log(EVDNS_LOG_WARN,"Token is %s; flags is %d", first_token, flags); if (!strcmp(first_token, "nameserver") && (flags & DNS_OPTION_NAMESERVERS)) { const char *const nameserver = NEXT_TOKEN; struct in_addr ina; + log(EVDNS_LOG_WARN,"Parsed nameserver %s", nameserver); + if (inet_aton(nameserver, &ina)) { // address is valid + log(EVDNS_LOG_WARN,"Liked it."); evdns_nameserver_add(ina.s_addr); } } else if (!strcmp(first_token, "domain") && (flags & DNS_OPTION_SEARCH)) { |