]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4221. [bug] Resource leak on DNS_R_NXDOMAIN in fctx_create.
authorMark Andrews <marka@isc.org>
Thu, 24 Sep 2015 23:18:43 +0000 (09:18 +1000)
committerMark Andrews <marka@isc.org>
Thu, 24 Sep 2015 23:18:43 +0000 (09:18 +1000)
                        [RT #40583]

CHANGES
lib/dns/resolver.c

diff --git a/CHANGES b/CHANGES
index 9b3729c38c533f32045f58ddab10d7ab77929d70..320d4c8ede95c6496b0fe6ae0a0bdfa5dda0ee93 100644 (file)
--- 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]
 
index d987316325d6fb0dff578120deef060e14e4aa92..78310f4cc4834f6e3ffb2a18c2de32c3d0880512 100644 (file)
@@ -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);