From: Wouter Wijngaards Date: Fri, 19 Jun 2009 08:55:12 +0000 (+0000) Subject: Handle referral path check cases where NS is in the answer section. X-Git-Tag: release-1.3.1~29 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=368dc659ea0f1c93faab66e1718d6a22c822d193;p=thirdparty%2Funbound.git Handle referral path check cases where NS is in the answer section. git-svn-id: file:///svn/unbound/trunk@1678 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/doc/Changelog b/doc/Changelog index 6fdcd1c3c..6b5cfae30 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Fixup strict aliasing warning in iter priv code. and config_file code. - iana portlist updated. + - harden-referral-path: handle cases where NS is in answer section. 18 June 2009: Wouter - Fix of message parse bug where (specifically) an NSEC and RRSIG diff --git a/iterator/iterator.c b/iterator/iterator.c index 4ed06d779..9095a8841 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -1513,9 +1513,14 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, /* we know that all other NS rrsets are scrubbed * away, thus on referral only one is left. * see if that equals the query name... */ - && reply_find_rrset_section_ns(iq->response->rep, + && ( /* auth section, but sometimes in answer section*/ + reply_find_rrset_section_ns(iq->response->rep, qstate->qinfo.qname, qstate->qinfo.qname_len, LDNS_RR_TYPE_NS, qstate->qinfo.qclass) + || reply_find_rrset_section_an(iq->response->rep, + qstate->qinfo.qname, qstate->qinfo.qname_len, + LDNS_RR_TYPE_NS, qstate->qinfo.qclass) + ) )) { /* Store the referral under the current query */ if(!iter_dns_store(qstate->env, &iq->response->qinfo,