The kasp pointers in dns_zone_t should consistently be changed by
dns_kasp_attach and dns_kasp_detach so the usage is balanced.
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);
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);
}