]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
dns_rdatalist functions are not for general use
authorEvan Hunt <each@isc.org>
Mon, 4 Aug 2025 23:06:23 +0000 (16:06 -0700)
committerEvan Hunt <each@isc.org>
Mon, 15 Sep 2025 16:11:50 +0000 (16:11 +0000)
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.

bin/dnssec/dnssec-ksr.c
bin/named/builtin.c
lib/dns/include/dns/rdatalist.h
lib/dns/rdatalist.c
lib/dns/sdlz.c

index e891c0a910bf4e101335d08fd0fdb032bca06376..787ffe4ff30bafbb526c91ffdd6f3c7a8820758f 100644 (file)
@@ -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);
                }
 
index f03cf3a8d93587cb0c59a9b3002f7a2c02446b39..8043e4f9c51b5f3c12890999331a4e711f7aecbf 100644 (file)
@@ -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
index e71a089fd1275d4f7e76273cdd75a79dc2b26567..35e490de3860c95bd885f5b3fc9313db01b890ad 100644 (file)
@@ -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);
index eced445df43cb9dfe3e0dda22249202bc5440564..d5b650679ec7fffffec0c20db1b86a8409522afd 100644 (file)
 
 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;
 
index 598ba42e968ad867a287c0ccbe7107520a159cec..c68e2e3764f00c6041a28a1a88e7badfe43153f1 100644 (file)
@@ -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