]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
New names for ldns_rr_descriptor_minimum and _maximum, ...
authorWillem Toorop <willem@nlnetlabs.nl>
Thu, 15 Jan 2026 15:18:48 +0000 (16:18 +0100)
committerWillem Toorop <willem@nlnetlabs.nl>
Thu, 15 Jan 2026 15:22:48 +0000 (16:22 +0100)
So they match better what they mean. Also reduce the maximum allowed rdata
fields to 65535 (assuming a rdata field would be at least 1 byte in size)

ldns/rr.h
rr.c
test/15-unit-tests-rrtypes.tpkg/15-unit-tests-rrtypes.c
wire2host.c

index d2e4ee90aa9c620486a46cf034e01476031ccc07..b73b1f0c2092511a313fd2116609901181460fe5 100644 (file)
--- a/ldns/rr.h
+++ b/ldns/rr.h
@@ -892,7 +892,7 @@ const ldns_rr_descriptor *ldns_rr_descript(uint16_t type);
  * \param[in]  descriptor for an rr type
  * \return the minimum number of rdata fields
  */
-size_t ldns_rr_descriptor_minimum(const ldns_rr_descriptor *descriptor);
+size_t ldns_minimum_rdata_fields(const ldns_rr_descriptor *descriptor);
 
 /**
  * returns the maximum number of rdata fields of the rr type this descriptor describes.
@@ -900,6 +900,17 @@ size_t ldns_rr_descriptor_minimum(const ldns_rr_descriptor *descriptor);
  * \param[in]  descriptor for an rr type
  * \return the maximum number of rdata fields
  */
+size_t ldns_maximum_rdata_fields(const ldns_rr_descriptor *descriptor);
+
+
+/**
+ * An alias for ldns_minimum_rdata_fields. Use that function instead.
+ */
+size_t ldns_rr_descriptor_minimum(const ldns_rr_descriptor *descriptor);
+
+/**
+ * An alias for ldns_maxumym_rdata_fields. Use that function instead.
+ */
 size_t ldns_rr_descriptor_maximum(const ldns_rr_descriptor *descriptor);
 
 /**
diff --git a/rr.c b/rr.c
index a37e8d0178cbcc035153a6a37af4a71d9eb8c33e..393b3b8d2262f4fb7df1915cbd8c27c95be6ca1e 100644 (file)
--- a/rr.c
+++ b/rr.c
@@ -58,19 +58,19 @@ ldns_rr_new_frm_type(ldns_rr_type t)
 
        desc = ldns_rr_descript(t);
 
-       rr->_rdata_fields = LDNS_XMALLOC(ldns_rdf *, ldns_rr_descriptor_minimum(desc));
+       rr->_rdata_fields = LDNS_XMALLOC(ldns_rdf *, ldns_minimum_rdata_fields(desc));
         if(!rr->_rdata_fields) {
                 LDNS_FREE(rr);
                 return NULL;
         }
-       for (i = 0; i < ldns_rr_descriptor_minimum(desc); i++) {
+       for (i = 0; i < ldns_minimum_rdata_fields(desc); i++) {
                rr->_rdata_fields[i] = NULL;
        }
 
        ldns_rr_set_owner(rr, NULL);
        ldns_rr_set_question(rr, false);
        /* set the count to minimum */
-       ldns_rr_set_rd_count(rr, ldns_rr_descriptor_minimum(desc));
+       ldns_rr_set_rd_count(rr, ldns_minimum_rdata_fields(desc));
        ldns_rr_set_class(rr, LDNS_RR_CLASS_IN);
        ldns_rr_set_ttl(rr, LDNS_DEFAULT_TTL);
        ldns_rr_set_type(rr, t);
@@ -347,8 +347,8 @@ ldns_rr_new_frm_str_internal(ldns_rr **newrr, const char *str,
        ldns_rr_set_type(new, rr_type);
        if (desc) {
                /* only the rdata remains */
-               r_max = ldns_rr_descriptor_maximum(desc);
-               r_min = ldns_rr_descriptor_minimum(desc);
+               r_max = ldns_maximum_rdata_fields(desc);
+               r_min = ldns_minimum_rdata_fields(desc);
        } else {
                r_min = 0;
                r_max = 1;
@@ -2753,7 +2753,7 @@ ldns_rr_descript(uint16_t type)
 }
 
 size_t
-ldns_rr_descriptor_minimum(const ldns_rr_descriptor *descriptor)
+ldns_minimum_rdata_fields(const ldns_rr_descriptor *descriptor)
 {
        if (descriptor) {
                return descriptor->_minimum;
@@ -2763,12 +2763,15 @@ ldns_rr_descriptor_minimum(const ldns_rr_descriptor *descriptor)
 }
 
 size_t
-ldns_rr_descriptor_maximum(const ldns_rr_descriptor *descriptor)
+ldns_maximum_rdata_fields(const ldns_rr_descriptor *descriptor)
 {
        if (descriptor) {
                if (descriptor->_variable != LDNS_RDF_TYPE_NONE) {
-                       /* Should really be SIZE_MAX... bad FreeBSD.  */
-                       return UINT_MAX;
+                       /* If we assume a minimum rdata field length of 1,
+                        * then the number of rdata fields can be no more than
+                        * the maximum value of RDLENGTH, i.e. 65535
+                        */
+                       return 65535;
                } else {
                        return descriptor->_maximum;
                }
@@ -2777,6 +2780,19 @@ ldns_rr_descriptor_maximum(const ldns_rr_descriptor *descriptor)
        }
 }
 
+size_t
+ldns_rr_descriptor_minimum(const ldns_rr_descriptor *descriptor)
+{
+       return ldns_minimum_rdata_fields(descriptor);
+}
+
+size_t
+ldns_rr_descriptor_maximum(const ldns_rr_descriptor *descriptor)
+{
+       return ldns_maximum_rdata_fields(descriptor);
+}
+
+
 ldns_rdf_type
 ldns_rr_descriptor_field_type(const ldns_rr_descriptor *descriptor,
                               size_t index)
index 2450f05aab2f4f303eaf32a7a351732439be5926..1afe3871962bb37c02cf675e4d19354e00cbc75f 100644 (file)
@@ -21,10 +21,10 @@ check_desc(const ldns_rr_descriptor* desc, ldns_rr_type type)
                printf("Null!\n");
                return 0;
        }
-       if(ldns_rr_descriptor_minimum(desc) != desc->_minimum)
+       if(ldns_minimum_rdata_fields(desc) != desc->_minimum)
                return err(desc, "minimum wrong");
        if(desc->_variable == LDNS_RDF_TYPE_NONE &&
-               ldns_rr_descriptor_maximum(desc) != desc->_maximum)
+               ldns_maximum_rdata_fields(desc) != desc->_maximum)
                        return err(desc, "maximum wrong");
        if(desc->_type != type && !(desc->_type == LDNS_RR_TYPE_NULL
                && strncmp(desc->_name, "TYPE", 4)==0))
index 9c05001493b83370c5f7f14c776262d56fff0331..e489f6a1d8a25bd1fa72b7405283abf662f96bd2 100644 (file)
@@ -184,7 +184,7 @@ ldns_wire2rdf(ldns_rr *rr, const uint8_t *wire, size_t max, size_t *pos)
 
        rdf_index = 0;
        while (*pos < end &&
-                       rdf_index < ldns_rr_descriptor_maximum(descriptor)) {
+                       rdf_index < ldns_maximum_rdata_fields(descriptor)) {
 
                cur_rdf_length = 0;
 
@@ -306,7 +306,7 @@ ldns_wire2rdf(ldns_rr *rr, const uint8_t *wire, size_t max, size_t *pos)
 
                rdf_index++;
 
-       } /* while (rdf_index < ldns_rr_descriptor_maximum(descriptor)) */
+       } /* while (rdf_index < ldns_maximum_rdata_fields(descriptor)) */
 
 
        return LDNS_STATUS_OK;