Commit 67c8f732 authored by Mark Andrews's avatar Mark Andrews Committed by Ondřej Surý

Address race between zone_maintenance and dns_zone_setview_helper

There was a possible NULL dereference due to data race between accessing
zone->view and zone->view->adb.
parent 5238433f
......@@ -10857,7 +10857,7 @@ zone_maintenance(dns_zone_t *zone) {
const char me[] = "zone_maintenance";
isc_time_t now;
isc_result_t result;
bool dumping, load_pending;
bool dumping, load_pending, viewok;
REQUIRE(DNS_ZONE_VALID(zone));
ENTER;
......@@ -10880,7 +10880,10 @@ zone_maintenance(dns_zone_t *zone) {
* adb or resolver will be NULL, and we had better not try
* to do further maintenance on it.
*/
if (zone->view == NULL || zone->view->adb == NULL) {
LOCK_ZONE(zone);
viewok = (zone->view != NULL && zone->view->adb != NULL);
UNLOCK_ZONE(zone);
if (!viewok) {
return;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment