diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c index 5f99080ce3..0a90e216c4 100644 --- a/lib/dns/rbtdb.c +++ b/lib/dns/rbtdb.c @@ -4675,11 +4675,12 @@ dbiterator_prev(dns_dbiterator_t *iterator DNS__DB_FLARG) { resume_iteration(rbtdbiter); } - dereference_iter_node(rbtdbiter DNS__DB_FLARG_PASS); - name = dns_fixedname_name(&rbtdbiter->name); origin = dns_fixedname_name(&rbtdbiter->origin); result = dns_rbtnodechain_prev(rbtdbiter->current, name, origin); + + dereference_iter_node(rbtdbiter DNS__DB_FLARG_PASS); + if (rbtdbiter->current == &rbtdbiter->nsec3chain && (result == ISC_R_SUCCESS || result == DNS_R_NEWORIGIN)) {