From: Mark Andrews Date: Thu, 4 Sep 2014 03:57:50 +0000 (+1000) Subject: 3942. [bug] Wildcard responses from a optout range should be X-Git-Tag: v9.8.8rc2~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=83bf3f1dbd60aeea8c61b4f06e5eb278cf0ec19a;p=thirdparty%2Fbind9.git 3942. [bug] Wildcard responses from a optout range should be marked as insecure. [RT #37072] --- diff --git a/CHANGES b/CHANGES index 59580a463a1..aa8754ea82e 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +3942. [bug] Wildcard responses from a optout range should be + marked as insecure. [RT #37072] + 3941. [doc] Include the BIND version number in the ARM. [RT #37067] --- 9.8.8rc1 released --- diff --git a/bin/tests/system/dnssec/tests.sh b/bin/tests/system/dnssec/tests.sh index 326dd8968af..17594f11ed6 100644 --- a/bin/tests/system/dnssec/tests.sh +++ b/bin/tests/system/dnssec/tests.sh @@ -229,7 +229,7 @@ $DIG $DIGOPTS a.wild.optout.example. \ $DIG $DIGOPTS a.wild.optout.example. \ @10.53.0.4 a > dig.out.ns4.test$n || ret=1 $PERL ../digcomp.pl dig.out.ns3.test$n dig.out.ns4.test$n || ret=1 -grep "flags:.*ad.*QUERY" dig.out.ns4.test$n > /dev/null || ret=1 +grep "flags:.*ad.*QUERY" dig.out.ns4.test$n > /dev/null && ret=1 grep "status: NOERROR" dig.out.ns4.test$n > /dev/null || ret=1 n=`expr $n + 1` if [ $ret != 0 ]; then echo "I:failed"; fi diff --git a/lib/dns/nsec3.c b/lib/dns/nsec3.c index 934756d29df..8e161c0aa3e 100644 --- a/lib/dns/nsec3.c +++ b/lib/dns/nsec3.c @@ -2109,6 +2109,9 @@ dns_nsec3_noexistnodata(dns_rdatatype_t type, dns_name_t* name, if ((nsec3.flags & DNS_NSEC3FLAG_OPTOUT) != 0) (*logit)(arg, ISC_LOG_DEBUG(3), "NSEC3 indicates optout"); + else + (*logit)(arg, ISC_LOG_DEBUG(3), + "NSEC3 indicates secure range"); *optout = ISC_TF(nsec3.flags & DNS_NSEC3FLAG_OPTOUT); } diff --git a/lib/dns/validator.c b/lib/dns/validator.c index d40287ec1f3..dd1804945b2 100644 --- a/lib/dns/validator.c +++ b/lib/dns/validator.c @@ -2800,7 +2800,7 @@ nsecvalidate(dns_validator_t *val, isc_boolean_t resume) { if (!NEEDNODATA(val) && !NEEDNOWILDCARD(val) && NEEDNOQNAME(val)) { if (!FOUNDNOQNAME(val)) findnsec3proofs(val); - if (FOUNDNOQNAME(val) && FOUNDCLOSEST(val)) { + if (FOUNDNOQNAME(val) && FOUNDCLOSEST(val) && !FOUNDOPTOUT(val)) { validator_log(val, ISC_LOG_DEBUG(3), "marking as secure, noqname proof found"); marksecure(val->event);