mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-10 08:30:00 -04:00
Fix a lock/unlock bug in server.c:do_modzone()
The cleanup path always unlocks the 'view->newzone.lock' lock, but there are 'goto cleanup;' operations even before the lock is locked, which causes an assertion failure. Don't use the cleanup path before the lock is locked.
This commit is contained in:
parent
a72a17c882
commit
a227e4606f
1 changed files with 6 additions and 3 deletions
|
|
@ -12341,8 +12341,11 @@ do_modzone(named_server_t *server, dns_view_t *view, dns_name_t *name,
|
|||
|
||||
if (!view->newzone.allowed) {
|
||||
result = ISC_R_NOPERM;
|
||||
TCHECK(putstr(text, "new zone configuration is not allowed"));
|
||||
goto cleanup;
|
||||
tresult = putstr(text, "new zone configuration is not allowed");
|
||||
if (tresult != ISC_R_SUCCESS) {
|
||||
isc_buffer_clear(text);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Zone must already exist */
|
||||
|
|
@ -12357,7 +12360,7 @@ do_modzone(named_server_t *server, dns_view_t *view, dns_name_t *name,
|
|||
result = dns_view_findzone(view, name, DNS_ZTFIND_EXACT, &zone);
|
||||
}
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
goto cleanup;
|
||||
return result;
|
||||
}
|
||||
|
||||
added = dns_zone_getadded(zone);
|
||||
|
|
|
|||
Loading…
Reference in a new issue