]> 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 18:57:16 +0000 (18:57 +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 30722db30702d5f8809b28efe03fcad9246dd33b..2a69d088c6daa2dd663c7bdb0ed24cf5b4100fe1 100644 (file)
@@ -2579,6 +2579,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))
@@ -2587,6 +2588,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);
 }