From: Mark Andrews Date: Tue, 21 Feb 2023 01:15:01 +0000 (+1100) Subject: Fix dns_kasp_attach / dns_kasp_detach usage X-Git-Tag: v9.19.11~14^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=59cd228216e82a357de0435ba63f17e4925d6f88;p=thirdparty%2Fbind9.git Fix dns_kasp_attach / dns_kasp_detach usage The kasp pointers in dns_zone_t should consistently be changed by dns_kasp_attach and dns_kasp_detach so the usage is balanced. --- diff --git a/bin/named/zoneconf.c b/bin/named/zoneconf.c index 5ba6183599c..85b687c0e47 100644 --- a/bin/named/zoneconf.c +++ b/bin/named/zoneconf.c @@ -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); diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 18b7d187d7f..271445e70c7 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -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); }