From 59cd228216e82a357de0435ba63f17e4925d6f88 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Tue, 21 Feb 2023 12:15:01 +1100 Subject: [PATCH] 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. --- bin/named/zoneconf.c | 2 +- lib/dns/zone.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bin/named/zoneconf.c b/bin/named/zoneconf.c index 5ba6183599..85b687c0e4 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 18b7d187d7..271445e70c 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); }