]> 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:50:26 +0000 (09:50 +0200)
(cherry picked from commit 5fc7e98d296f2c094b11cfed68becc60a73d1594)

lib/dns/rdatalist.c

index 51f3dbb148a5688e5b673b19995059840ac479a3..4f84683329c08097a073d54b4b783c8351288ef0 100644 (file)
@@ -240,14 +240,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);
@@ -331,14 +334,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);