mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-30 22:15:20 +00:00
Check whether zone->db is a valid pointer before attaching
The zone_resigninc() function does not check the validity of 'zone->db', which can crash named if the zone was unloaded earlier, for example with "rndc delete". Check that 'zone->db' is not 'NULL' before attaching to it, like it is done in zone_sign() and zone_nsec3chain() functions, which can similarly be called by zone maintenance.
This commit is contained in:
committed by
Arаm Sаrgsyаn
parent
dee7b46a8d
commit
fae0930eb8
@@ -6825,8 +6825,14 @@ zone_resigninc(dns_zone_t *zone) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ZONEDB_LOCK(&zone->dblock, isc_rwlocktype_read);
|
ZONEDB_LOCK(&zone->dblock, isc_rwlocktype_read);
|
||||||
|
if (zone->db != NULL) {
|
||||||
dns_db_attach(zone->db, &db);
|
dns_db_attach(zone->db, &db);
|
||||||
|
}
|
||||||
ZONEDB_UNLOCK(&zone->dblock, isc_rwlocktype_read);
|
ZONEDB_UNLOCK(&zone->dblock, isc_rwlocktype_read);
|
||||||
|
if (db == NULL) {
|
||||||
|
result = ISC_R_FAILURE;
|
||||||
|
goto failure;
|
||||||
|
}
|
||||||
|
|
||||||
result = dns_db_newversion(db, &version);
|
result = dns_db_newversion(db, &version);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
|
Reference in New Issue
Block a user