]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Use catzs->lock in dns_catz_prereconfig()
authorAram Sargsyan <aram@isc.org>
Thu, 2 Mar 2023 13:19:09 +0000 (13:19 +0000)
committerAram Sargsyan <aram@isc.org>
Thu, 2 Mar 2023 17:40:10 +0000 (17:40 +0000)
There can be an update running in another thread, so use a lock,
like it's done in dns_catz_postreconfig().

lib/dns/catz.c

index f0f3d0477170e9bfb0dd73a179a7e8f132b6fd10..f02784c659f165ae6e58be578b4c39ffd1ebadf5 100644 (file)
@@ -2530,6 +2530,7 @@ dns_catz_prereconfig(dns_catz_zones_t *catzs) {
 
        REQUIRE(DNS_CATZ_ZONES_VALID(catzs));
 
+       LOCK(&catzs->lock);
        isc_ht_iter_create(catzs->zones, &iter);
        for (result = isc_ht_iter_first(iter); result == ISC_R_SUCCESS;
             result = isc_ht_iter_next(iter))
@@ -2538,6 +2539,7 @@ dns_catz_prereconfig(dns_catz_zones_t *catzs) {
                isc_ht_iter_current(iter, (void **)&catz);
                catz->active = false;
        }
+       UNLOCK(&catzs->lock);
        INSIST(result == ISC_R_NOMORE);
        isc_ht_iter_destroy(&iter);
 }