2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-31 06:25:31 +00:00

4790. [bug] nsupdate could trigger a require when sending a

update to the second address of the server.
                        [RT #45731]
This commit is contained in:
Mark Andrews
2017-10-26 00:29:52 +11:00
parent eb2ef7b53e
commit 2bbca9594f
2 changed files with 15 additions and 7 deletions

View File

@@ -1,3 +1,7 @@
4790. [bug] nsupdate could trigger a require when sending a
update to the second address of the server.
[RT #45731]
4789. [cleanup] Check writability of new-zones-directory. [RT #46308] 4789. [cleanup] Check writability of new-zones-directory. [RT #46308]
4788. [cleanup] When using "update-policy local", log a warning 4788. [cleanup] When using "update-policy local", log a warning

View File

@@ -150,6 +150,7 @@ static dns_dispatch_t *dispatchv4 = NULL;
static dns_dispatch_t *dispatchv6 = NULL; static dns_dispatch_t *dispatchv6 = NULL;
static dns_message_t *updatemsg = NULL; static dns_message_t *updatemsg = NULL;
static dns_fixedname_t fuserzone; static dns_fixedname_t fuserzone;
static dns_fixedname_t fzname;
static dns_name_t *userzone = NULL; static dns_name_t *userzone = NULL;
static dns_name_t *zname = NULL; static dns_name_t *zname = NULL;
static dns_name_t tmpzonename; static dns_name_t tmpzonename;
@@ -2390,7 +2391,6 @@ update_completed(isc_task_t *task, isc_event_t *event) {
dns_request_destroy(&request); dns_request_destroy(&request);
dns_message_renderreset(updatemsg); dns_message_renderreset(updatemsg);
dns_message_settsigkey(updatemsg, NULL); dns_message_settsigkey(updatemsg, NULL);
/* XXX MPA fix zonename is freed already */
send_update(zname, &master_servers[master_inuse]); send_update(zname, &master_servers[master_inuse]);
isc_event_free(&event); isc_event_free(&event);
return; return;
@@ -2693,13 +2693,17 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
dns_name_init(&master, NULL); dns_name_init(&master, NULL);
dns_name_clone(&soa.origin, &master); dns_name_clone(&soa.origin, &master);
/* if (userzone != NULL) {
* XXXMPA
*/
if (userzone != NULL)
zname = userzone; zname = userzone;
else } else {
zname = name; /*
* Save the zone name in case we need to try a second
* address.
*/
dns_fixedname_init(&fzname);
zname = dns_fixedname_name(&fzname);
dns_name_copy(name, zname, NULL);
}
if (debugging) { if (debugging) {
char namestr[DNS_NAME_FORMATSIZE]; char namestr[DNS_NAME_FORMATSIZE];