From d0e0706797b92f02df232cc8266c770a2fd31fe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20K=C4=99pie=C5=84?= Date: Tue, 6 May 2025 09:14:18 +0200 Subject: [PATCH] Revert "qpzone find() function could set foundname incorrectly" This reverts commit dd1050e938243d07dc4741164884c08f30400ae3. --- lib/dns/qpzone.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/lib/dns/qpzone.c b/lib/dns/qpzone.c index b6a9ccad86..409dd7ce45 100644 --- a/lib/dns/qpzone.c +++ b/lib/dns/qpzone.c @@ -3365,8 +3365,10 @@ find(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version, if (tresult != DNS_R_CONTINUE) { result = tresult; search.chain.len = i - 1; - dns_name_copy(&n->name, foundname); node = n; + if (foundname != NULL) { + dns_name_copy(&node->name, foundname); + } } } @@ -3635,20 +3637,12 @@ found: /* * We have an exact match for the name, but there are no * active rdatasets in the desired version. That means that - * this node doesn't exist in the desired version. - * If there's a node above this one, reassign the - * foundname to the parent and treat this as a partial - * match. + * this node doesn't exist in the desired version, and that + * we really have a partial match. */ if (!wild) { - unsigned int len = search.chain.len - 1; - if (len > 0) { - NODE_UNLOCK(nlock, &nlocktype); - dns_qpchain_node(&search.chain, len - 1, NULL, - (void **)&node, NULL); - dns_name_copy(&node->name, foundname); - goto partial_match; - } + NODE_UNLOCK(nlock, &nlocktype); + goto partial_match; } }