From 368dc659ea0f1c93faab66e1718d6a22c822d193 Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Fri, 19 Jun 2009 08:55:12 +0000 Subject: [PATCH] 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 --- doc/Changelog | 1 + iterator/iterator.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) 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,