[tor-commits] [tor/maint-0.2.5] Fix dnsserv.c assertion when no supported questions are requested.

nickm at torproject.org nickm at torproject.org
Tue Feb 7 15:40:16 UTC 2017


commit 0ca3f495c6fad074606ab75942b64738ed61926a
Author: Scott Dial <scott at scottdial.com>
Date:   Wed May 4 14:45:09 2016 -0400

    Fix dnsserv.c assertion when no supported questions are requested.
    
    The problem is that "q" is always set on the first iteration even
    if the question is not a supported question. This set of "q" is
    not necessary, and will be handled after exiting the loop if there
    if a supported q->type was found.
    
        [Changes file by nickm]
    
    lease enter the commit message for your changes. Lines starting
---
 changes/bug18710 | 6 ++++++
 src/or/dnsserv.c | 4 +---
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/changes/bug18710 b/changes/bug18710
new file mode 100644
index 0000000..2693955
--- /dev/null
+++ b/changes/bug18710
@@ -0,0 +1,6 @@
+  o Major bugfixes (DNS proxy):
+    - Stop a crash that could occur when a client running with DNSPort
+      received a query with multiple address types, where the first
+      address type was not supported. Found and fixed by Scott Dial.
+      Fixes bug 18710; bugfix on 0.2.5.4-alpha.
+
diff --git a/src/or/dnsserv.c b/src/or/dnsserv.c
index ecd45be..9b0368d 100644
--- a/src/or/dnsserv.c
+++ b/src/or/dnsserv.c
@@ -87,8 +87,6 @@ evdns_server_callback(struct evdns_server_request *req, void *data_)
   for (i = 0; i < req->nquestions; ++i) {
     if (req->questions[i]->dns_question_class != EVDNS_CLASS_INET)
       continue;
-    if (! q)
-      q = req->questions[i];
     switch (req->questions[i]->type) {
       case EVDNS_TYPE_A:
       case EVDNS_TYPE_AAAA:
@@ -96,7 +94,7 @@ evdns_server_callback(struct evdns_server_request *req, void *data_)
         /* We always pick the first one of these questions, if there is
            one. */
         if (! supported_q)
-          supported_q = q;
+          supported_q = req->questions[i];
         break;
       default:
         break;





More information about the tor-commits mailing list