]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Fix dns_kasp_attach / dns_kasp_detach usage
authorMark Andrews <marka@isc.org>
Tue, 21 Feb 2023 01:15:01 +0000 (12:15 +1100)
committerMatthijs Mekking <matthijs@isc.org>
Tue, 28 Feb 2023 08:38:17 +0000 (09:38 +0100)
The kasp pointers in dns_zone_t should consistently be changed by
dns_kasp_attach and dns_kasp_detach so the usage is balanced.

bin/named/zoneconf.c
lib/dns/zone.c

index 5ba6183599c14da4361551a4adde31f25c10aa17..85b687c0e47600f07ed2950d5c00092552ff560b 100644 (file)
@@ -1202,9 +1202,9 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
                result = dns_kasplist_find(kasplist, "default", &kasp);
                INSIST(result == ISC_R_SUCCESS && kasp != NULL);
                dns_zone_setdefaultkasp(zone, kasp);
+               dns_kasp_detach(&kasp);
 
                obj = NULL;
-               kasp = NULL;
                result = named_config_get(maps, "dnssec-policy", &obj);
                if (result == ISC_R_SUCCESS) {
                        kaspname = cfg_obj_asstring(obj);
index 18b7d187d7f73ce106c871bc15b94b83cf6b5075..271445e70c78bedbe5118b795cca3b6597d96300 100644 (file)
@@ -5725,11 +5725,11 @@ dns_zone_setdefaultkasp(dns_zone_t *zone, dns_kasp_t *kasp) {
 
        LOCK_ZONE(zone);
        if (zone->defaultkasp != NULL) {
-               dns_kasp_t *oldkasp = zone->defaultkasp;
-               zone->defaultkasp = NULL;
-               dns_kasp_detach(&oldkasp);
+               dns_kasp_detach(&zone->defaultkasp);
+       }
+       if (kasp != NULL) {
+               dns_kasp_attach(kasp, &zone->defaultkasp);
        }
-       zone->defaultkasp = kasp;
        UNLOCK_ZONE(zone);
 }