]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Remove target buffer from dns_name_downcase()
authorOndřej Surý <ondrej@isc.org>
Mon, 24 Feb 2025 13:17:22 +0000 (14:17 +0100)
committerOndřej Surý <ondrej@isc.org>
Tue, 25 Feb 2025 11:17:34 +0000 (12:17 +0100)
There was just a single use of passing an extra buffer to
dns_name_downcase() which have been replaced by simple call to
isc_ascii_lowercase() and the 'target' argument from dns_name_downcase()
function has been removed.

12 files changed:
bin/dnssec/dnssec-signzone.c
bin/named/server.c
bin/tools/nsec3hash.c
lib/dns/dnssec.c
lib/dns/ds.c
lib/dns/include/dns/name.h
lib/dns/name.c
lib/dns/nsec3.c
lib/dns/rpz.c
lib/dns/tsig.c
lib/dns/validator.c
lib/dns/zone.c

index 8461134e6743b0636b2ed41eedf2216833bfaf57..cfb8f5141e7b9dca5bc70bf5d396e317b8c9ae58 100644 (file)
@@ -2034,7 +2034,7 @@ addnsec3(dns_name_t *name, dns_dbnode_t *node, const unsigned char *salt,
        dns_fixedname_init(&hashname);
        dns_rdataset_init(&rdataset);
 
-       dns_name_downcase(name, name, NULL);
+       dns_name_downcase(name, name);
        result = dns_nsec3_hashname(&hashname, hash, &hash_len, name, gorigin,
                                    dns_hash_sha1, iterations, salt, salt_len);
        check_result(result, "addnsec3: dns_nsec3_hashname()");
@@ -2402,7 +2402,7 @@ nsec3ify(unsigned int hashalg, dns_iterations_t iterations,
                        fatal("iterating through the database failed: %s",
                              isc_result_totext(result));
                }
-               dns_name_downcase(name, name, NULL);
+               dns_name_downcase(name, name);
                hashlist_add_dns_name(hashlist, name, hashalg, iterations, salt,
                                      salt_len, false);
                dns_db_detachnode(gdb, &node);
@@ -2412,7 +2412,7 @@ nsec3ify(unsigned int hashalg, dns_iterations_t iterations,
                 * node for another <name,nextname> span so we don't add
                 * it here.  Empty labels on nextname are within the span.
                 */
-               dns_name_downcase(nextname, nextname, NULL);
+               dns_name_downcase(nextname, nextname);
                dns_name_fullcompare(name, nextname, &order, &nlabels);
                addnowildcardhash(hashlist, name, hashalg, iterations, salt,
                                  salt_len);
index cb9e390cc674d7820cd378fce879edef3f147443..9f6d021bbfcd6d771a883c5c961d5de1747c0a36 100644 (file)
@@ -12541,7 +12541,7 @@ nzd_setkey(MDB_val *key, dns_name_t *name, char *namebuf, size_t buflen) {
        dns_fixedname_t fixed;
 
        dns_fixedname_init(&fixed);
-       dns_name_downcase(name, dns_fixedname_name(&fixed), NULL);
+       dns_name_downcase(name, dns_fixedname_name(&fixed));
        dns_name_format(dns_fixedname_name(&fixed), namebuf, buflen);
 
        key->mv_data = namebuf;
index 0ddc6fa067f90ccd5f3da9177615fd23280b7595..c0f62375d8065745e41933371173fec52a411ede 100644 (file)
@@ -125,7 +125,7 @@ nsec3hash(nsec3printer *nsec3print, const char *algostr, const char *flagstr,
        result = dns_name_fromtext(name, &buffer, dns_rootname, 0, NULL);
        check_result(result, "dns_name_fromtext() failed");
 
-       dns_name_downcase(name, name, NULL);
+       dns_name_downcase(name, name);
        length = isc_iterated_hash(hash, hash_alg, iterations, salt,
                                   salt_length, name->ndata, name->length);
        if (length == 0) {
index 8746df9843dd15b441332291bcf590690284891d..cda1115ded470e766ecf0b95f7f3ec0dffe110ec 100644 (file)
@@ -167,8 +167,8 @@ digest_sig(dst_context_t *ctx, bool downcase, dns_rdata_t *sigrdata,
                dns_fixedname_init(&fname);
 
                RUNTIME_CHECK(dns_name_downcase(&rrsig->signer,
-                                               dns_fixedname_name(&fname),
-                                               NULL) == ISC_R_SUCCESS);
+                                               dns_fixedname_name(&fname)) ==
+                             ISC_R_SUCCESS);
                dns_name_toregion(dns_fixedname_name(&fname), &r);
        } else {
                dns_name_toregion(&rrsig->signer, &r);
@@ -231,8 +231,8 @@ dns_dnssec_sign(const dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
        dns_name_init(&sig.signer);
        dns_fixedname_init(&fsigner);
        RUNTIME_CHECK(dns_name_downcase(dst_key_name(key),
-                                       dns_fixedname_name(&fsigner),
-                                       NULL) == ISC_R_SUCCESS);
+                                       dns_fixedname_name(&fsigner)) ==
+                     ISC_R_SUCCESS);
        dns_name_clone(dns_fixedname_name(&fsigner), &sig.signer);
 
        sig.covered = set->type;
@@ -280,8 +280,8 @@ dns_dnssec_sign(const dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
        }
 
        dns_fixedname_init(&fnewname);
-       RUNTIME_CHECK(dns_name_downcase(name, dns_fixedname_name(&fnewname),
-                                       NULL) == ISC_R_SUCCESS);
+       RUNTIME_CHECK(dns_name_downcase(name, dns_fixedname_name(&fnewname)) ==
+                     ISC_R_SUCCESS);
        dns_name_toregion(dns_fixedname_name(&fnewname), &r);
 
        /*
@@ -479,8 +479,8 @@ again:
         */
        dns_fixedname_init(&fnewname);
        labels = dns_name_countlabels(name) - 1;
-       RUNTIME_CHECK(dns_name_downcase(name, dns_fixedname_name(&fnewname),
-                                       NULL) == ISC_R_SUCCESS);
+       RUNTIME_CHECK(dns_name_downcase(name, dns_fixedname_name(&fnewname)) ==
+                     ISC_R_SUCCESS);
        if (labels - sig.labels > 0) {
                dns_name_split(dns_fixedname_name(&fnewname), sig.labels + 1,
                               NULL, dns_fixedname_name(&fnewname));
index 07879018b7099112e41c21d95b8afd9aad928d85..c56691bf19aab6e775c95ed6cdb60d85ddc98583 100644 (file)
@@ -67,7 +67,7 @@ dns_ds_fromkeyrdata(const dns_name_t *owner, dns_rdata_t *key,
        }
 
        name = dns_fixedname_initname(&fname);
-       (void)dns_name_downcase(owner, name, NULL);
+       (void)dns_name_downcase(owner, name);
 
        md = isc_md_new();
 
index 4876ea6c1d5ad644b39577ccc141b178ff130c31..24340b2e4b6e80715f49e4e995b2b5ff71c1211c 100644 (file)
@@ -937,8 +937,7 @@ dns_name_tofilenametext(const dns_name_t *name, bool omit_final_dot,
  */
 
 isc_result_t
-dns_name_downcase(const dns_name_t *source, dns_name_t *name,
-                 isc_buffer_t *target);
+dns_name_downcase(const dns_name_t *source, dns_name_t *name);
 /*%<
  * Downcase 'source'.
  *
@@ -949,9 +948,7 @@ dns_name_downcase(const dns_name_t *source, dns_name_t *name,
  *\li  If source == name, then
  *             'source' must not be read-only
  *
- *\li  Otherwise,
- *             'target' is a valid buffer or 'target' is NULL and
- *             'name' has a dedicated buffer.
+ *\li  'name' has a dedicated buffer.
  *
  * Returns:
  *\li  #ISC_R_SUCCESS
index f05f8a97de5fa7ddb6a453c9562ef03cd2148c88..64ba2878046306cfa485985f417ef1e524de1cc0 100644 (file)
@@ -1229,11 +1229,7 @@ dns_name_tofilenametext(const dns_name_t *name, bool omit_final_dot,
 }
 
 isc_result_t
-dns_name_downcase(const dns_name_t *source, dns_name_t *name,
-                 isc_buffer_t *target) {
-       unsigned char *ndata;
-       isc_buffer_t buffer;
-
+dns_name_downcase(const dns_name_t *source, dns_name_t *name) {
        /*
         * Downcase 'source'.
         */
@@ -1243,37 +1239,24 @@ dns_name_downcase(const dns_name_t *source, dns_name_t *name,
 
        if (source == name) {
                REQUIRE(!name->attributes.readonly);
-               isc_buffer_init(&buffer, source->ndata, source->length);
-               target = &buffer;
-               ndata = source->ndata;
-       } else {
-               REQUIRE(DNS_NAME_BINDABLE(name));
-               REQUIRE((target != NULL && ISC_BUFFER_VALID(target)) ||
-                       (target == NULL && ISC_BUFFER_VALID(name->buffer)));
-               if (target == NULL) {
-                       if (source->length > name->buffer->length) {
-                               return ISC_R_NOSPACE;
-                       }
-                       target = name->buffer;
-                       isc_buffer_clear(name->buffer);
-               } else if (source->length > target->length - target->used) {
-                       return ISC_R_NOSPACE;
-               }
-               ndata = (unsigned char *)target->base + target->used;
-               name->ndata = ndata;
+               isc_ascii_lowercopy(name->ndata, source->ndata, source->length);
+               return ISC_R_SUCCESS;
        }
 
-       /* label lengths are < 64 so tolower() does not affect them */
-       isc_ascii_lowercopy(ndata, source->ndata, source->length);
+       REQUIRE(DNS_NAME_BINDABLE(name));
+       REQUIRE(ISC_BUFFER_VALID(name->buffer));
 
-       if (source != name) {
-               name->length = source->length;
-               name->attributes = (struct dns_name_attrs){
-                       .absolute = source->attributes.absolute
-               };
-       }
+       isc_buffer_clear(name->buffer);
+       name->ndata = (uint8_t *)name->buffer->base + name->buffer->used;
 
-       isc_buffer_add(target, name->length);
+       /* label lengths are < 64 so tolower() does not affect them */
+       isc_ascii_lowercopy(name->ndata, source->ndata, source->length);
+
+       name->length = source->length;
+       name->attributes = (struct dns_name_attrs){
+               .absolute = source->attributes.absolute
+       };
+       isc_buffer_add(name->buffer, name->length);
 
        return ISC_R_SUCCESS;
 }
@@ -1696,12 +1679,6 @@ dns_name_size(const dns_name_t *name) {
 
 isc_result_t
 dns_name_digest(const dns_name_t *name, dns_digestfunc_t digest, void *arg) {
-       dns_name_t downname;
-       unsigned char data[256];
-       isc_buffer_t buffer;
-       isc_result_t result;
-       isc_region_t r;
-
        /*
         * Send 'name' in DNSSEC canonical form to 'digest'.
         */
@@ -1709,17 +1686,13 @@ dns_name_digest(const dns_name_t *name, dns_digestfunc_t digest, void *arg) {
        REQUIRE(DNS_NAME_VALID(name));
        REQUIRE(digest != NULL);
 
-       dns_name_init(&downname);
-
-       isc_buffer_init(&buffer, data, sizeof(data));
-
-       result = dns_name_downcase(name, &downname, &buffer);
-       if (result != ISC_R_SUCCESS) {
-               return result;
-       }
-
-       isc_buffer_usedregion(&buffer, &r);
+       unsigned char ndata[DNS_NAME_MAXWIRE];
+       isc_ascii_lowercopy(ndata, name->ndata, name->length);
 
+       isc_region_t r = {
+               .base = ndata,
+               .length = name->length,
+       };
        return (digest)(arg, &r);
 }
 
index 3c02f0d664f9db731f8ac3c5b70fc144c8578bcb..d0d3eadda7467ecd2cde19650a4e9dd8dec2176c 100644 (file)
@@ -261,7 +261,7 @@ dns_nsec3_hashname(dns_fixedname_t *result,
        memset(rethash, 0, NSEC3_MAX_HASH_LENGTH);
 
        downcased = dns_fixedname_initname(&fixed);
-       dns_name_downcase(name, downcased, NULL);
+       dns_name_downcase(name, downcased);
 
        /* hash the node name */
        len = isc_iterated_hash(rethash, hashalg, iterations, salt,
@@ -2022,7 +2022,7 @@ dns_nsec3_noexistnodata(dns_rdatatype_t type, const dns_name_t *name,
         * Prepare to compute all the hashes.
         */
        qname = dns_fixedname_initname(&qfixed);
-       dns_name_downcase(name, qname, NULL);
+       dns_name_downcase(name, qname);
        qlabels = dns_name_countlabels(qname);
        first = true;
 
index 331fe83840915b0af8016caf8ec69d9260d6b229..130d833f3f6ffc7c0a29733402f5882f0d69d603 100644 (file)
@@ -1797,7 +1797,7 @@ update_nodes(dns_rpz_zone_t *rpz, isc_ht_t *newnodes) {
                        goto next;
                }
 
-               dns_name_downcase(name, name, NULL);
+               dns_name_downcase(name, name);
 
                /* Add entry to the new nodes table */
                result = isc_ht_add(newnodes, name->ndata, name->length, rpz);
index f365ae93ee980d20df4e4c437ba6b696ac16a3b1..828a4addf1eba7f06e8e298e9155ec3f67781a85 100644 (file)
@@ -235,7 +235,7 @@ dns_tsigkey_createfromkey(const dns_name_t *name, dst_algorithm_t algorithm,
 
        tkey->name = dns_fixedname_initname(&tkey->fn);
        dns_name_copy(name, tkey->name);
-       (void)dns_name_downcase(tkey->name, tkey->name, NULL);
+       (void)dns_name_downcase(tkey->name, tkey->name);
 
        if (algorithm != DST_ALG_UNKNOWN) {
                if (dstkey != NULL && dst_key_alg(dstkey) != algorithm) {
index b39fa34c1824926d8d030879300672e13ad31f00..fd7325197631a20b140be3a5a3f1f6fbc869707d 100644 (file)
@@ -300,7 +300,7 @@ trynsec3:
        found = false;
        dns_name_init(&nsec3name);
        dns_fixedname_init(&fixed);
-       dns_name_downcase(name, dns_fixedname_name(&fixed), NULL);
+       dns_name_downcase(name, dns_fixedname_name(&fixed));
        name = dns_fixedname_name(&fixed);
        for (result = dns_rdataset_first(rdataset); result == ISC_R_SUCCESS;
             result = dns_rdataset_next(rdataset))
index 119de7ed681d5354d93d263eb33f732385b70c4c..98690078b2446d432005c2eadad9ded3574196a1 100644 (file)
@@ -19093,7 +19093,7 @@ zonemgr_keymgmt_add(dns_zonemgr_t *zmgr, dns_zone_t *zone,
        REQUIRE(added != NULL && *added == NULL);
 
        name = dns_fixedname_initname(&fname);
-       dns_name_downcase(&zone->origin, name, NULL);
+       dns_name_downcase(&zone->origin, name);
 
        RWLOCK(&mgmt->lock, isc_rwlocktype_write);