Commit 915d9464 authored by Mark Andrews's avatar Mark Andrews Committed by Ondřej Surý
Browse files

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.

(cherry picked from commit 67c8f732)
parent 7dd9f979
Pipeline #44913 failed with stages
in 64 minutes and 7 seconds
......@@ -10133,7 +10133,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;
......@@ -10156,8 +10156,12 @@ 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;
}
TIME_NOW(&now);
......
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