]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Avoid assertion failure on unexepcted address family in DNS reply.
authorNick Mathewson <nickm@torproject.org>
Fri, 26 Jul 2013 13:33:46 +0000 (15:33 +0200)
committerNick Mathewson <nickm@torproject.org>
Fri, 26 Jul 2013 13:33:46 +0000 (15:33 +0200)
Fixes bug 9337; bugfix on 0.2.4.7-alpha.

changes/bug9337 [new file with mode: 0644]
src/or/dns.c

diff --git a/changes/bug9337 b/changes/bug9337
new file mode 100644 (file)
index 0000000..ce99bc8
--- /dev/null
@@ -0,0 +1,4 @@
+  o Major bugfixes (DNS):
+    - Avoid an assertion failure when processing DNS replies without the
+      answer types we expected. Fixes bug 9337; bugfix on 0.2.4.7-alpha.
+
index edcf92e5b3267f3e88e70e2321ad877c19218bc5..f2b7eecc3f892b4367cc3f31c42be97b82f4ebfc 100644 (file)
@@ -437,8 +437,8 @@ cached_resolve_add_answer(cached_resolve_t *resolve,
     if (resolve->res_status_ipv4 != RES_STATUS_INFLIGHT)
       return;
 
-    if (dns_result == DNS_ERR_NONE && answer_addr) {
-      tor_assert(tor_addr_family(answer_addr) == AF_INET);
+    if (dns_result == DNS_ERR_NONE && answer_addr &&
+        tor_addr_family(answer_addr) == AF_INET) {
       resolve->result_ipv4.addr_ipv4 = tor_addr_to_ipv4h(answer_addr);
       resolve->res_status_ipv4 = RES_STATUS_DONE_OK;
     } else {
@@ -450,8 +450,8 @@ cached_resolve_add_answer(cached_resolve_t *resolve,
     if (resolve->res_status_ipv6 != RES_STATUS_INFLIGHT)
       return;
 
-    if (dns_result == DNS_ERR_NONE && answer_addr) {
-      tor_assert(tor_addr_family(answer_addr) == AF_INET6);
+    if (dns_result == DNS_ERR_NONE && answer_addr &&
+        tor_addr_family(answer_addr) == AF_INET6) {
       memcpy(&resolve->result_ipv6.addr_ipv6,
              tor_addr_to_in6(answer_addr),
              sizeof(struct in6_addr));