mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-30 22:15:20 +00:00
fix: dev: Fix a data race in dns_zone_getxfrintime()
The dns_zone_getxfrintime() function fails to lock the zone before accessing its 'xfrintime' structure member, which can cause a data race between soa_query() and the statistics channel. Add the missing locking/unlocking pair, like it's done in numerous other similar functions. Closes #4976 Merge branch '4976-zone-xfrintime-data-race-fix' into 'main' See merge request isc-projects/bind9!9591
This commit is contained in:
@@ -1555,7 +1555,7 @@ dns_zone_getprimaryaddr(dns_zone_t *zone);
|
||||
*/
|
||||
|
||||
isc_time_t
|
||||
dns_zone_getxfrintime(const dns_zone_t *zone);
|
||||
dns_zone_getxfrintime(dns_zone_t *zone);
|
||||
/*%<
|
||||
* Get the start time of the zone's latest major step before an incoming zone
|
||||
* transfer is initiated. The time is set to the current time before the
|
||||
|
@@ -18169,10 +18169,16 @@ dns_zone_getprimaryaddr(dns_zone_t *zone) {
|
||||
}
|
||||
|
||||
isc_time_t
|
||||
dns_zone_getxfrintime(const dns_zone_t *zone) {
|
||||
dns_zone_getxfrintime(dns_zone_t *zone) {
|
||||
isc_time_t xfrintime;
|
||||
|
||||
REQUIRE(DNS_ZONE_VALID(zone));
|
||||
|
||||
return (zone->xfrintime);
|
||||
LOCK_ZONE(zone);
|
||||
xfrintime = zone->xfrintime;
|
||||
UNLOCK_ZONE(zone);
|
||||
|
||||
return (xfrintime);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Reference in New Issue
Block a user