2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 14:07:59 +00:00

3687. [bug] Address null pointer dereference in zone_xfrdone.

[RT #35042]
This commit is contained in:
Mark Andrews
2013-12-12 10:38:35 +11:00
parent e80c7005e3
commit 00112618bc
2 changed files with 19 additions and 7 deletions

View File

@@ -1,3 +1,6 @@
3687. [bug] Address null pointer dereference in zone_xfrdone.
[RT #35042]
3686. [func] "dnssec-signzone -Q" drops signatures from keys
that are still published but no longer active.
[RT #34990]

View File

@@ -11856,6 +11856,12 @@ zone_shutdown(isc_task_t *task, isc_event_t *event) {
linked = ISC_TRUE;
zone->statelist = NULL;
}
if (zone->statelist == &zone->zmgr->xfrin_in_progress) {
ISC_LIST_UNLINK(zone->zmgr->xfrin_in_progress, zone,
statelink);
zone->statelist = NULL;
zmgr_resume_xfrs(zone->zmgr, ISC_FALSE);
}
RWUNLOCK(&zone->zmgr->rwlock, isc_rwlocktype_write);
}
@@ -14330,6 +14336,8 @@ zone_xfrdone(dns_zone_t *zone, isc_result_t result) {
* This transfer finishing freed up a transfer quota slot.
* Let any other zones waiting for quota have it.
*/
if (zone->zmgr != NULL &&
zone->statelist == &zone->zmgr->xfrin_in_progress) {
UNLOCK_ZONE(zone);
RWLOCK(&zone->zmgr->rwlock, isc_rwlocktype_write);
ISC_LIST_UNLINK(zone->zmgr->xfrin_in_progress, zone, statelink);
@@ -14337,6 +14345,7 @@ zone_xfrdone(dns_zone_t *zone, isc_result_t result) {
zmgr_resume_xfrs(zone->zmgr, ISC_FALSE);
RWUNLOCK(&zone->zmgr->rwlock, isc_rwlocktype_write);
LOCK_ZONE(zone);
}
/*
* Retry with a different server if necessary.