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
--- /dev/null
+ 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.
+
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:
/* 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;