Commit a5a13bd779 for bind

commit a5a13bd77945c3e981edd60d360d93649bdf61eb
Author: Alessio Podda <alessio@isc.org>
Date:   Sun Sep 27 07:27:40 2026 +0200

    Fix linked-name users after rebase

diff --git a/bin/plugins/synthrecord.c b/bin/plugins/synthrecord.c
index bbe35a0aad..b24b404263 100644
--- a/bin/plugins/synthrecord.c
+++ b/bin/plugins/synthrecord.c
@@ -159,9 +159,9 @@ synthrecord_respond(synthrecord_t *inst, query_ctx_t *qctx, void *rdata,
 	 * rdataset to it.
 	 */
 	dns_message_gettempname(msg, &aname);
-	dns_name_copy(qctx->client->query.qname, aname);
+	dns_name_copy(qctx->client->query.qname, dns_name(aname));
 	dns_message_addname(msg, aname, DNS_SECTION_ANSWER);
-	dns_rdataset_setownercase(synthset, dns_linkedname_name(aname));
+	dns_rdataset_setownercase(synthset, dns_name(aname));
 	ISC_LIST_APPEND(aname->list, synthset, link);

 	/*
diff --git a/lib/dns/dnssec.c b/lib/dns/dnssec.c
index 9f30ad8692..ea3cdd78b5 100644
--- a/lib/dns/dnssec.c
+++ b/lib/dns/dnssec.c
@@ -492,9 +492,7 @@ dns_dnssec_verify(const dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
 		RETERR(dns_rdataset_first(set));
 		dns_rdataset_current(set, &rdata);
 		RETERR(dns_rdata_tostruct(&rdata, &nsec));
-		if (!dns_name_issubdomain(&nsec.next,
-					  dns_name(&sig.signer)))
-		{
+		if (!dns_name_issubdomain(&nsec.next, dns_name(&sig.signer))) {
 			return DNS_R_NOVALIDNSEC;
 		}
 	}
diff --git a/lib/dns/rdatalist.c b/lib/dns/rdatalist.c
index 328fd32914..448b9ac2b3 100644
--- a/lib/dns/rdatalist.c
+++ b/lib/dns/rdatalist.c
@@ -171,8 +171,9 @@ dns__rdatalist_count(dns_rdataset_t *rdataset) {
  * NSEC or NSEC3 rdataset together with the RRSIG rdataset covering it.
  */
 static bool
-findproof(dns_name_t *name, dns_rdataclass_t rdclass, dns_rdatatype_t type,
-	  dns_rdataset_t **negp, dns_rdataset_t **negsigp) {
+findproof(dns_linkedname_t *name, dns_rdataclass_t rdclass,
+	  dns_rdatatype_t type, dns_rdataset_t **negp,
+	  dns_rdataset_t **negsigp) {
 	dns_rdataset_t *neg = NULL;
 	dns_rdataset_t *negsig = NULL;

@@ -211,9 +212,7 @@ dns__rdatalist_addnoqname(dns_rdataset_t *rdataset, dns_linkedname_t *name,
 	REQUIRE(rdataset != NULL);
 	REQUIRE(DNS_NAME_VALID(dns_linkedname_name(name)));

-	if (!findproof(dns_linkedname_name(name), rdataset->rdclass, type, &neg,
-		       &negsig))
-	{
+	if (!findproof(name, rdataset->rdclass, type, &neg, &negsig)) {
 		return ISC_R_NOTFOUND;
 	}

@@ -244,8 +243,8 @@ dns__rdatalist_getnoqname(dns_rdataset_t *rdataset, dns_name_t *name,

 	REQUIRE(DNS_NAME_VALID(dns_linkedname_name(noqname)));

-	if (!findproof(dns_linkedname_name(noqname), rdataset->rdclass,
-		       rdataset->rdlist.noqnametype, &tneg, &tnegsig))
+	if (!findproof(noqname, rdataset->rdclass, rdataset->rdlist.noqnametype,
+		       &tneg, &tnegsig))
 	{
 		return ISC_R_NOTFOUND;
 	}
diff --git a/lib/dns/validator.c b/lib/dns/validator.c
index 4e1cd0df51..3fee01daee 100644
--- a/lib/dns/validator.c
+++ b/lib/dns/validator.c
@@ -2911,7 +2911,7 @@ val_rdataset_next(dns_validator_t *val, dns_linkedname_t **namep,
 }

 static dns_rdataset_t *
-find_sigrdataset(const dns_name_t *name, dns_rdatatype_t covers) {
+find_sigrdataset(const dns_linkedname_t *name, dns_rdatatype_t covers) {
 	for (dns_rdataset_t *sigrdataset = ISC_LIST_HEAD(name->list);
 	     sigrdataset != NULL;
 	     sigrdataset = ISC_LIST_NEXT(sigrdataset, link))
@@ -2929,7 +2929,7 @@ find_sigrdataset(const dns_name_t *name, dns_rdatatype_t covers) {
  * Return ISC_R_SUCCESS if every RRSIG covering an NSEC is signed by 'zonename'.
  */
 static isc_result_t
-valid_nsec_signer(dns_validator_t *val, dns_name_t *name,
+valid_nsec_signer(dns_validator_t *val, dns_linkedname_t *name,
 		  dns_name_t *zonename) {
 	isc_result_t result = DNS_R_NOVALIDNSEC;
 	dns_rdataset_t sigset = DNS_RDATASET_INIT;
@@ -2945,7 +2945,7 @@ valid_nsec_signer(dns_validator_t *val, dns_name_t *name,
 			return DNS_R_NOVALIDNSEC;
 		}
 	} else {
-		RETERR(dns_ncache_getsigrdataset(val->rdataset, name,
+		RETERR(dns_ncache_getsigrdataset(val->rdataset, dns_name(name),
 						 dns_rdatatype_nsec, &sigset));

 		sigrdataset = &sigset;
@@ -3035,8 +3035,7 @@ checkwildcard(dns_validator_t *val, dns_rdatatype_t type,
 		dns_linkedname_t **proofs = val->proofs;
 		switch (rdataset->type) {
 		case dns_rdatatype_nsec:
-			result = valid_nsec_signer(val, dns_name(name),
-						   zonename);
+			result = valid_nsec_signer(val, name, zonename);
 			if (result != ISC_R_SUCCESS) {
 				continue;
 			}
diff --git a/lib/ns/notify.c b/lib/ns/notify.c
index bd64dcf1f4..fa9774ca91 100644
--- a/lib/ns/notify.c
+++ b/lib/ns/notify.c
@@ -166,12 +166,12 @@ ns_notify_start(ns_client_t *client, isc_nmhandle_t *handle) {

 	if (zone_rdataset->type != dns_rdatatype_soa) {
 		result = DNS_R_NOTIMP;
-		notify_log_received(client, ISC_LOG_DEBUG(3), zonename,
-				    zone_rdataset->type, result);
+		notify_log_received(client, ISC_LOG_DEBUG(3),
+				    dns_name(zonename), zone_rdataset->type,
+				    result);
 		goto done;
 	}
-	result = dns_view_findzone(client->inner.view,
-				   dns_name(zonename),
+	result = dns_view_findzone(client->inner.view, dns_name(zonename),
 				   DNS_ZTFIND_EXACT, &zone);
 	if (result == ISC_R_SUCCESS) {
 		dns_zonetype_t zonetype = dns_zone_gettype(zone);
@@ -183,7 +183,8 @@ ns_notify_start(ns_client_t *client, isc_nmhandle_t *handle) {
 		{
 			isc_sockaddr_t *from = ns_client_getsockaddr(client);
 			isc_sockaddr_t *to = ns_client_getdestaddr(client);
-			notify_log_received(client, ISC_LOG_INFO, zonename,
+			notify_log_received(client, ISC_LOG_INFO,
+					    dns_name(zonename),
 					    zone_rdataset->type, ISC_R_SUCCESS);
 			result = dns_zone_notifyreceive(zone, from, to,
 							request);
@@ -192,7 +193,7 @@ ns_notify_start(ns_client_t *client, isc_nmhandle_t *handle) {
 	}

 	result = DNS_R_NOTAUTH;
-	notify_log_received(client, ISC_LOG_NOTICE, zonename,
+	notify_log_received(client, ISC_LOG_NOTICE, dns_name(zonename),
 			    zone_rdataset->type, result);

 done:
diff --git a/tests/dns/ncache_test.c b/tests/dns/ncache_test.c
index 90f86bd4cd..10587de1b7 100644
--- a/tests/dns/ncache_test.c
+++ b/tests/dns/ncache_test.c
@@ -82,14 +82,16 @@ negative_response(void) {
 static void
 add_rrset(dns_message_t *msg, const char *ownerstr, dns_rdatatype_t type,
 	  dns_rdatatype_t covers, unsigned int count, size_t size) {
-	dns_name_t *name = NULL;
+	dns_linkedname_t *name = NULL;
 	dns_rdatalist_t *rdatalist = NULL;
 	dns_rdataset_t *rdataset = NULL;
 	size_t payload, rdlen;

 	dns_message_gettempname(msg, &name);
-	name_fromstring((dns_fixedname_t *)name, ownerstr);
-	name->attributes.ncache = true;
+	isc_result_t result = dns_name_fromstring(dns_name(name), ownerstr,
+						  dns_rootname, 0, isc_g_mctx);
+	assert_int_equal(result, ISC_R_SUCCESS);
+	dns_linkedname_attrs(name)->ncache = true;

 	dns_message_gettemprdatalist(msg, &rdatalist);
 	rdatalist->rdclass = dns_rdataclass_in;
@@ -101,8 +103,8 @@ add_rrset(dns_message_t *msg, const char *ownerstr, dns_rdatatype_t type,
 	 * Split the rdata bytes evenly, giving the remainder to the first
 	 * rdatas one byte at a time.
 	 */
-	assert_true(size >= name->length + 5 + count * 2);
-	payload = size - name->length - 5 - count * 2;
+	assert_true(size >= dns_name(name)->length + 5 + count * 2);
+	payload = size - dns_name(name)->length - 5 - count * 2;
 	rdlen = payload / count;

 	for (unsigned int i = 0; i < count; i++) {
diff --git a/tests/dns/rdataset_test.c b/tests/dns/rdataset_test.c
index 0739b1174d..d597d828ed 100644
--- a/tests/dns/rdataset_test.c
+++ b/tests/dns/rdataset_test.c
@@ -121,8 +121,9 @@ typedef struct {
 #define MAXSETS	   4

 static void
-addset(dns_name_t *owner, dns_rdatalist_t *rdatalist, dns_rdataset_t *rdataset,
-       dns_rdatatype_t type, dns_rdatatype_t covers, dns_ttl_t ttl) {
+addset(dns_linkedname_t *owner, dns_rdatalist_t *rdatalist,
+       dns_rdataset_t *rdataset, dns_rdatatype_t type, dns_rdatatype_t covers,
+       dns_ttl_t ttl) {
 	dns_rdatalist_init(rdatalist);
 	rdatalist->rdclass = dns_rdataclass_in;
 	rdatalist->type = type;
@@ -145,7 +146,8 @@ static void
 check_noqname(const proofset_t *sets, size_t nsets, dns_rdatatype_t type,
 	      isc_result_t expected) {
 	dns_fixedname_t fowner;
-	dns_name_t *owner = dns_fixedname_initname(&fowner);
+	dns_name_t *ownername = dns_fixedname_initname(&fowner);
+	dns_linkedname_t owner = DNS_LINKEDNAME_INITEMPTY;
 	dns_rdatalist_t rdatalists[MAXSETS], answerlist;
 	dns_rdataset_t rdatasets[MAXSETS], answer;
 	dns_rdataset_t neg = DNS_RDATASET_INIT, negsig = DNS_RDATASET_INIT;
@@ -154,12 +156,13 @@ check_noqname(const proofset_t *sets, size_t nsets, dns_rdatatype_t type,
 	isc_result_t result;

 	assert_true(nsets <= MAXSETS);
-	result = dns_name_fromstring(owner, "proof.example.", dns_rootname, 0,
-				     NULL);
+	result = dns_name_fromstring(ownername, "proof.example.", dns_rootname,
+				     0, NULL);
 	assert_int_equal(result, ISC_R_SUCCESS);
+	dns_name_clone(ownername, dns_name(&owner));

 	for (size_t i = 0; i < nsets; i++) {
-		addset(owner, &rdatalists[i], &rdatasets[i], sets[i].type,
+		addset(&owner, &rdatalists[i], &rdatasets[i], sets[i].type,
 		       sets[i].covers, sets[i].ttl);
 		if (sets[i].type == type ||
 		    (sets[i].type == dns_rdatatype_rrsig &&
@@ -170,7 +173,7 @@ check_noqname(const proofset_t *sets, size_t nsets, dns_rdatatype_t type,
 	}
 	addset(NULL, &answerlist, &answer, dns_rdatatype_a, 0, ANSWER_TTL);

-	result = dns_rdataset_addnoqname(&answer, owner, type);
+	result = dns_rdataset_addnoqname(&answer, &owner, type);
 	assert_int_equal(result, expected);
 	if (result != ISC_R_SUCCESS) {
 		assert_false(answer.attributes.noqname);
@@ -182,7 +185,7 @@ check_noqname(const proofset_t *sets, size_t nsets, dns_rdatatype_t type,

 	result = dns_rdataset_getnoqname(&answer, &found, &neg, &negsig);
 	assert_int_equal(result, ISC_R_SUCCESS);
-	assert_true(dns_name_equal(&found, owner));
+	assert_true(dns_name_equal(&found, &owner));
 	assert_int_equal(neg.type, type);
 	assert_int_equal(negsig.type, dns_rdatatype_rrsig);
 	assert_int_equal(negsig.covers, type);