From: Ondřej Surý Date: Mon, 24 Jul 2023 14:10:47 +0000 (+0200) Subject: Fix TSAN data race accessing zone->parentcatz X-Git-Tag: v9.19.16~26^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e29f9e982ed89d9fc6fd440120eed88771e72905;p=thirdparty%2Fbind9.git Fix TSAN data race accessing zone->parentcatz The zone->parentcatz was accessed unlocked in dns_zone_get_parentcatz(), add a locking around it. --- diff --git a/lib/dns/include/dns/zone.h b/lib/dns/include/dns/zone.h index 933eec608d7..467dc4007a8 100644 --- a/lib/dns/include/dns/zone.h +++ b/lib/dns/include/dns/zone.h @@ -2469,7 +2469,7 @@ dns_zone_set_parentcatz(dns_zone_t *zone, dns_catz_zone_t *catz); */ dns_catz_zone_t * -dns_zone_get_parentcatz(const dns_zone_t *zone); +dns_zone_get_parentcatz(dns_zone_t *zone); /*%< * Get parent catalog zone for this zone * diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 5a52777e73d..8487d367d89 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -2016,9 +2016,16 @@ dns_zone_set_parentcatz(dns_zone_t *zone, dns_catz_zone_t *catz) { } dns_catz_zone_t * -dns_zone_get_parentcatz(const dns_zone_t *zone) { +dns_zone_get_parentcatz(dns_zone_t *zone) { REQUIRE(DNS_ZONE_VALID(zone)); - return (zone->parentcatz); + + dns_catz_zone_t *parentcatz = NULL; + + LOCK_ZONE(zone); + parentcatz = zone->parentcatz; + UNLOCK_ZONE(zone); + + return (parentcatz); } static bool