From: Mark Andrews Date: Mon, 15 Jan 2024 02:39:44 +0000 (+1100) Subject: Dissassociate rdatasets returned from dns_ncache_current X-Git-Tag: v9.19.22~42^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=dc94f422095d55727248d2137a3681e1015adde4;p=thirdparty%2Fbind9.git Dissassociate rdatasets returned from dns_ncache_current lib/dns/validator.c:findnsec3proofs failed to disassociate the temporary rdataset returned by dns_ncache_current on all paths. --- diff --git a/lib/dns/validator.c b/lib/dns/validator.c index b679392c49e..c6978127554 100644 --- a/lib/dns/validator.c +++ b/lib/dns/validator.c @@ -2116,6 +2116,9 @@ findnsec3proofs(dns_validator_t *val) { POST(result); if (dns_name_countlabels(zonename) == 0) { + if (dns_rdataset_isassociated(&trdataset)) { + dns_rdataset_disassociate(&trdataset); + } return (ISC_R_SUCCESS); } @@ -2184,6 +2187,9 @@ findnsec3proofs(dns_validator_t *val) { { proofs[DNS_VALIDATOR_NOWILDCARDPROOF] = name; } + if (dns_rdataset_isassociated(&trdataset)) { + dns_rdataset_disassociate(&trdataset); + } return (result); } if (result != ISC_R_SUCCESS) { @@ -2237,9 +2243,15 @@ findnsec3proofs(dns_validator_t *val) { { result = checkwildcard(val, dns_rdatatype_nsec3, zonename); if (result != ISC_R_SUCCESS) { + if (dns_rdataset_isassociated(&trdataset)) { + dns_rdataset_disassociate(&trdataset); + } return (result); } } + if (dns_rdataset_isassociated(&trdataset)) { + dns_rdataset_disassociate(&trdataset); + } return (result); }