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,
};