mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-09 09:42:06 -04:00
Use a read lock when iterating over a hashmap
The 'dns_tsigkeyring_t' structure has a read/write lock to protect its 'keys' member, which is a 'isc_hashmap_t' pointer and needs to be protected. The dns_tsigkeyring_dump() function, however, doesn't use the lock, which can introduce a race with another thread, if the other thread tries to modify the hashmap. Add a read lock around the code, which iterates over the hashmap.
This commit is contained in:
parent
4c9d948365
commit
6687de854f
1 changed files with 2 additions and 0 deletions
|
|
@ -469,6 +469,7 @@ dns_tsigkeyring_dump(dns_tsigkeyring_t *ring, FILE *fp) {
|
|||
|
||||
REQUIRE(VALID_TSIGKEYRING(ring));
|
||||
|
||||
RWLOCK(&ring->lock, isc_rwlocktype_read);
|
||||
isc_hashmap_iter_create(ring->keys, &it);
|
||||
for (result = isc_hashmap_iter_first(it); result == ISC_R_SUCCESS;
|
||||
result = isc_hashmap_iter_next(it))
|
||||
|
|
@ -482,6 +483,7 @@ dns_tsigkeyring_dump(dns_tsigkeyring_t *ring, FILE *fp) {
|
|||
}
|
||||
}
|
||||
isc_hashmap_iter_destroy(&it);
|
||||
RWUNLOCK(&ring->lock, isc_rwlocktype_read);
|
||||
|
||||
return (found ? ISC_R_SUCCESS : ISC_R_NOTFOUND);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue