mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-30 14:07:59 +00:00
Protect global init_count variable in rbtdb.c by making it atomic
This commit is contained in:
@@ -702,7 +702,7 @@ static char FILE_VERSION[32] = "\0";
|
|||||||
* that indicates that the database does not implement cyclic
|
* that indicates that the database does not implement cyclic
|
||||||
* processing.
|
* processing.
|
||||||
*/
|
*/
|
||||||
static unsigned int init_count;
|
static atomic_uint_fast32_t init_count;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Locking
|
* Locking
|
||||||
@@ -6486,7 +6486,7 @@ addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
|
|||||||
newheader->attributes |= RDATASET_ATTR_ZEROTTL;
|
newheader->attributes |= RDATASET_ATTR_ZEROTTL;
|
||||||
newheader->noqname = NULL;
|
newheader->noqname = NULL;
|
||||||
newheader->closest = NULL;
|
newheader->closest = NULL;
|
||||||
newheader->count = init_count++;
|
newheader->count = atomic_fetch_add(&init_count, 1);
|
||||||
newheader->trust = rdataset->trust;
|
newheader->trust = rdataset->trust;
|
||||||
newheader->last_used = now;
|
newheader->last_used = now;
|
||||||
newheader->node = rbtnode;
|
newheader->node = rbtnode;
|
||||||
@@ -6673,7 +6673,7 @@ subtractrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
|
|||||||
newheader->trust = 0;
|
newheader->trust = 0;
|
||||||
newheader->noqname = NULL;
|
newheader->noqname = NULL;
|
||||||
newheader->closest = NULL;
|
newheader->closest = NULL;
|
||||||
newheader->count = init_count++;
|
newheader->count = atomic_fetch_add(&init_count, 1);
|
||||||
newheader->last_used = 0;
|
newheader->last_used = 0;
|
||||||
newheader->node = rbtnode;
|
newheader->node = rbtnode;
|
||||||
if ((rdataset->attributes & DNS_RDATASETATTR_RESIGN) != 0) {
|
if ((rdataset->attributes & DNS_RDATASETATTR_RESIGN) != 0) {
|
||||||
@@ -7057,7 +7057,7 @@ loading_addrdataset(void *arg, const dns_name_t *name,
|
|||||||
newheader->serial = 1;
|
newheader->serial = 1;
|
||||||
newheader->noqname = NULL;
|
newheader->noqname = NULL;
|
||||||
newheader->closest = NULL;
|
newheader->closest = NULL;
|
||||||
newheader->count = init_count++;
|
newheader->count = atomic_fetch_add(&init_count, 1);
|
||||||
newheader->last_used = 0;
|
newheader->last_used = 0;
|
||||||
newheader->node = node;
|
newheader->node = node;
|
||||||
setownercase(newheader, name);
|
setownercase(newheader, name);
|
||||||
|
Reference in New Issue
Block a user