If both dns_view_bestzonecut() and dns_deleg_fromrdataset() fail,
delegset stays NULL. Passing it to ns_query_recurse() would crash
on the REQUIRE(DNS_DELEGSET_VALID(delegset)) in createfetch().
Return ISC_R_NOTFOUND instead, which lets the caller handle the
failure gracefully.
fname = qctx->fname;
}
- result = ns_query_recurse(qctx->client, qctx->qtype, qname,
- fname, delegset, qctx->resuming);
+ if (delegset == NULL) {
+ result = ISC_R_NOTFOUND;
+ } else {
+ result = ns_query_recurse(qctx->client, qctx->qtype,
+ qname, fname, delegset,
+ qctx->resuming);
+ }
if (delegset != NULL) {
dns_delegset_detach(&delegset);