static void
sign(isc_task_t *task, isc_event_t *event);
+/*%
+ * Store a copy of 'name' in 'fzonecut' and return a pointer to that copy.
+ */
+static dns_name_t *
+savezonecut(dns_fixedname_t *fzonecut, dns_name_t *name) {
+ dns_name_t *result;
+
+ dns_fixedname_init(fzonecut);
+ result = dns_fixedname_name(fzonecut);
+ dns_name_copy(name, result, NULL);
+
+ return (result);
+}
+
static void
dumpnode(dns_name_t *name, dns_dbnode_t *node) {
dns_rdataset_t rds;
if (dns_name_issubdomain(name, gorigin) &&
(zonecut == NULL ||
!dns_name_issubdomain(name, zonecut))) {
- if (is_delegation(gdb, gversion, gorigin, name, node, NULL)) {
- dns_fixedname_init(&fzonecut);
- zonecut = dns_fixedname_name(&fzonecut);
- dns_name_copy(name, zonecut, NULL);
+ if (is_delegation(gdb, gversion, gorigin,
+ name, node, NULL))
+ {
+ zonecut = savezonecut(&fzonecut, name);
if (!OPTOUT(nsec3flags) ||
secure(name, node))
found = ISC_TRUE;
} else if (has_dname(gdb, gversion, node)) {
- dns_fixedname_init(&fzonecut);
- zonecut = dns_fixedname_name(&fzonecut);
- dns_name_copy(name, zonecut, NULL);
+ zonecut = savezonecut(&fzonecut, name);
found = ISC_TRUE;
} else {
found = ISC_TRUE;
name = dns_fixedname_name(&fname);
dns_fixedname_init(&fnextname);
nextname = dns_fixedname_name(&fnextname);
- dns_fixedname_init(&fzonecut);
zonecut = NULL;
/*
}
if (is_delegation(gdb, gversion, gorigin, name, node, &nsttl)) {
- zonecut = dns_fixedname_name(&fzonecut);
- dns_name_copy(name, zonecut, NULL);
+ zonecut = savezonecut(&fzonecut, name);
remove_sigs(node, ISC_TRUE, 0);
if (generateds)
add_ds(name, node, nsttl);
} else if (has_dname(gdb, gversion, node)) {
- zonecut = dns_fixedname_name(&fzonecut);
- dns_name_copy(name, zonecut, NULL);
+ zonecut = savezonecut(&fzonecut, name);
}
result = dns_dbiterator_next(dbiter);
name = dns_fixedname_name(&fname);
dns_fixedname_init(&fnextname);
nextname = dns_fixedname_name(&fnextname);
- dns_fixedname_init(&fzonecut);
zonecut = NULL;
/*
}
if (has_dname(gdb, gversion, node)) {
- zonecut = dns_fixedname_name(&fzonecut);
- dns_name_copy(name, zonecut, NULL);
+ zonecut = savezonecut(&fzonecut, name);
}
result = dns_dbiterator_next(dbiter);
if (is_delegation(gdb, gversion, gorigin,
nextname, nextnode, &nsttl))
{
- zonecut = dns_fixedname_name(&fzonecut);
- dns_name_copy(nextname, zonecut, NULL);
+ zonecut = savezonecut(&fzonecut, nextname);
remove_sigs(nextnode, ISC_TRUE, 0);
if (generateds)
add_ds(nextname, nextnode, nsttl);
continue;
}
} else if (has_dname(gdb, gversion, nextnode)) {
- zonecut = dns_fixedname_name(&fzonecut);
- dns_name_copy(nextname, zonecut, NULL);
+ zonecut = savezonecut(&fzonecut, nextname);
}
dns_db_detachnode(gdb, &nextnode);
break;
}
if (has_dname(gdb, gversion, node)) {
- zonecut = dns_fixedname_name(&fzonecut);
- dns_name_copy(name, zonecut, NULL);
+ zonecut = savezonecut(&fzonecut, name);
}
result = dns_dbiterator_next(dbiter);
if (is_delegation(gdb, gversion, gorigin,
nextname, nextnode, NULL))
{
- zonecut = dns_fixedname_name(&fzonecut);
- dns_name_copy(nextname, zonecut, NULL);
+ zonecut = savezonecut(&fzonecut, nextname);
if (OPTOUT(nsec3flags) &&
!secure(nextname, nextnode)) {
dns_db_detachnode(gdb, &nextnode);
continue;
}
} else if (has_dname(gdb, gversion, nextnode)) {
- zonecut = dns_fixedname_name(&fzonecut);
- dns_name_copy(nextname, zonecut, NULL);
+ zonecut = savezonecut(&fzonecut, nextname);
}
dns_db_detachnode(gdb, &nextnode);
break;