From: Wouter Wijngaards Date: Thu, 25 Oct 2018 07:45:00 +0000 (+0000) Subject: - Fix #4191: NXDOMAIN vs SERVFAIL during dns64 PTR query. X-Git-Tag: release-1.8.2rc1~45 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=20f0e8ad550e808af6d980c0b25e324f48c616a0;p=thirdparty%2Funbound.git - Fix #4191: NXDOMAIN vs SERVFAIL during dns64 PTR query. git-svn-id: file:///svn/unbound/trunk@4947 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/dns64/dns64.c b/dns64/dns64.c index eadfabb08..51e7437e6 100644 --- a/dns64/dns64.c +++ b/dns64/dns64.c @@ -867,9 +867,10 @@ dns64_adjust_ptr(struct module_qstate* qstate, struct module_qstate* super) * initial query's domain name. */ answer = reply_find_answer_rrset(&qstate->qinfo, super->return_msg->rep); - log_assert(answer); - answer->rk.dname = super->qinfo.qname; - answer->rk.dname_len = super->qinfo.qname_len; + if(answer) { + answer->rk.dname = super->qinfo.qname; + answer->rk.dname_len = super->qinfo.qname_len; + } } /** @@ -895,17 +896,16 @@ dns64_inform_super(struct module_qstate* qstate, int id, */ super->minfo[id] = (void*)DNS64_SUBQUERY_FINISHED; + /* Use return code from A query in response to client. */ + if (super->return_rcode != LDNS_RCODE_NOERROR) + super->return_rcode = qstate->return_rcode; + /* If there is no successful answer, we're done. */ if (qstate->return_rcode != LDNS_RCODE_NOERROR || !qstate->return_msg - || !qstate->return_msg->rep - || !reply_find_answer_rrset(&qstate->qinfo, - qstate->return_msg->rep)) + || !qstate->return_msg->rep) { return; - - /* Use return code from A query in response to client. */ - if (super->return_rcode != LDNS_RCODE_NOERROR) - super->return_rcode = qstate->return_rcode; + } /* Generate a response suitable for the original query. */ if (qstate->qinfo.qtype == LDNS_RR_TYPE_A) { diff --git a/doc/Changelog b/doc/Changelog index 51070c414..376108232 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +25 October 2018: Wouter + - Fix #4191: NXDOMAIN vs SERVFAIL during dns64 PTR query. + 24 October 2018: Ralph - Add markdel function to ECS slabhash. - Limit ECS scope returned to client to the scope used for caching.