]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
replace dns_slabheader_raw() with a flexible array member
authorEvan Hunt <each@isc.org>
Sun, 17 Aug 2025 22:54:03 +0000 (15:54 -0700)
committerOndřej Surý <ondrej@isc.org>
Mon, 18 Aug 2025 10:36:47 +0000 (12:36 +0200)
we can use header->raw instead of dns_slabheader_raw().

lib/dns/include/dns/rdataslab.h
lib/dns/qpcache.c
lib/dns/qpzone.c
lib/dns/rdataslab.c

index 45bff01d1a358f68e41810320946778f3fde0c72..a292b4acd35b8b2df9941c04d2cc5697d42041bf 100644 (file)
@@ -143,6 +143,12 @@ struct dns_slabheader {
         * rendering that character upper case.
         */
        unsigned char upper[32];
+
+       /*%
+        * Flexible member indicates the address of the raw data
+        * following this header.
+        */
+       unsigned char raw[];
 };
 
 enum {
@@ -278,12 +284,6 @@ dns_rdataslab_equalx(dns_slabheader_t *header1, dns_slabheader_t *header2,
  *\li  true if the slabs are equal, #false otherwise.
  */
 
-void *
-dns_slabheader_raw(dns_slabheader_t *header);
-/*%
- * Returns the address of the raw memory following a dns_slabheader.
- */
-
 void
 dns_slabheader_setownercase(dns_slabheader_t *header, const dns_name_t *name);
 /*%<
index 761310512393bc54ace909caea87120b6a36bb66..db285441c48cd34a0e50e4773dc6d7f1d7f3b963 100644 (file)
@@ -1072,7 +1072,7 @@ bindrdataset(qpcache_t *qpdb, qpcnode_t *node, dns_slabheader_t *header,
 
        rdataset->slab.db = (dns_db_t *)qpdb;
        rdataset->slab.node = (dns_dbnode_t *)node;
-       rdataset->slab.raw = dns_slabheader_raw(header);
+       rdataset->slab.raw = header->raw;
        rdataset->slab.iter_pos = NULL;
        rdataset->slab.iter_count = 0;
 
@@ -2913,8 +2913,8 @@ addnoqname(isc_mem_t *mctx, dns_slabheader_t *newheader, uint32_t maxrrperset,
 
        noqname = isc_mem_get(mctx, sizeof(*noqname));
        *noqname = (dns_slabheader_proof_t){
-               .neg = dns_slabheader_raw((dns_slabheader_t *)r1.base),
-               .negsig = dns_slabheader_raw((dns_slabheader_t *)r2.base),
+               .neg = ((dns_slabheader_t *)r1.base)->raw,
+               .negsig = ((dns_slabheader_t *)r2.base)->raw,
                .type = neg.type,
                .name = DNS_NAME_INITEMPTY,
        };
@@ -2952,8 +2952,8 @@ addclosest(isc_mem_t *mctx, dns_slabheader_t *newheader, uint32_t maxrrperset,
 
        closest = isc_mem_get(mctx, sizeof(*closest));
        *closest = (dns_slabheader_proof_t){
-               .neg = dns_slabheader_raw((dns_slabheader_t *)r1.base),
-               .negsig = dns_slabheader_raw((dns_slabheader_t *)r2.base),
+               .neg = ((dns_slabheader_t *)r1.base)->raw,
+               .negsig = ((dns_slabheader_t *)r2.base)->raw,
                .name = DNS_NAME_INITEMPTY,
                .type = neg.type,
        };
index 3f2124546bd8dd65af1efb0cc8e26ac25c5f8e3d..16f67d3dedbb874b491c7cb4b33977757a02cca9 100644 (file)
@@ -1042,7 +1042,7 @@ bindrdataset(qpzonedb_t *qpdb, qpznode_t *node, dns_slabheader_t *header,
 
        rdataset->slab.db = (dns_db_t *)qpdb;
        rdataset->slab.node = (dns_dbnode_t *)node;
-       rdataset->slab.raw = dns_slabheader_raw(header);
+       rdataset->slab.raw = header->raw;
        rdataset->slab.iter_pos = NULL;
        rdataset->slab.iter_count = 0;
 
@@ -1110,7 +1110,7 @@ setnsec3parameters(dns_db_t *db, qpz_version_t *version) {
                /*
                 * Find an NSEC3PARAM with a supported algorithm.
                 */
-               raw = dns_slabheader_raw(found);
+               raw = found->raw;
                count = get_uint16(raw);
                while (count-- > 0U) {
                        dns_rdata_t rdata = DNS_RDATA_INIT;
index 48fd9962d1d11b2e0a213abcd7a162f319a62658..22974186658b562d33a90c77a05971cfbd5c25a0 100644 (file)
@@ -800,11 +800,6 @@ dns_rdataslab_equalx(dns_slabheader_t *slab1, dns_slabheader_t *slab2,
        return true;
 }
 
-void *
-dns_slabheader_raw(dns_slabheader_t *header) {
-       return header + 1;
-}
-
 void
 dns_slabheader_setownercase(dns_slabheader_t *header, const dns_name_t *name) {
        REQUIRE(!CASESET(header));