From: Evan Hunt Date: Mon, 4 Aug 2025 23:06:23 +0000 (-0700) Subject: dns_rdatalist functions are not for general use X-Git-Tag: v9.21.14~44^2~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0222c385aae92a2f115b61f0b071d1768ded73cf;p=thirdparty%2Fbind9.git dns_rdatalist functions are not for general use the rdataset method implementation functions in dns/rdatalist.c (i.e., dns_rdatalist_first, _next, etc) are not meant to be called directly; they're called via dns_rdataset_first(), dns_rdataset_next(), etc. in dnssec-ksr.c, a list-based rdataset was iterated using these functions. this has been fixed, and the functions have been renamed to use the `dns__` prefix as a signal that they aren't meant to be used outside the rdataset implementation. --- diff --git a/bin/dnssec/dnssec-ksr.c b/bin/dnssec/dnssec-ksr.c index e891c0a910b..787ffe4ff30 100644 --- a/bin/dnssec/dnssec-ksr.c +++ b/bin/dnssec/dnssec-ksr.c @@ -913,23 +913,19 @@ sign_bundle(ksr_ctx_t *ksr, dns_kasp_t *kasp, isc_stdtime_t inception, next_bundle = next_time; } - for (isc_result_t r = dns_rdatalist_first(&ksk); - r == ISC_R_SUCCESS; r = dns_rdatalist_next(&ksk)) - { + DNS_RDATASET_FOREACH(&ksk) { dns_rdata_t *clone = isc_mem_get(isc_g_mctx, sizeof(*clone)); dns_rdata_init(clone); - dns_rdatalist_current(&ksk, clone); + dns_rdataset_current(&ksk, clone); ISC_LIST_APPEND(dnskeylist->rdata, clone, link); } - for (isc_result_t r = dns_rdatalist_first(&zsk); - r == ISC_R_SUCCESS; r = dns_rdatalist_next(&zsk)) - { + DNS_RDATASET_FOREACH(&zsk) { dns_rdata_t *clone = isc_mem_get(isc_g_mctx, sizeof(*clone)); dns_rdata_init(clone); - dns_rdatalist_current(&zsk, clone); + dns_rdataset_current(&zsk, clone); ISC_LIST_APPEND(dnskeylist->rdata, clone, link); } diff --git a/bin/named/builtin.c b/bin/named/builtin.c index f03cf3a8d93..8043e4f9c51 100644 --- a/bin/named/builtin.c +++ b/bin/named/builtin.c @@ -631,19 +631,19 @@ static void rdataset_clone(dns_rdataset_t *source, dns_rdataset_t *target DNS__DB_FLARG) { dns_dbnode_t *node = source->rdlist.node; - dns_rdatalist_clone(source, target DNS__DB_FLARG_PASS); + dns__rdatalist_clone(source, target DNS__DB_FLARG_PASS); bdbnode_attachnode(node, &target->rdlist.node DNS__DB_FLARG_PASS); } static dns_rdatasetmethods_t bdb_rdataset_methods = { .disassociate = disassociate, - .first = dns_rdatalist_first, - .next = dns_rdatalist_next, - .current = dns_rdatalist_current, + .first = dns__rdatalist_first, + .next = dns__rdatalist_next, + .current = dns__rdatalist_current, .clone = rdataset_clone, - .count = dns_rdatalist_count, - .addnoqname = dns_rdatalist_addnoqname, - .getnoqname = dns_rdatalist_getnoqname, + .count = dns__rdatalist_count, + .addnoqname = dns__rdatalist_addnoqname, + .getnoqname = dns__rdatalist_getnoqname, }; static void diff --git a/lib/dns/include/dns/rdatalist.h b/lib/dns/include/dns/rdatalist.h index e71a089fd12..35e490de386 100644 --- a/lib/dns/include/dns/rdatalist.h +++ b/lib/dns/include/dns/rdatalist.h @@ -107,43 +107,38 @@ dns_rdatalist_fromrdataset(dns_rdataset_t *rdataset, *\li 'rdatalist' is pointed to the rdatalist in rdataset. */ +/*% + * The following are implementation functions for list-based rdatasets. + * They are called by rdataset implementations in rdatalist.c, sdlz.c, + * and builtin.c. They are not meant to be used directly by callers of + * those implmentations. + */ void dns_rdatalist_disassociate(dns_rdataset_t *rdatasetp DNS__DB_FLARG); - isc_result_t -dns_rdatalist_first(dns_rdataset_t *rdataset); - +dns__rdatalist_first(dns_rdataset_t *rdataset); isc_result_t -dns_rdatalist_next(dns_rdataset_t *rdataset); - +dns__rdatalist_next(dns_rdataset_t *rdataset); void -dns_rdatalist_current(dns_rdataset_t *rdataset, dns_rdata_t *rdata); - +dns__rdatalist_current(dns_rdataset_t *rdataset, dns_rdata_t *rdata); void -dns_rdatalist_clone(dns_rdataset_t *source, - dns_rdataset_t *target DNS__DB_FLARG); - +dns__rdatalist_clone(dns_rdataset_t *source, + dns_rdataset_t *target DNS__DB_FLARG); unsigned int -dns_rdatalist_count(dns_rdataset_t *rdataset); - +dns__rdatalist_count(dns_rdataset_t *rdataset); isc_result_t -dns_rdatalist_addnoqname(dns_rdataset_t *rdataset, dns_name_t *name); - +dns__rdatalist_addnoqname(dns_rdataset_t *rdataset, dns_name_t *name); isc_result_t -dns_rdatalist_getnoqname(dns_rdataset_t *rdataset, dns_name_t *name, - dns_rdataset_t *neg, - dns_rdataset_t *negsig DNS__DB_FLARG); - +dns__rdatalist_getnoqname(dns_rdataset_t *rdataset, dns_name_t *name, + dns_rdataset_t *neg, + dns_rdataset_t *negsig DNS__DB_FLARG); isc_result_t -dns_rdatalist_addclosest(dns_rdataset_t *rdataset, dns_name_t *name); - +dns__rdatalist_addclosest(dns_rdataset_t *rdataset, dns_name_t *name); isc_result_t -dns_rdatalist_getclosest(dns_rdataset_t *rdataset, dns_name_t *name, - dns_rdataset_t *neg, - dns_rdataset_t *negsig DNS__DB_FLARG); - +dns__rdatalist_getclosest(dns_rdataset_t *rdataset, dns_name_t *name, + dns_rdataset_t *neg, + dns_rdataset_t *negsig DNS__DB_FLARG); void -dns_rdatalist_setownercase(dns_rdataset_t *rdataset, const dns_name_t *name); - +dns__rdatalist_setownercase(dns_rdataset_t *rdataset, const dns_name_t *name); void -dns_rdatalist_getownercase(const dns_rdataset_t *rdataset, dns_name_t *name); +dns__rdatalist_getownercase(const dns_rdataset_t *rdataset, dns_name_t *name); diff --git a/lib/dns/rdatalist.c b/lib/dns/rdatalist.c index eced445df43..d5b650679ec 100644 --- a/lib/dns/rdatalist.c +++ b/lib/dns/rdatalist.c @@ -26,17 +26,17 @@ static dns_rdatasetmethods_t methods = { .disassociate = dns_rdatalist_disassociate, - .first = dns_rdatalist_first, - .next = dns_rdatalist_next, - .current = dns_rdatalist_current, - .clone = dns_rdatalist_clone, - .count = dns_rdatalist_count, - .addnoqname = dns_rdatalist_addnoqname, - .getnoqname = dns_rdatalist_getnoqname, - .addclosest = dns_rdatalist_addclosest, - .getclosest = dns_rdatalist_getclosest, - .setownercase = dns_rdatalist_setownercase, - .getownercase = dns_rdatalist_getownercase, + .first = dns__rdatalist_first, + .next = dns__rdatalist_next, + .current = dns__rdatalist_current, + .clone = dns__rdatalist_clone, + .count = dns__rdatalist_count, + .addnoqname = dns__rdatalist_addnoqname, + .getnoqname = dns__rdatalist_getnoqname, + .addclosest = dns__rdatalist_addclosest, + .getclosest = dns__rdatalist_getclosest, + .setownercase = dns__rdatalist_setownercase, + .getownercase = dns__rdatalist_getownercase, }; void @@ -100,7 +100,7 @@ dns_rdatalist_disassociate(dns_rdataset_t *rdataset DNS__DB_FLARG) { } isc_result_t -dns_rdatalist_first(dns_rdataset_t *rdataset) { +dns__rdatalist_first(dns_rdataset_t *rdataset) { dns_rdatalist_t *rdatalist = NULL; rdatalist = rdataset->rdlist.list; @@ -114,7 +114,7 @@ dns_rdatalist_first(dns_rdataset_t *rdataset) { } isc_result_t -dns_rdatalist_next(dns_rdataset_t *rdataset) { +dns__rdatalist_next(dns_rdataset_t *rdataset) { dns_rdata_t *rdata; rdata = rdataset->rdlist.iter; @@ -132,7 +132,7 @@ dns_rdatalist_next(dns_rdataset_t *rdataset) { } void -dns_rdatalist_current(dns_rdataset_t *rdataset, dns_rdata_t *rdata) { +dns__rdatalist_current(dns_rdataset_t *rdataset, dns_rdata_t *rdata) { dns_rdata_t *list_rdata; list_rdata = rdataset->rdlist.iter; @@ -142,8 +142,8 @@ dns_rdatalist_current(dns_rdataset_t *rdataset, dns_rdata_t *rdata) { } void -dns_rdatalist_clone(dns_rdataset_t *source, - dns_rdataset_t *target DNS__DB_FLARG) { +dns__rdatalist_clone(dns_rdataset_t *source, + dns_rdataset_t *target DNS__DB_FLARG) { REQUIRE(source != NULL); REQUIRE(target != NULL); @@ -153,7 +153,7 @@ dns_rdatalist_clone(dns_rdataset_t *source, } unsigned int -dns_rdatalist_count(dns_rdataset_t *rdataset) { +dns__rdatalist_count(dns_rdataset_t *rdataset) { dns_rdatalist_t *rdatalist = NULL; unsigned int count; @@ -170,7 +170,7 @@ dns_rdatalist_count(dns_rdataset_t *rdataset) { } isc_result_t -dns_rdatalist_addnoqname(dns_rdataset_t *rdataset, dns_name_t *name) { +dns__rdatalist_addnoqname(dns_rdataset_t *rdataset, dns_name_t *name) { dns_rdataset_t *neg = NULL; dns_rdataset_t *negsig = NULL; dns_ttl_t ttl; @@ -218,9 +218,9 @@ dns_rdatalist_addnoqname(dns_rdataset_t *rdataset, dns_name_t *name) { } isc_result_t -dns_rdatalist_getnoqname(dns_rdataset_t *rdataset, dns_name_t *name, - dns_rdataset_t *neg, - dns_rdataset_t *negsig DNS__DB_FLARG) { +dns__rdatalist_getnoqname(dns_rdataset_t *rdataset, dns_name_t *name, + dns_rdataset_t *neg, + dns_rdataset_t *negsig DNS__DB_FLARG) { dns_rdataclass_t rdclass; dns_rdataset_t *tneg = NULL; dns_rdataset_t *tnegsig = NULL; @@ -264,7 +264,7 @@ dns_rdatalist_getnoqname(dns_rdataset_t *rdataset, dns_name_t *name, } isc_result_t -dns_rdatalist_addclosest(dns_rdataset_t *rdataset, dns_name_t *name) { +dns__rdatalist_addclosest(dns_rdataset_t *rdataset, dns_name_t *name) { dns_rdataset_t *neg = NULL; dns_rdataset_t *negsig = NULL; dns_ttl_t ttl; @@ -311,9 +311,9 @@ dns_rdatalist_addclosest(dns_rdataset_t *rdataset, dns_name_t *name) { } isc_result_t -dns_rdatalist_getclosest(dns_rdataset_t *rdataset, dns_name_t *name, - dns_rdataset_t *neg, - dns_rdataset_t *negsig DNS__DB_FLARG) { +dns__rdatalist_getclosest(dns_rdataset_t *rdataset, dns_name_t *name, + dns_rdataset_t *neg, + dns_rdataset_t *negsig DNS__DB_FLARG) { dns_rdataclass_t rdclass; dns_rdataset_t *tneg = NULL; dns_rdataset_t *tnegsig = NULL; @@ -357,7 +357,7 @@ dns_rdatalist_getclosest(dns_rdataset_t *rdataset, dns_name_t *name, } void -dns_rdatalist_setownercase(dns_rdataset_t *rdataset, const dns_name_t *name) { +dns__rdatalist_setownercase(dns_rdataset_t *rdataset, const dns_name_t *name) { dns_rdatalist_t *rdatalist; unsigned int i; @@ -379,7 +379,7 @@ dns_rdatalist_setownercase(dns_rdataset_t *rdataset, const dns_name_t *name) { } void -dns_rdatalist_getownercase(const dns_rdataset_t *rdataset, dns_name_t *name) { +dns__rdatalist_getownercase(const dns_rdataset_t *rdataset, dns_name_t *name) { dns_rdatalist_t *rdatalist; unsigned int i; diff --git a/lib/dns/sdlz.c b/lib/dns/sdlz.c index 598ba42e968..c68e2e3764f 100644 --- a/lib/dns/sdlz.c +++ b/lib/dns/sdlz.c @@ -1296,19 +1296,19 @@ static void rdataset_clone(dns_rdataset_t *source, dns_rdataset_t *target DNS__DB_FLARG) { dns_dbnode_t *node = source->rdlist.node; - dns_rdatalist_clone(source, target DNS__DB_FLARG_PASS); + dns__rdatalist_clone(source, target DNS__DB_FLARG_PASS); sdlznode_attachnode(node, &target->rdlist.node DNS__DB_FLARG_PASS); } static dns_rdatasetmethods_t rdataset_methods = { .disassociate = disassociate, - .first = dns_rdatalist_first, - .next = dns_rdatalist_next, - .current = dns_rdatalist_current, + .first = dns__rdatalist_first, + .next = dns__rdatalist_next, + .current = dns__rdatalist_current, .clone = rdataset_clone, - .count = dns_rdatalist_count, - .addnoqname = dns_rdatalist_addnoqname, - .getnoqname = dns_rdatalist_getnoqname, + .count = dns__rdatalist_count, + .addnoqname = dns__rdatalist_addnoqname, + .getnoqname = dns__rdatalist_getnoqname, }; static void