593. [bug] If a secure zone was missing all its NXTs and

a dynamic update was attempted, the server entered
                        an infinite loop.
This commit is contained in:
Andreas Gustafsson
2000-12-05 22:48:56 +00:00
parent 9c5b8b206a
commit 3c7ce471aa
2 changed files with 16 additions and 1 deletions

View File

@@ -1,3 +1,8 @@
593. [bug] If a secure zone was missing all its NXTs and
a dynamic update was attempted, the server entered
an infinite loop.
592. [bug] The sig-validity-interval option now specifies a
number of days, not seconds. This matches the
documentation. [RT #529]

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: update.c,v 1.75 2000/12/01 21:37:08 gson Exp $ */
/* $Id: update.c,v 1.76 2000/12/05 22:48:56 gson Exp $ */
#include <config.h>
@@ -1296,6 +1296,7 @@ next_active(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *oldname,
isc_result_t result;
dns_dbiterator_t *dbit = NULL;
isc_boolean_t has_nxt;
unsigned int wraps = 0;
CHECK(dns_db_createiterator(db, ISC_FALSE, &dbit));
@@ -1315,6 +1316,15 @@ next_active(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *oldname,
CHECK(dns_dbiterator_first(dbit));
else
CHECK(dns_dbiterator_last(dbit));
wraps++;
if (wraps == 2) {
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_UPDATE,
NS_LOGMODULE_UPDATE,
ISC_LOG_ERROR,
"secure zone with no NXTs");
result = DNS_R_BADZONE;
goto failure;
}
}
dns_dbiterator_current(dbit, &node, newname);
dns_db_detachnode(db, &node);