Commit fc1d296d8d for bind

commit fc1d296d8d403ab06d8282984a6f2ea6df2c645e
Author: Evan Hunt <each@isc.org>
Date:   Wed Aug 5 12:23:47 2026 -0700

    add initialization macros for dns_linkedname_t

    Add macros DNS_LINKEDNAME_INITEMPTY and DNS_LINKEDNAME_INITABSOLUTE
    to simplify declaration of linked name objects.

diff --git a/lib/dns/include/dns/name.h b/lib/dns/include/dns/name.h
index cece6f1258..e70b77c293 100644
--- a/lib/dns/include/dns/name.h
+++ b/lib/dns/include/dns/name.h
@@ -209,6 +209,36 @@ extern const dns_name_t *dns_inaddrarpa;

 #define DNS_NAME_INITEMPTY { .magic = DNS_NAME_MAGIC }

+/*%<
+ * These are similar macros for initializing dns_linkedname structures.
+ */
+#define DNS_LINKEDNAME_INITNONABSOLUTE(__ndata)          \
+	{                                                \
+		.name.magic = DNS_NAME_MAGIC,            \
+		.name.ndata = (__ndata),                 \
+		.name.length = (sizeof(__ndata) - 1),    \
+		.name.attributes = { .readonly = true }, \
+		.link = ISC_LINK_INITIALIZER,            \
+		.list = ISC_LIST_INITIALIZER,            \
+	}
+
+#define DNS_LINKEDNAME_INITABSOLUTE(__ndata)                               \
+	{                                                                  \
+		.name.magic = DNS_NAME_MAGIC,                              \
+		.name.ndata = (__ndata),                                   \
+		.name.length = sizeof(__ndata),                            \
+		.name.attributes = { .readonly = true, .absolute = true }, \
+		.link = ISC_LINK_INITIALIZER,                              \
+		.list = ISC_LIST_INITIALIZER,                              \
+	}
+
+#define DNS_LINKEDNAME_INITEMPTY              \
+	{                                     \
+		.name.magic = DNS_NAME_MAGIC, \
+		.link = ISC_LINK_INITIALIZER, \
+		.list = ISC_LIST_INITIALIZER, \
+	}
+
 /*%
  * Standard sizes of a wire format name
  */
diff --git a/lib/dns/validator.c b/lib/dns/validator.c
index 53a65d1128..83b5679dbb 100644
--- a/lib/dns/validator.c
+++ b/lib/dns/validator.c
@@ -3000,16 +3000,12 @@ static isc_result_t
 checkwildcard(dns_validator_t *val, dns_rdatatype_t type,
 	      dns_name_t *zonename) {
 	dns_linkedname_t *name;
-	dns_linkedname_t tname_wl;
-	dns_name_t *wild;
+	dns_linkedname_t tname_wl = DNS_LINKEDNAME_INITEMPTY;
+	dns_name_t *wild = dns_fixedname_name(&val->wild);
 	isc_result_t result;
 	bool exists, data;
 	char namebuf[DNS_NAME_FORMATSIZE];
-	dns_rdataset_t *rdataset, trdataset;
-
-	dns_linkedname_init(&tname_wl);
-	dns_rdataset_init(&trdataset);
-	wild = dns_fixedname_name(&val->wild);
+	dns_rdataset_t *rdataset, trdataset = DNS_RDATASET_INIT;

 	if (dns_name_empty(wild)) {
 		validator_log(val, ISC_LOG_DEBUG(3),
@@ -3101,7 +3097,7 @@ checkwildcard(dns_validator_t *val, dns_rdatatype_t type,
  */
 static isc_result_t
 findnsec3proofs(dns_validator_t *val) {
-	dns_linkedname_t tname_wl;
+	dns_linkedname_t tname_wl = DNS_LINKEDNAME_INITEMPTY;
 	dns_linkedname_t *name = (val->message == NULL) ? &tname_wl : NULL;
 	isc_result_t result;
 	dns_rdataset_t trdataset = DNS_RDATASET_INIT;
@@ -3114,8 +3110,6 @@ findnsec3proofs(dns_validator_t *val) {
 	dns_linkedname_t **proofs = val->proofs;
 	bool exists, data, optout, unknown, setnearest;

-	dns_linkedname_init(&tname_wl);
-
 	for (result = val_rdataset_first(val, &name, &rdataset);
 	     result == ISC_R_SUCCESS;
 	     result = val_rdataset_next(val, &name, &rdataset))
diff --git a/tests/dns/qpzone_test.c b/tests/dns/qpzone_test.c
index 1c8d15288d..58f94ddaee 100644
--- a/tests/dns/qpzone_test.c
+++ b/tests/dns/qpzone_test.c
@@ -157,9 +157,7 @@ static dns_rdata_rrsig_t rrsig_test_data1 = {
 	.timeexpire = 1695820800,
 	.timesigned = 1695744000,
 	.keyid = 0x1234,
-	.signer = { .name = DNS_NAME_INITABSOLUTE(example_org_data),
-		    .link = ISC_LINK_INITIALIZER,
-		    .list = ISC_LIST_INITIALIZER },
+	.signer = DNS_LINKEDNAME_INITABSOLUTE(example_org_data),
 	.siglen = 64,
 	.signature = rrsig_signature1,
 };
@@ -174,9 +172,7 @@ static dns_rdata_rrsig_t rrsig_test_data2 = {
 	.timeexpire = 1695820800,
 	.timesigned = 1695744000,
 	.keyid = 0x5678,
-	.signer = { .name = DNS_NAME_INITABSOLUTE(example_org_data),
-		    .link = ISC_LINK_INITIALIZER,
-		    .list = ISC_LIST_INITIALIZER },
+	.signer = DNS_LINKEDNAME_INITABSOLUTE(example_org_data),
 	.siglen = 64,
 	.signature = rrsig_signature2,
 };