mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 06:25:31 +00:00
Attach to the dns_dispatchmgr in the dns_view object
The dns_dispatchmgr object was only set in the dns_view object making it prone to use-after-free in the dns_xfrin unit when shutting down named. Remove dns_view_setdispatchmgr() and optionally pass the dispatchmgr directly to dns_view_create() when it is attached and not just assigned, so the dns_dispatchmgr doesn't cease to exist too early. The dns_view_getdnsdispatchmgr() is now protected by the RCU lock, the dispatchmgr reference is incremented, so the caller needs to detach from it, and the function can return NULL in case the dns_view has been already shut down.
This commit is contained in:
@@ -206,13 +206,12 @@ createview(isc_mem_t *mctx, dns_rdataclass_t rdclass, isc_loopmgr_t *loopmgr,
|
||||
isc_result_t result;
|
||||
dns_view_t *view = NULL;
|
||||
|
||||
result = dns_view_create(mctx, rdclass, DNS_CLIENTVIEW_NAME, &view);
|
||||
result = dns_view_create(mctx, dispatchmgr, rdclass,
|
||||
DNS_CLIENTVIEW_NAME, &view);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
return (result);
|
||||
}
|
||||
|
||||
dns_view_setdispatchmgr(view, dispatchmgr);
|
||||
|
||||
/* Initialize view security roots */
|
||||
dns_view_initsecroots(view);
|
||||
|
||||
|
Reference in New Issue
Block a user