From: Mark Andrews Date: Thu, 24 Sep 2015 23:18:43 +0000 (+1000) Subject: 4221. [bug] Resource leak on DNS_R_NXDOMAIN in fctx_create. X-Git-Tag: v9.11.0a1~436 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=8d80b4939dd27dc3136ab152706160c613baa93a;p=thirdparty%2Fbind9.git 4221. [bug] Resource leak on DNS_R_NXDOMAIN in fctx_create. [RT #40583] --- diff --git a/CHANGES b/CHANGES index 9b3729c38c5..320d4c8ede9 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +4221. [bug] Resource leak on DNS_R_NXDOMAIN in fctx_create. + [RT #40583] + 4220. [doc] Improve documentation for zone-statistics. [RT #36955] diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index d987316325d..78310f4cc48 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -4275,13 +4275,12 @@ fctx_create(dns_resolver_t *res, dns_name_t *name, dns_rdatatype_t type, &fctx->nameservers, NULL); if (result != ISC_R_SUCCESS) - goto cleanup_name; + goto cleanup_nameservers; result = dns_name_dup(domain, mctx, &fctx->domain); - if (result != ISC_R_SUCCESS) { - dns_rdataset_disassociate(&fctx->nameservers); - goto cleanup_name; - } + if (result != ISC_R_SUCCESS) + goto cleanup_nameservers; + fctx->ns_ttl = fctx->nameservers.ttl; fctx->ns_ttl_ok = ISC_TRUE; } else { @@ -4403,6 +4402,8 @@ fctx_create(dns_resolver_t *res, dns_name_t *name, dns_rdatatype_t type, cleanup_domain: if (dns_name_countlabels(&fctx->domain) > 0) dns_name_free(&fctx->domain, mctx); + + cleanup_nameservers: if (dns_rdataset_isassociated(&fctx->nameservers)) dns_rdataset_disassociate(&fctx->nameservers);