From a1cb966944afe9f3bf371d801d1125d27eca2f47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Sat, 14 Mar 2026 08:20:43 +0100 Subject: [PATCH] Guard against NULL delegset in query_delegation_recurse() 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. --- lib/ns/query.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/ns/query.c b/lib/ns/query.c index b25b37c91f..f9f43b363c 100644 --- a/lib/ns/query.c +++ b/lib/ns/query.c @@ -8670,8 +8670,13 @@ query_delegation_recurse(query_ctx_t *qctx) { 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);