- Fix that after shared memory cannot be created, from
`shm-enable`, the server does not crash. Thanks to Qifan
Zhang, Palo Alto Networks, for the report.
+ - Fix incorrect cleanup after an allocation failure for
+ a delegation point in a region. Thanks to Qifan Zhang,
+ Palo Alto Networks, for the report.
15 June 2026: Wouter
- Fix to add `max-transfer-size` and `max-transfer-time` that
sizeof(struct delegpt_ns));
if(!ns)
return 0;
- ns->next = dp->nslist;
ns->namelen = len;
- dp->nslist = ns;
ns->name = regional_alloc_init(region, name, ns->namelen);
+ if(!ns->name)
+ return 0;
ns->cache_lookup_count = 0;
ns->resolved = 0;
ns->got4 = 0;
} else {
ns->tls_auth_name = NULL;
}
- return ns->name != 0;
+ ns->next = dp->nslist;
+ dp->nslist = ns;
+ return 1;
}
struct delegpt_ns*
sizeof(struct delegpt_addr));
if(!a)
return 0;
- a->next_target = dp->target_list;
- dp->target_list = a;
a->next_result = 0;
- a->next_usable = dp->usable_list;
- dp->usable_list = a;
memcpy(&a->addr, addr, addrlen);
a->addrlen = addrlen;
a->attempts = 0;
} else {
a->tls_auth_name = NULL;
}
+ a->next_target = dp->target_list;
+ dp->target_list = a;
+ a->next_usable = dp->usable_list;
+ dp->usable_list = a;
return 1;
}
return NULL;
}
}
- if(!delegpt_rrset_add_ns(dp, region, nskey, 0))
+ if(!delegpt_rrset_add_ns(dp, region, nskey, 0)) {
+ lock_rw_unlock(&nskey->entry.lock);
log_err("find_delegation: addns out of memory");
+ return NULL;
+ }
lock_rw_unlock(&nskey->entry.lock); /* first unlock before next lookup*/
/* find and add DS/NSEC (if any) */
if(msg)