]> 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 19:36:26 +0000 (19:36 +0000)
There can be an update running in another thread, so use a lock,
like it's done in dns_catz_postreconfig().

(cherry picked from commit 3973724d67651d3a3d90c6a4d32add040ba2b707)

lib/dns/catz.c

index 6c08afbf0f16e3c3ad6a6377baa2fdbb65ba212b..4bc96601661b57e78bc39dd0e4c63e1d2c532fca 100644 (file)
@@ -2030,6 +2030,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))
@@ -2038,6 +2039,7 @@ dns_catz_prereconfig(dns_catz_zones_t *catzs) {
                isc_ht_iter_current(iter, (void **)&zone);
                zone->active = false;
        }
+       UNLOCK(&catzs->lock);
        INSIST(result == ISC_R_NOMORE);
        isc_ht_iter_destroy(&iter);
 }