From: Brian Wellington Date: Tue, 5 Feb 2002 01:15:21 +0000 (+0000) Subject: The code for parsing non-answer messages could get confused if it saw a SIG NS X-Git-Tag: v9.0.1^2~8564 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ecb55f9962f881ee8db2c24b90ef85906d9a3394;p=thirdparty%2Fbind9.git The code for parsing non-answer messages could get confused if it saw a SIG NS before an NS. --- diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index a873853ef6b..8132ed73df2 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: resolver.c,v 1.235 2002/01/17 00:16:25 marka Exp $ */ +/* $Id: resolver.c,v 1.236 2002/02/05 01:15:21 bwelling Exp $ */ #include @@ -3544,15 +3544,19 @@ noanswer_response(fetchctx_t *fctx, dns_name_t *oqname, * * Only one set of NS RRs is allowed. */ - if (ns_name != NULL && name != ns_name) - return (DNS_R_FORMERR); - ns_name = name; + if (rdataset->type == + dns_rdatatype_ns) { + if (ns_name != NULL && + name != ns_name) + return (DNS_R_FORMERR); + ns_name = name; + ns_rdataset = rdataset; + } name->attributes |= DNS_NAMEATTR_CACHE; rdataset->attributes |= DNS_RDATASETATTR_CACHE; rdataset->trust = dns_trust_glue; - ns_rdataset = rdataset; } else if (type == dns_rdatatype_soa || type == dns_rdatatype_nxt) { /*