]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
lib/dns/rdatalist.c: Fix dereference before DbC check
authorOndřej Surý <ondrej@sury.org>
Fri, 27 Sep 2019 09:37:27 +0000 (11:37 +0200)
committerOndřej Surý <ondrej@sury.org>
Thu, 3 Oct 2019 07:04:26 +0000 (09:04 +0200)
lib/dns/rdatalist.c

index 09b840e46b9bec2938c873c4d60fb9a30cb3f663..ade3274576db144918af0d26c3d777eeaeaecdd3 100644 (file)
@@ -238,14 +238,17 @@ isc_result_t
 isc__rdatalist_getnoqname(dns_rdataset_t *rdataset, dns_name_t *name,
                          dns_rdataset_t *neg, dns_rdataset_t *negsig)
 {
-       dns_rdataclass_t rdclass = rdataset->rdclass;
+       dns_rdataclass_t rdclass;
        dns_rdataset_t *tneg = NULL;
        dns_rdataset_t *tnegsig = NULL;
-       const dns_name_t *noqname = rdataset->private6;
+       const dns_name_t *noqname;
 
        REQUIRE(rdataset != NULL);
        REQUIRE((rdataset->attributes & DNS_RDATASETATTR_NOQNAME) != 0);
 
+       rdclass = rdataset->rdclass;
+       noqname = rdataset->private6;
+
        (void)dns_name_dynamic(noqname);        /* Sanity Check. */
 
        for (rdataset = ISC_LIST_HEAD(noqname->list);
@@ -329,14 +332,17 @@ isc_result_t
 isc__rdatalist_getclosest(dns_rdataset_t *rdataset, dns_name_t *name,
                          dns_rdataset_t *neg, dns_rdataset_t *negsig)
 {
-       dns_rdataclass_t rdclass = rdataset->rdclass;
+       dns_rdataclass_t rdclass;
        dns_rdataset_t *tneg = NULL;
        dns_rdataset_t *tnegsig = NULL;
-       const dns_name_t *closest = rdataset->private7;
+       const dns_name_t *closest;
 
        REQUIRE(rdataset != NULL);
        REQUIRE((rdataset->attributes & DNS_RDATASETATTR_CLOSEST) != 0);
 
+       rdclass = rdataset->rdclass;
+       closest = rdataset->private7;
+
        (void)dns_name_dynamic(closest);        /* Sanity Check. */
 
        for (rdataset = ISC_LIST_HEAD(closest->list);