From b1fe1b8ae34ddc45b3191a49c5a9ef0aeb841cc0 Mon Sep 17 00:00:00 2001 From: Evan Hunt Date: Fri, 21 May 2021 17:10:59 -0700 Subject: [PATCH 1/6] remove the remaining uses of dns_name_copy() dns_name_copy() has been replaced nearly everywhere with dns_name_copynf(). this commit changes the last two uses of the original function. afterward, we can remove the old dns_name_copy() implementation, and replace it with _copynf(). --- bin/dig/dighost.c | 4 +--- lib/dns/badcache.c | 60 ++++++++++++++++++++++------------------------ 2 files changed, 30 insertions(+), 34 deletions(-) diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c index 6337ce92f3..754bbbb5a5 100644 --- a/bin/dig/dighost.c +++ b/bin/dig/dighost.c @@ -2244,9 +2244,7 @@ setup_lookup(dig_lookup_t *lookup) { name, lookup->oname, lookup->name, &lookup->namebuf); } else { - result = dns_name_copy( - name, lookup->name, - &lookup->namebuf); + dns_name_copynf(name, lookup->name); } } if (result != ISC_R_SUCCESS) { diff --git a/lib/dns/badcache.c b/lib/dns/badcache.c index 7439713026..86ba39c4c6 100644 --- a/lib/dns/badcache.c +++ b/lib/dns/badcache.c @@ -27,6 +27,7 @@ #include #include +#include #include #include #include @@ -57,7 +58,8 @@ struct dns_bcentry { isc_time_t expire; uint32_t flags; unsigned int hashval; - dns_name_t name; + dns_fixedname_t fname; + dns_name_t *name; }; static void @@ -183,8 +185,7 @@ badcache_resize(dns_badcache_t *bc, isc_time_t *now) { for (bad = bc->table[i]; bad != NULL; bad = next) { next = bad->next; if (isc_time_compare(&bad->expire, now) < 0) { - isc_mem_put(bc->mctx, bad, - sizeof(*bad) + bad->name.length); + isc_mem_put(bc->mctx, bad, sizeof(*bad)); atomic_fetch_sub_relaxed(&bc->count, 1); } else { bad->next = newtable[bad->hashval % newsize]; @@ -231,7 +232,7 @@ dns_badcache_add(dns_badcache_t *bc, const dns_name_t *name, prev = NULL; for (bad = bc->table[hash]; bad != NULL; bad = next) { next = bad->next; - if (bad->type == type && dns_name_equal(name, &bad->name)) { + if (bad->type == type && dns_name_equal(name, bad->name)) { if (update) { bad->expire = *expire; bad->flags = flags; @@ -244,8 +245,7 @@ dns_badcache_add(dns_badcache_t *bc, const dns_name_t *name, } else { prev->next = bad->next; } - isc_mem_put(bc->mctx, bad, - sizeof(*bad) + bad->name.length); + isc_mem_put(bc->mctx, bad, sizeof(*bad)); atomic_fetch_sub_relaxed(&bc->count, 1); } else { prev = bad; @@ -253,18 +253,22 @@ dns_badcache_add(dns_badcache_t *bc, const dns_name_t *name, } if (bad == NULL) { + unsigned count; isc_buffer_t buffer; - bad = isc_mem_get(bc->mctx, sizeof(*bad) + name->length); - bad->type = type; - bad->hashval = hashval; - bad->expire = *expire; - bad->flags = flags; + + bad = isc_mem_get(bc->mctx, sizeof(*bad)); + *bad = (dns_bcentry_t){ .type = type, + .hashval = hashval, + .expire = *expire, + .flags = flags, + .next = bc->table[hash] }; + isc_buffer_init(&buffer, bad + 1, name->length); - dns_name_init(&bad->name, NULL); - dns_name_copy(name, &bad->name, &buffer); - bad->next = bc->table[hash]; + bad->name = dns_fixedname_initname(&bad->fname); + dns_name_copynf(name, bad->name); bc->table[hash] = bad; - unsigned count = atomic_fetch_add_relaxed(&bc->count, 1); + + count = atomic_fetch_add_relaxed(&bc->count, 1); if ((count > bc->size * 8) || (count < bc->size * 2 && bc->size > bc->minsize)) { resize = true; @@ -325,12 +329,11 @@ dns_badcache_find(dns_badcache_t *bc, const dns_name_t *name, bc->table[hash] = bad->next; } - isc_mem_put(bc->mctx, bad, - sizeof(*bad) + bad->name.length); + isc_mem_put(bc->mctx, bad, sizeof(*bad)); atomic_fetch_sub(&bc->count, 1); continue; } - if (bad->type == type && dns_name_equal(name, &bad->name)) { + if (bad->type == type && dns_name_equal(name, bad->name)) { if (flagp != NULL) { *flagp = bad->flags; } @@ -350,8 +353,7 @@ skip: bad = bc->table[i]; if (bad != NULL && isc_time_compare(&bad->expire, now) < 0) { bc->table[i] = bad->next; - isc_mem_put(bc->mctx, bad, - sizeof(*bad) + bad->name.length); + isc_mem_put(bc->mctx, bad, sizeof(*bad)); atomic_fetch_sub_relaxed(&bc->count, 1); } UNLOCK(&bc->tlocks[i]); @@ -372,8 +374,7 @@ dns_badcache_flush(dns_badcache_t *bc) { for (i = 0; atomic_load_relaxed(&bc->count) > 0 && i < bc->size; i++) { for (entry = bc->table[i]; entry != NULL; entry = next) { next = entry->next; - isc_mem_put(bc->mctx, entry, - sizeof(*entry) + entry->name.length); + isc_mem_put(bc->mctx, entry, sizeof(*entry)); atomic_fetch_sub_relaxed(&bc->count, 1); } bc->table[i] = NULL; @@ -404,15 +405,14 @@ dns_badcache_flushname(dns_badcache_t *bc, const dns_name_t *name) { int n; next = bad->next; n = isc_time_compare(&bad->expire, &now); - if (n < 0 || dns_name_equal(name, &bad->name)) { + if (n < 0 || dns_name_equal(name, bad->name)) { if (prev == NULL) { bc->table[hash] = bad->next; } else { prev->next = bad->next; } - isc_mem_put(bc->mctx, bad, - sizeof(*bad) + bad->name.length); + isc_mem_put(bc->mctx, bad, sizeof(*bad)); atomic_fetch_sub_relaxed(&bc->count, 1); } else { prev = bad; @@ -450,15 +450,14 @@ dns_badcache_flushtree(dns_badcache_t *bc, const dns_name_t *name) { for (bad = bc->table[i]; bad != NULL; bad = next) { next = bad->next; n = isc_time_compare(&bad->expire, &now); - if (n < 0 || dns_name_issubdomain(&bad->name, name)) { + if (n < 0 || dns_name_issubdomain(bad->name, name)) { if (prev == NULL) { bc->table[i] = bad->next; } else { prev->next = bad->next; } - isc_mem_put(bc->mctx, bad, - sizeof(*bad) + bad->name.length); + isc_mem_put(bc->mctx, bad, sizeof(*bad)); atomic_fetch_sub_relaxed(&bc->count, 1); } else { prev = bad; @@ -501,13 +500,12 @@ dns_badcache_print(dns_badcache_t *bc, const char *cachename, FILE *fp) { bc->table[i] = bad->next; } - isc_mem_put(bc->mctx, bad, - sizeof(*bad) + bad->name.length); + isc_mem_put(bc->mctx, bad, sizeof(*bad)); atomic_fetch_sub_relaxed(&bc->count, 1); continue; } prev = bad; - dns_name_format(&bad->name, namebuf, sizeof(namebuf)); + dns_name_format(bad->name, namebuf, sizeof(namebuf)); dns_rdatatype_format(bad->type, typebuf, sizeof(typebuf)); t = isc_time_microdiff(&bad->expire, &now); From ea7b28f101a840e14cfad2a03765435e2a9e7129 Mon Sep 17 00:00:00 2001 From: Evan Hunt Date: Fri, 21 May 2021 17:17:23 -0700 Subject: [PATCH 2/6] remove dns_name_copy() implementation Remove dns_name_copy() and refactor the underlying code since it will only be called by dns_name_copynf() now, and can't fail. --- lib/dns/include/dns/name.h | 25 ++------------------ lib/dns/name.c | 47 ++++++++++--------------------------- lib/dns/win32/libdns.def.in | 1 - 3 files changed, 14 insertions(+), 59 deletions(-) diff --git a/lib/dns/include/dns/name.h b/lib/dns/include/dns/name.h index 16bb5ffa33..48c10bfadd 100644 --- a/lib/dns/include/dns/name.h +++ b/lib/dns/include/dns/name.h @@ -1240,33 +1240,12 @@ dns_name_settotextfilter(dns_name_totextfilter_t *proc); * Includes space for the terminating NULL. */ -isc_result_t -dns_name_copy(const dns_name_t *source, dns_name_t *dest, isc_buffer_t *target); -/*%< - * Copies the name in 'source' into 'dest'. The name data is copied to - * the 'target' buffer, which is then set as the buffer for 'dest'. - * - * Requires: - * \li 'source' is a valid name. - * - * \li 'dest' is an initialized name. - * - * \li 'target' is an initialized buffer. - * - * Ensures: - * - *\li On success, the used space in target is updated. - * - * Returns: - *\li #ISC_R_SUCCESS - *\li #ISC_R_NOSPACE - */ - void dns_name_copynf(const dns_name_t *source, dns_name_t *dest); /*%< * Copies the name in 'source' into 'dest'. The name data is copied to - * the dedicated buffer for 'dest'. + * the dedicated buffer for 'dest'. (If copying to a name that doesn't + * have a dedicated buffer, use dns_name_setbuffer() first.) * * Requires: * \li 'source' is a valid name. diff --git a/lib/dns/name.c b/lib/dns/name.c index fd9a8ced3b..e5715638d0 100644 --- a/lib/dns/name.c +++ b/lib/dns/name.c @@ -2462,24 +2462,23 @@ dns_name_fromstring2(dns_name_t *target, const char *src, return (result); } -static isc_result_t -name_copy(const dns_name_t *source, dns_name_t *dest, isc_buffer_t *target) { +void +dns_name_copynf(const dns_name_t *source, dns_name_t *dest) { + isc_buffer_t *target = NULL; unsigned char *ndata = NULL; - /* - * Make dest a copy of source. - */ - + REQUIRE(VALID_NAME(source)); + REQUIRE(VALID_NAME(dest)); REQUIRE(BINDABLE(dest)); - /* - * Set up. - */ - if (target->length - target->used < source->length) { - return (ISC_R_NOSPACE); - } + target = dest->buffer; - ndata = (unsigned char *)target->base + target->used; + REQUIRE(target != NULL); + REQUIRE(target->length >= source->length); + + isc_buffer_clear(target); + + ndata = (unsigned char *)target->base; dest->ndata = target->base; if (source->length != 0) { @@ -2504,28 +2503,6 @@ name_copy(const dns_name_t *source, dns_name_t *dest, isc_buffer_t *target) { } isc_buffer_add(target, dest->length); - - return (ISC_R_SUCCESS); -} - -isc_result_t -dns_name_copy(const dns_name_t *source, dns_name_t *dest, - isc_buffer_t *target) { - REQUIRE(VALID_NAME(source)); - REQUIRE(VALID_NAME(dest)); - REQUIRE(target != NULL); - - return (name_copy(source, dest, target)); -} - -void -dns_name_copynf(const dns_name_t *source, dns_name_t *dest) { - REQUIRE(VALID_NAME(source)); - REQUIRE(VALID_NAME(dest)); - REQUIRE(dest->buffer != NULL); - - isc_buffer_clear(dest->buffer); - RUNTIME_CHECK(name_copy(source, dest, dest->buffer) == ISC_R_SUCCESS); } /* diff --git a/lib/dns/win32/libdns.def.in b/lib/dns/win32/libdns.def.in index feedfb9447..1eba5af96d 100644 --- a/lib/dns/win32/libdns.def.in +++ b/lib/dns/win32/libdns.def.in @@ -576,7 +576,6 @@ dns_name_caseequal dns_name_clone dns_name_compare dns_name_concatenate -dns_name_copy dns_name_copynf dns_name_countlabels dns_name_digest From b0aadaac8ee29dd08933619db02fbb61e4cbfabd Mon Sep 17 00:00:00 2001 From: Evan Hunt Date: Fri, 21 May 2021 17:20:44 -0700 Subject: [PATCH 3/6] rename dns_name_copynf() to dns_name_copy() dns_name_copy() is now the standard name-copying function. --- bin/dig/dighost.c | 8 +-- bin/dig/host.c | 4 +- bin/dig/nslookup.c | 4 +- bin/dnssec/dnssec-dsfromkey.c | 2 +- bin/dnssec/dnssec-importkey.c | 2 +- bin/dnssec/dnssec-signzone.c | 6 +-- bin/named/server.c | 2 +- bin/named/zoneconf.c | 4 +- bin/nsupdate/nsupdate.c | 2 +- bin/tests/system/dyndb/driver/syncptr.c | 2 +- lib/dns/adb.c | 2 +- lib/dns/badcache.c | 2 +- lib/dns/client.c | 4 +- lib/dns/dnsrps.c | 2 +- lib/dns/include/dns/name.h | 2 +- lib/dns/journal.c | 2 +- lib/dns/lookup.c | 4 +- lib/dns/masterdump.c | 4 +- lib/dns/name.c | 2 +- lib/dns/nsec3.c | 6 +-- lib/dns/nta.c | 2 +- lib/dns/order.c | 2 +- lib/dns/rbt.c | 4 +- lib/dns/rbtdb.c | 18 +++---- lib/dns/rdataset.c | 2 +- lib/dns/resolver.c | 18 +++---- lib/dns/rrl.c | 4 +- lib/dns/sdb.c | 6 +-- lib/dns/sdlz.c | 6 +-- lib/dns/tkey.c | 10 ++-- lib/dns/tsig.c | 2 +- lib/dns/validator.c | 8 +-- lib/dns/view.c | 10 ++-- lib/dns/win32/libdns.def.in | 2 +- lib/dns/zone.c | 10 ++-- lib/dns/zoneverify.c | 6 +-- lib/ns/query.c | 67 ++++++++++++------------- lib/ns/update.c | 4 +- 38 files changed, 123 insertions(+), 124 deletions(-) diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c index 754bbbb5a5..fd0c7455f4 100644 --- a/bin/dig/dighost.c +++ b/bin/dig/dighost.c @@ -797,8 +797,8 @@ clone_lookup(dig_lookup_t *lookold, bool servers) { memmove(looknew->ecs_addr, lookold->ecs_addr, len); } - dns_name_copynf(dns_fixedname_name(&lookold->fdomain), - dns_fixedname_name(&looknew->fdomain)); + dns_name_copy(dns_fixedname_name(&lookold->fdomain), + dns_fixedname_name(&looknew->fdomain)); if (servers) { clone_server_list(lookold->my_server_list, @@ -1890,7 +1890,7 @@ followup_lookup(dns_message_t *msg, dig_query_t *query, dns_section_t section) { lookup->recurse = false; } domain = dns_fixedname_name(&lookup->fdomain); - dns_name_copynf(name, domain); + dns_name_copy(name, domain); } debug("adding server %s", namestr); num = getaddresses(lookup, namestr, &lresult); @@ -2244,7 +2244,7 @@ setup_lookup(dig_lookup_t *lookup) { name, lookup->oname, lookup->name, &lookup->namebuf); } else { - dns_name_copynf(name, lookup->name); + dns_name_copy(name, lookup->name); } } if (result != ISC_R_SUCCESS) { diff --git a/bin/dig/host.c b/bin/dig/host.c index b3ddc52f1a..ba0bbe63d0 100644 --- a/bin/dig/host.c +++ b/bin/dig/host.c @@ -379,7 +379,7 @@ chase_cnamechain(dns_message_t *msg, dns_name_t *qname) { dns_rdataset_current(rdataset, &rdata); result = dns_rdata_tostruct(&rdata, &cname, NULL); check_result(result, "dns_rdata_tostruct"); - dns_name_copynf(&cname.cname, qname); + dns_name_copy(&cname.cname, qname); dns_rdata_freestruct(&cname); } } @@ -442,7 +442,7 @@ printmessage(dig_query_t *query, const isc_buffer_t *msgbuf, dns_message_t *msg, /* Add AAAA and MX lookups. */ name = dns_fixedname_initname(&fixed); - dns_name_copynf(query->lookup->name, name); + dns_name_copy(query->lookup->name, name); chase_cnamechain(msg, name); dns_name_format(name, namestr, sizeof(namestr)); lookup = clone_lookup(query->lookup, false); diff --git a/bin/dig/nslookup.c b/bin/dig/nslookup.c index ad5e970d2d..702e9af41d 100644 --- a/bin/dig/nslookup.c +++ b/bin/dig/nslookup.c @@ -391,7 +391,7 @@ chase_cnamechain(dns_message_t *msg, dns_name_t *qname) { dns_rdataset_current(rdataset, &rdata); result = dns_rdata_tostruct(&rdata, &cname, NULL); check_result(result, "dns_rdata_tostruct"); - dns_name_copynf(&cname.cname, qname); + dns_name_copy(&cname.cname, qname); dns_rdata_freestruct(&cname); } } @@ -448,7 +448,7 @@ printmessage(dig_query_t *query, const isc_buffer_t *msgbuf, dns_message_t *msg, /* Add AAAA lookup. */ name = dns_fixedname_initname(&fixed); - dns_name_copynf(query->lookup->name, name); + dns_name_copy(query->lookup->name, name); chase_cnamechain(msg, name); dns_name_format(name, namestr, sizeof(namestr)); lookup = clone_lookup(query->lookup, false); diff --git a/bin/dnssec/dnssec-dsfromkey.c b/bin/dnssec/dnssec-dsfromkey.c index a5e0bc8206..618ab03cdc 100644 --- a/bin/dnssec/dnssec-dsfromkey.c +++ b/bin/dnssec/dnssec-dsfromkey.c @@ -215,7 +215,7 @@ loadkey(char *filename, unsigned char *key_buf, unsigned int key_buf_size, rdclass = dst_key_class(key); name = dns_fixedname_initname(&fixed); - dns_name_copynf(dst_key_name(key), name); + dns_name_copy(dst_key_name(key), name); dst_key_free(&key); } diff --git a/bin/dnssec/dnssec-importkey.c b/bin/dnssec/dnssec-importkey.c index bc16f6c431..77ef407717 100644 --- a/bin/dnssec/dnssec-importkey.c +++ b/bin/dnssec/dnssec-importkey.c @@ -185,7 +185,7 @@ loadkey(char *filename, unsigned char *key_buf, unsigned int key_buf_size, rdclass = dst_key_class(key); name = dns_fixedname_initname(&fixed); - dns_name_copynf(dst_key_name(key), name); + dns_name_copy(dst_key_name(key), name); dst_key_free(&key); } diff --git a/bin/dnssec/dnssec-signzone.c b/bin/dnssec/dnssec-signzone.c index f19b692612..8d22d71d79 100644 --- a/bin/dnssec/dnssec-signzone.c +++ b/bin/dnssec/dnssec-signzone.c @@ -201,7 +201,7 @@ savezonecut(dns_fixedname_t *fzonecut, dns_name_t *name) { dns_name_t *result; result = dns_fixedname_initname(fzonecut); - dns_name_copynf(name, result); + dns_name_copy(name, result); return (result); } @@ -2397,7 +2397,7 @@ nsec3ify(unsigned int hashalg, dns_iterations_t iterations, break; } if (result == ISC_R_NOMORE) { - dns_name_copynf(gorigin, nextname); + dns_name_copy(gorigin, nextname); done = true; } else if (result != ISC_R_SUCCESS) { fatal("iterating through the database failed: %s", @@ -2534,7 +2534,7 @@ nsec3ify(unsigned int hashalg, dns_iterations_t iterations, break; } if (result == ISC_R_NOMORE) { - dns_name_copynf(gorigin, nextname); + dns_name_copy(gorigin, nextname); done = true; } else if (result != ISC_R_SUCCESS) { fatal("iterating through the database failed: %s", diff --git a/bin/named/server.c b/bin/named/server.c index 4be656b1f1..9bcf3aa306 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -7330,7 +7330,7 @@ dotat(dns_keytable_t *keytable, dns_keynode_t *keynode, dns_name_t *keyname, tat->view = NULL; dns_rdataset_init(&tat->rdataset); dns_rdataset_init(&tat->sigrdataset); - dns_name_copynf(keyname, dns_fixedname_initname(&tat->keyname)); + dns_name_copy(keyname, dns_fixedname_initname(&tat->keyname)); result = get_tat_qname(dns_fixedname_initname(&tat->tatname), keyname, keynode); if (result != ISC_R_SUCCESS) { diff --git a/bin/named/zoneconf.c b/bin/named/zoneconf.c index c82cf76850..2e05cee6d4 100644 --- a/bin/named/zoneconf.c +++ b/bin/named/zoneconf.c @@ -272,8 +272,8 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone, dns_fixedname_init(&fname); if (usezone) { - dns_name_copynf(dns_zone_getorigin(zone), - dns_fixedname_name(&fname)); + dns_name_copy(dns_zone_getorigin(zone), + dns_fixedname_name(&fname)); } else { str = cfg_obj_asstring(dname); isc_buffer_constinit(&b, str, strlen(str)); diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c index 95255e0333..9835c47b9e 100644 --- a/bin/nsupdate/nsupdate.c +++ b/bin/nsupdate/nsupdate.c @@ -2730,7 +2730,7 @@ lookforsoa: * address. */ zname = dns_fixedname_initname(&fzname); - dns_name_copynf(name, zname); + dns_name_copy(name, zname); } if (debugging) { diff --git a/bin/tests/system/dyndb/driver/syncptr.c b/bin/tests/system/dyndb/driver/syncptr.c index c142063a44..3212a2d93f 100644 --- a/bin/tests/system/dyndb/driver/syncptr.c +++ b/bin/tests/system/dyndb/driver/syncptr.c @@ -229,7 +229,7 @@ syncptr(sample_instance_t *inst, dns_name_t *name, dns_rdata_t *addr_rdata, /* Reverse zone is managed by this driver, prepare PTR record */ pevent->zone = NULL; dns_zone_attach(ptr_zone, &pevent->zone); - dns_name_copynf(name, dns_fixedname_name(&pevent->ptr_target_name)); + dns_name_copy(name, dns_fixedname_name(&pevent->ptr_target_name)); dns_name_clone(dns_fixedname_name(&pevent->ptr_target_name), &ptr_struct.ptr); dns_diff_init(inst->mctx, &pevent->diff); diff --git a/lib/dns/adb.c b/lib/dns/adb.c index fbe347d350..37cd3dbdcd 100644 --- a/lib/dns/adb.c +++ b/lib/dns/adb.c @@ -3325,7 +3325,7 @@ post_copy: find->partial_result |= (adbname->partial_result & wanted_addresses); if (alias) { if (target != NULL) { - dns_name_copynf(&adbname->target, target); + dns_name_copy(&adbname->target, target); } result = DNS_R_ALIAS; } else { diff --git a/lib/dns/badcache.c b/lib/dns/badcache.c index 86ba39c4c6..aa09779b9e 100644 --- a/lib/dns/badcache.c +++ b/lib/dns/badcache.c @@ -265,7 +265,7 @@ dns_badcache_add(dns_badcache_t *bc, const dns_name_t *name, isc_buffer_init(&buffer, bad + 1, name->length); bad->name = dns_fixedname_initname(&bad->fname); - dns_name_copynf(name, bad->name); + dns_name_copy(name, bad->name); bc->table[hash] = bad; count = atomic_fetch_add_relaxed(&bc->count, 1); diff --git a/lib/dns/client.c b/lib/dns/client.c index bbf9031700..f3eb236fb8 100644 --- a/lib/dns/client.c +++ b/lib/dns/client.c @@ -735,7 +735,7 @@ client_resfind(resctx_t *rctx, dns_fetchevent_t *event) { if (tresult != ISC_R_SUCCESS) { goto done; } - dns_name_copynf(&cname.cname, name); + dns_name_copy(&cname.cname, name); dns_rdata_freestruct(&cname); want_restart = true; goto done; @@ -1155,7 +1155,7 @@ dns_client_startresolve(dns_client_t *client, const dns_name_t *name, rctx->sigrdataset = sigrdataset; dns_fixedname_init(&rctx->name); - dns_name_copynf(name, dns_fixedname_name(&rctx->name)); + dns_name_copy(name, dns_fixedname_name(&rctx->name)); rctx->client = client; ISC_LINK_INIT(rctx, link); diff --git a/lib/dns/dnsrps.c b/lib/dns/dnsrps.c index 0f2ffb5f35..f12065664e 100644 --- a/lib/dns/dnsrps.c +++ b/lib/dns/dnsrps.c @@ -612,7 +612,7 @@ rpsdb_finddb(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version, nodep = &node; } rpsdb_findnode(db, name, false, nodep); - dns_name_copynf(name, foundname); + dns_name_copy(name, foundname); return (rpsdb_findrdataset(db, *nodep, NULL, type, 0, 0, rdataset, sigrdataset)); } diff --git a/lib/dns/include/dns/name.h b/lib/dns/include/dns/name.h index 48c10bfadd..bc141e2cf2 100644 --- a/lib/dns/include/dns/name.h +++ b/lib/dns/include/dns/name.h @@ -1241,7 +1241,7 @@ dns_name_settotextfilter(dns_name_totextfilter_t *proc); */ void -dns_name_copynf(const dns_name_t *source, dns_name_t *dest); +dns_name_copy(const dns_name_t *source, dns_name_t *dest); /*%< * Copies the name in 'source' into 'dest'. The name data is copied to * the dedicated buffer for 'dest'. (If copying to a name that doesn't diff --git a/lib/dns/journal.c b/lib/dns/journal.c index 878255e4be..6981ae74c1 100644 --- a/lib/dns/journal.c +++ b/lib/dns/journal.c @@ -131,7 +131,7 @@ dns_db_createsoatuple(dns_db_t *db, dns_dbversion_t *ver, isc_mem_t *mctx, dns_name_t *zonename; zonename = dns_fixedname_initname(&fixed); - dns_name_copynf(dns_db_origin(db), zonename); + dns_name_copy(dns_db_origin(db), zonename); node = NULL; result = dns_db_findnode(db, zonename, false, &node); diff --git a/lib/dns/lookup.c b/lib/dns/lookup.c index ce489aeffc..d62aaee2f4 100644 --- a/lib/dns/lookup.c +++ b/lib/dns/lookup.c @@ -247,7 +247,7 @@ lookup_find(dns_lookup_t *lookup, dns_fetchevent_t *event) { if (result != ISC_R_SUCCESS) { break; } - dns_name_copynf(&cname.cname, name); + dns_name_copy(&cname.cname, name); dns_rdata_freestruct(&cname); want_restart = true; send_event = false; @@ -388,7 +388,7 @@ dns_lookup_create(isc_mem_t *mctx, const dns_name_t *name, dns_rdatatype_t type, dns_fixedname_init(&lookup->name); - dns_name_copynf(name, dns_fixedname_name(&lookup->name)); + dns_name_copy(name, dns_fixedname_name(&lookup->name)); lookup->type = type; lookup->view = NULL; diff --git a/lib/dns/masterdump.c b/lib/dns/masterdump.c index c8dcce5aa2..75cd0d2509 100644 --- a/lib/dns/masterdump.c +++ b/lib/dns/masterdump.c @@ -572,7 +572,7 @@ rdataset_totext(dns_rdataset_t *rdataset, const dns_name_t *owner_name, if (owner_name != NULL) { name = dns_fixedname_initname(&fixed); - dns_name_copynf(owner_name, name); + dns_name_copy(owner_name, name); dns_rdataset_getownercase(rdataset, name); } @@ -1286,7 +1286,7 @@ dump_rdatasets_raw(isc_mem_t *mctx, const dns_name_t *owner_name, dns_name_t *name; name = dns_fixedname_initname(&fixed); - dns_name_copynf(owner_name, name); + dns_name_copy(owner_name, name); for (result = dns_rdatasetiter_first(rdsiter); result == ISC_R_SUCCESS; result = dns_rdatasetiter_next(rdsiter)) { diff --git a/lib/dns/name.c b/lib/dns/name.c index e5715638d0..8400bcb20a 100644 --- a/lib/dns/name.c +++ b/lib/dns/name.c @@ -2463,7 +2463,7 @@ dns_name_fromstring2(dns_name_t *target, const char *src, } void -dns_name_copynf(const dns_name_t *source, dns_name_t *dest) { +dns_name_copy(const dns_name_t *source, dns_name_t *dest) { isc_buffer_t *target = NULL; unsigned char *ndata = NULL; diff --git a/lib/dns/nsec3.c b/lib/dns/nsec3.c index 7ff9e8df40..8a5c99a081 100644 --- a/lib/dns/nsec3.c +++ b/lib/dns/nsec3.c @@ -1964,7 +1964,7 @@ dns_nsec3_noexistnodata(dns_rdatatype_t type, const dns_name_t *name, */ if (dns_name_countlabels(zonename) == 0 || dns_name_issubdomain(zone, zonename)) { - dns_name_copynf(zone, zonename); + dns_name_copy(zone, zonename); } if (!dns_name_equal(zone, zonename)) { @@ -2123,7 +2123,7 @@ dns_nsec3_noexistnodata(dns_rdatatype_t type, const dns_name_t *name, "NSEC3 indicates potential closest " "encloser: '%s'", namebuf); - dns_name_copynf(qname, closest); + dns_name_copy(qname, closest); *setclosest = true; } dns_name_format(qname, namebuf, sizeof(namebuf)); @@ -2157,7 +2157,7 @@ dns_nsec3_noexistnodata(dns_rdatatype_t type, const dns_name_t *name, (dns_name_countlabels(nearest) == 0 || dns_name_issubdomain(nearest, qname))) { - dns_name_copynf(qname, nearest); + dns_name_copy(qname, nearest); *setnearest = true; } diff --git a/lib/dns/nta.c b/lib/dns/nta.c index bd0cbd093e..b4033b4aa9 100644 --- a/lib/dns/nta.c +++ b/lib/dns/nta.c @@ -317,7 +317,7 @@ nta_create(dns_ntatable_t *ntatable, const dns_name_t *name, isc_refcount_init(&nta->refcount, 1); nta->name = dns_fixedname_initname(&nta->fn); - dns_name_copynf(name, nta->name); + dns_name_copy(name, nta->name); nta->magic = NTA_MAGIC; diff --git a/lib/dns/order.c b/lib/dns/order.c index fbd1c9f6da..972c21f3e6 100644 --- a/lib/dns/order.c +++ b/lib/dns/order.c @@ -79,7 +79,7 @@ dns_order_add(dns_order_t *order, const dns_name_t *name, ent = isc_mem_get(order->mctx, sizeof(*ent)); dns_fixedname_init(&ent->name); - dns_name_copynf(name, dns_fixedname_name(&ent->name)); + dns_name_copy(name, dns_fixedname_name(&ent->name)); ent->rdtype = rdtype; ent->rdclass = rdclass; ent->mode = mode; diff --git a/lib/dns/rbt.c b/lib/dns/rbt.c index 9834baeb55..03ec0993ce 100644 --- a/lib/dns/rbt.c +++ b/lib/dns/rbt.c @@ -1100,7 +1100,7 @@ chain_name(dns_rbtnodechain_t *chain, dns_name_t *name, if (include_chain_end && chain->end != NULL) { NODENAME(chain->end, &nodename); - dns_name_copynf(&nodename, name); + dns_name_copy(&nodename, name); } else { dns_name_reset(name); } @@ -3296,7 +3296,7 @@ dns_rbtnodechain_current(dns_rbtnodechain_t *chain, dns_name_t *name, if (chain->level_count > 0) { result = chain_name(chain, origin, false); } else { - dns_name_copynf(dns_rootname, origin); + dns_name_copy(dns_rootname, origin); } } diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c index 4efa16bead..c16e811bab 100644 --- a/lib/dns/rbtdb.c +++ b/lib/dns/rbtdb.c @@ -3059,7 +3059,7 @@ zone_zonecut_callback(dns_rbtnode_t *node, dns_name_t *name, void *arg) { * is, we need to remember the node name. */ zcname = dns_fixedname_name(&search->zonecut_name); - dns_name_copynf(name, zcname); + dns_name_copy(name, zcname); search->copy_name = true; } } else { @@ -3229,7 +3229,7 @@ setup_delegation(rbtdb_search_t *search, dns_dbnode_t **nodep, */ if (foundname != NULL && search->copy_name) { zcname = dns_fixedname_name(&search->zonecut_name); - dns_name_copynf(zcname, foundname); + dns_name_copy(zcname, foundname); } if (nodep != NULL) { /* @@ -4079,7 +4079,7 @@ zone_find(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version, */ result = find_wildcard(&search, &node, name); if (result == ISC_R_SUCCESS) { - dns_name_copynf(name, foundname); + dns_name_copy(name, foundname); wild = true; goto found; } else if (result != ISC_R_NOTFOUND) { @@ -4799,7 +4799,7 @@ find_deepest_zonecut(rbtdb_search_t *search, dns_rbtnode_t *node, if (foundname != NULL) { dns_name_init(&name, NULL); dns_rbt_namefromnode(node, &name); - dns_name_copynf(&name, foundname); + dns_name_copy(&name, foundname); while (i > 0) { i--; level_node = search->chain.levels[i]; @@ -5368,7 +5368,7 @@ cache_findzonecut(dns_db_t *db, const dns_name_t *name, unsigned int options, } else if (result != ISC_R_SUCCESS) { goto tree_exit; } else if (!dcnull) { - dns_name_copynf(dcname, foundname); + dns_name_copy(dcname, foundname); } /* * We now go looking for an NS rdataset at the node. @@ -9832,7 +9832,7 @@ dbiterator_origin(dns_dbiterator_t *iterator, dns_name_t *name) { return (rbtdbiter->result); } - dns_name_copynf(origin, name); + dns_name_copy(origin, name); return (ISC_R_SUCCESS); } @@ -10136,7 +10136,7 @@ glue_nsdname_cb(void *arg, const dns_name_t *name, dns_rdatatype_t qtype) { glue = isc_mem_get(ctx->rbtdb->common.mctx, sizeof(*glue)); gluename = dns_fixedname_initname(&glue->fixedname); - dns_name_copynf(name_a, gluename); + dns_name_copy(name_a, gluename); dns_rdataset_init(&glue->rdataset_a); dns_rdataset_init(&glue->sigrdataset_a); @@ -10160,7 +10160,7 @@ glue_nsdname_cb(void *arg, const dns_name_t *name, dns_rdatatype_t qtype) { sizeof(*glue)); gluename = dns_fixedname_initname(&glue->fixedname); - dns_name_copynf(name_aaaa, gluename); + dns_name_copy(name_aaaa, gluename); dns_rdataset_init(&glue->rdataset_a); dns_rdataset_init(&glue->sigrdataset_a); @@ -10299,7 +10299,7 @@ restart: goto no_glue; } - dns_name_copynf(gluename, name); + dns_name_copy(gluename, name); if (dns_rdataset_isassociated(&ge->rdataset_a)) { result = dns_message_gettemprdataset(msg, &rdataset_a); diff --git a/lib/dns/rdataset.c b/lib/dns/rdataset.c index bf9e7af323..87fda079f9 100644 --- a/lib/dns/rdataset.c +++ b/lib/dns/rdataset.c @@ -440,7 +440,7 @@ towiresorted(dns_rdataset_t *rdataset, const dns_name_t *owner_name, added = 0; name = dns_fixedname_initname(&fixed); - dns_name_copynf(owner_name, name); + dns_name_copy(owner_name, name); dns_rdataset_getownercase(rdataset, name); offset = 0xffff; diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index 77db041903..9840016f9e 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -1636,7 +1636,7 @@ fcount_incr(fetchctx_t *fctx, bool force) { counter->dropped = 0; counter->domain = dns_fixedname_initname(&counter->fdname); - dns_name_copynf(&fctx->domain, counter->domain); + dns_name_copy(&fctx->domain, counter->domain); ISC_LIST_APPEND(dbucket->list, counter, link); } } else { @@ -5551,7 +5551,7 @@ clone_results(fetchctx_t *fctx) { continue; } name = dns_fixedname_name(&event->foundname); - dns_name_copynf(hname, name); + dns_name_copy(hname, name); event->result = hevent->result; dns_db_attach(hevent->db, &event->db); dns_db_attachnode(hevent->db, hevent->node, &event->node); @@ -5693,8 +5693,8 @@ validated(isc_task_t *task, isc_event_t *event) { */ if (vevent->proofs[DNS_VALIDATOR_NOQNAMEPROOF] != NULL) { wild = dns_fixedname_initname(&fwild); - dns_name_copynf(dns_fixedname_name(&vevent->validator->wild), - wild); + dns_name_copy(dns_fixedname_name(&vevent->validator->wild), + wild); } dns_validator_destroy(&vevent->validator); dns_message_detach(&valarg->message); @@ -6092,8 +6092,8 @@ answer_response: eresult == DNS_R_NCACHENXRRSET); } hevent->result = eresult; - dns_name_copynf(vevent->name, - dns_fixedname_name(&hevent->foundname)); + dns_name_copy(vevent->name, + dns_fixedname_name(&hevent->foundname)); dns_db_attach(fctx->cache, &hevent->db); dns_db_transfernode(fctx->cache, &node, &hevent->node); clone_results(fctx); @@ -6323,7 +6323,7 @@ cache_name(fetchctx_t *fctx, dns_name_t *name, dns_message_t *message, if (event != NULL) { adbp = &event->db; aname = dns_fixedname_name(&event->foundname); - dns_name_copynf(name, aname); + dns_name_copy(name, aname); anodep = &event->node; /* * If this is an ANY, SIG or RRSIG query, we're not @@ -6942,7 +6942,7 @@ ncache_message(fetchctx_t *fctx, dns_message_t *message, if (event != NULL) { adbp = &event->db; aname = dns_fixedname_name(&event->foundname); - dns_name_copynf(name, aname); + dns_name_copy(name, aname); anodep = &event->node; ardataset = event->rdataset; } @@ -7473,7 +7473,7 @@ resume_dslookup(isc_task_t *task, isc_event_t *event) { * Retrieve state from fctx->nsfetch before we destroy it. */ domain = dns_fixedname_initname(&fixed); - dns_name_copynf(&fctx->nsfetch->private->domain, domain); + dns_name_copy(&fctx->nsfetch->private->domain, domain); if (dns_name_equal(&fctx->nsname, domain)) { if (dns_rdataset_isassociated(fevent->rdataset)) { dns_rdataset_disassociate(fevent->rdataset); diff --git a/lib/dns/rrl.c b/lib/dns/rrl.c index 36fcad996b..0bde96a7c4 100644 --- a/lib/dns/rrl.c +++ b/lib/dns/rrl.c @@ -933,8 +933,8 @@ make_log_buf(dns_rrl_t *rrl, dns_rrl_entry_t *e, const char *str1, e->log_qname = qbuf->index; qbuf->e = e; dns_fixedname_init(&qbuf->qname); - dns_name_copynf(qname, dns_fixedname_name( - &qbuf->qname)); + dns_name_copy(qname, + dns_fixedname_name(&qbuf->qname)); } } if (qbuf != NULL) { diff --git a/lib/dns/sdb.c b/lib/dns/sdb.c index d9de422409..b22a8779ff 100644 --- a/lib/dns/sdb.c +++ b/lib/dns/sdb.c @@ -999,7 +999,7 @@ findext(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version, } if (foundname != NULL) { - dns_name_copynf(xname, foundname); + dns_name_copy(xname, foundname); } if (nodep != NULL) { @@ -1542,7 +1542,7 @@ dbiterator_current(dns_dbiterator_t *iterator, dns_dbnode_t **nodep, attachnode(iterator->db, sdbiter->current, nodep); if (name != NULL) { - dns_name_copynf(sdbiter->current->name, name); + dns_name_copy(sdbiter->current->name, name); return (ISC_R_SUCCESS); } return (ISC_R_SUCCESS); @@ -1557,7 +1557,7 @@ dbiterator_pause(dns_dbiterator_t *iterator) { static isc_result_t dbiterator_origin(dns_dbiterator_t *iterator, dns_name_t *name) { UNUSED(iterator); - dns_name_copynf(dns_rootname, name); + dns_name_copy(dns_rootname, name); return (ISC_R_SUCCESS); } diff --git a/lib/dns/sdlz.c b/lib/dns/sdlz.c index c8a615a0f3..4eb0a1aeeb 100644 --- a/lib/dns/sdlz.c +++ b/lib/dns/sdlz.c @@ -993,7 +993,7 @@ findext(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version, } if (foundname != NULL) { - dns_name_copynf(xname, foundname); + dns_name_copy(xname, foundname); } if (nodep != NULL) { @@ -1380,7 +1380,7 @@ dbiterator_current(dns_dbiterator_t *iterator, dns_dbnode_t **nodep, attachnode(iterator->db, sdlziter->current, nodep); if (name != NULL) { - dns_name_copynf(sdlziter->current->name, name); + dns_name_copy(sdlziter->current->name, name); return (ISC_R_SUCCESS); } return (ISC_R_SUCCESS); @@ -1395,7 +1395,7 @@ dbiterator_pause(dns_dbiterator_t *iterator) { static isc_result_t dbiterator_origin(dns_dbiterator_t *iterator, dns_name_t *name) { UNUSED(iterator); - dns_name_copynf(dns_rootname, name); + dns_name_copy(dns_rootname, name); return (ISC_R_SUCCESS); } diff --git a/lib/dns/tkey.c b/lib/dns/tkey.c index 4267cbf184..f0489d4834 100644 --- a/lib/dns/tkey.c +++ b/lib/dns/tkey.c @@ -180,7 +180,7 @@ add_rdata_to_list(dns_message_t *msg, dns_name_t *name, dns_rdata_t *rdata, dns_message_takebuffer(msg, &tmprdatabuf); RETERR(dns_message_gettempname(msg, &newname)); - dns_name_copynf(name, newname); + dns_name_copy(name, newname); RETERR(dns_message_gettemprdatalist(msg, &newlist)); newlist->rdclass = newrdata->rdclass; @@ -821,7 +821,7 @@ dns_tkey_processquery(dns_message_t *msg, dns_tkeyctx_t *tctx, if (!dns_name_equal(qname, dns_rootname)) { unsigned int n = dns_name_countlabels(qname); - dns_name_copynf(qname, keyname); + dns_name_copy(qname, keyname); dns_name_getlabelsequence(keyname, 0, n - 1, keyname); } else { static char hexdigits[16] = { '0', '1', '2', '3', @@ -986,8 +986,8 @@ buildquery(dns_message_t *msg, const dns_name_t *name, dns_rdata_tkey_t *tkey, RETERR(dns_message_gettemprdataset(msg, &tkeyset)); RETERR(dns_rdatalist_tordataset(tkeylist, tkeyset)); - dns_name_copynf(name, qname); - dns_name_copynf(name, aname); + dns_name_copy(name, qname); + dns_name_copy(name, aname); ISC_LIST_APPEND(qname->list, question, link); ISC_LIST_APPEND(aname->list, tkeyset, link); @@ -1531,7 +1531,7 @@ dns_tkey_gssnegotiate(dns_message_t *qmsg, dns_message_t *rmsg, dns_fixedname_t fixed; dns_fixedname_init(&fixed); - dns_name_copynf(tkeyname, dns_fixedname_name(&fixed)); + dns_name_copy(tkeyname, dns_fixedname_name(&fixed)); tkeyname = dns_fixedname_name(&fixed); tkey.common.rdclass = dns_rdataclass_any; diff --git a/lib/dns/tsig.c b/lib/dns/tsig.c index a35a959179..1a6c729b1b 100644 --- a/lib/dns/tsig.c +++ b/lib/dns/tsig.c @@ -1020,7 +1020,7 @@ dns_tsig_sign(dns_message_t *msg) { if (ret != ISC_R_SUCCESS) { goto cleanup_rdata; } - dns_name_copynf(&key->name, owner); + dns_name_copy(&key->name, owner); ret = dns_message_gettemprdatalist(msg, &datalist); if (ret != ISC_R_SUCCESS) { diff --git a/lib/dns/validator.c b/lib/dns/validator.c index e54fc70b2e..18c35466e8 100644 --- a/lib/dns/validator.c +++ b/lib/dns/validator.c @@ -1472,7 +1472,7 @@ again: * for the NSEC3 NOQNAME proof. */ closest = dns_fixedname_name(&val->closest); - dns_name_copynf(wild, closest); + dns_name_copy(wild, closest); labels = dns_name_countlabels(closest) - 1; dns_name_getlabelsequence(closest, 1, labels, closest); val->attributes |= VALATTR_NEEDNOQNAME; @@ -2212,7 +2212,7 @@ findnsec3proofs(dns_validator_t *val) { validator_log(val, ISC_LOG_DEBUG(3), "closest encloser from wildcard signature '%s'", namebuf); - dns_name_copynf(dns_fixedname_name(&val->closest), closest); + dns_name_copy(dns_fixedname_name(&val->closest), closest); closestp = NULL; setclosestp = NULL; } else { @@ -2657,7 +2657,7 @@ seek_ds(dns_validator_t *val, isc_result_t *resp) { dns_name_t *tname = dns_fixedname_initname(&val->fname); if (val->labels == dns_name_countlabels(val->event->name)) { - dns_name_copynf(val->event->name, tname); + dns_name_copy(val->event->name, tname); } else { dns_name_split(val->event->name, val->labels, NULL, tname); } @@ -2893,7 +2893,7 @@ proveunsecure(dns_validator_t *val, bool have_ds, bool resume) { */ val->attributes |= VALATTR_INSECURITY; - dns_name_copynf(val->event->name, secroot); + dns_name_copy(val->event->name, secroot); /* * If this is a response to a DS query, we need to look in diff --git a/lib/dns/view.c b/lib/dns/view.c index 2c5662473e..0d2f854509 100644 --- a/lib/dns/view.c +++ b/lib/dns/view.c @@ -1384,7 +1384,7 @@ db_find: * We found an answer, but the cache may be better. */ zfname = dns_fixedname_name(&zfixedname); - dns_name_copynf(fname, zfname); + dns_name_copy(fname, zfname); dns_rdataset_clone(rdataset, &zrdataset); dns_rdataset_disassociate(rdataset); if (sigrdataset != NULL && @@ -1446,9 +1446,9 @@ finish: dns_rdataset_disassociate(sigrdataset); } } - dns_name_copynf(zfname, fname); + dns_name_copy(zfname, fname); if (dcname != NULL) { - dns_name_copynf(zfname, dcname); + dns_name_copy(zfname, dcname); } dns_rdataset_clone(&zrdataset, rdataset); if (sigrdataset != NULL && @@ -1472,7 +1472,7 @@ finish: } result = ISC_R_NOTFOUND; } else if (dcname != NULL) { - dns_name_copynf(fname, dcname); + dns_name_copy(fname, dcname); } } @@ -2272,7 +2272,7 @@ dns_view_searchdlz(dns_view_t *view, const dns_name_t *name, */ for (i = namelabels; i > minlabels && i > 1; i--) { if (i == namelabels) { - dns_name_copynf(name, zonename); + dns_name_copy(name, zonename); } else { dns_name_split(name, i, NULL, zonename); } diff --git a/lib/dns/win32/libdns.def.in b/lib/dns/win32/libdns.def.in index 1eba5af96d..1683cccb7d 100644 --- a/lib/dns/win32/libdns.def.in +++ b/lib/dns/win32/libdns.def.in @@ -576,7 +576,7 @@ dns_name_caseequal dns_name_clone dns_name_compare dns_name_concatenate -dns_name_copynf +dns_name_copy dns_name_countlabels dns_name_digest dns_name_downcase diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 3c5ef3c5a1..775a8f0034 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -3248,7 +3248,7 @@ integrity_checks(dns_zone_t *zone, dns_db_t *db) { /* * Remember bottom of zone due to NS. */ - dns_name_copynf(name, bottom); + dns_name_copy(name, bottom); result = dns_rdataset_first(&rdataset); while (result == ISC_R_SUCCESS) { @@ -3272,7 +3272,7 @@ integrity_checks(dns_zone_t *zone, dns_db_t *db) { /* * Remember bottom of zone due to DNAME. */ - dns_name_copynf(name, bottom); + dns_name_copy(name, bottom); dns_rdataset_disassociate(&rdataset); } @@ -8429,7 +8429,7 @@ zone_nsec3chain(dns_zone_t *zone) { * Remember the obscuring name so that * we skip all obscured names. */ - dns_name_copynf(found, name); + dns_name_copy(found, name); delegation = true; goto next_addnode; } @@ -8692,7 +8692,7 @@ zone_nsec3chain(dns_zone_t *zone) { * Remember the obscuring name so that * we skip all obscured names. */ - dns_name_copynf(found, name); + dns_name_copy(found, name); delegation = true; goto next_removenode; } @@ -9440,7 +9440,7 @@ zone_sign(dns_zone_t *zone) { * Remember the obscuring name so that * we skip all obscured names. */ - dns_name_copynf(found, name); + dns_name_copy(found, name); is_bottom_of_zone = true; goto next_node; } diff --git a/lib/dns/zoneverify.c b/lib/dns/zoneverify.c index a7780aa87e..4ddb2430c5 100644 --- a/lib/dns/zoneverify.c +++ b/lib/dns/zoneverify.c @@ -1783,11 +1783,11 @@ verify_nodes(vctx_t *vctx, isc_result_t *vresult) { } if (is_delegation(vctx, name, node, NULL)) { zonecut = dns_fixedname_name(&fzonecut); - dns_name_copynf(name, zonecut); + dns_name_copy(name, zonecut); isdelegation = true; } else if (has_dname(vctx, node)) { zonecut = dns_fixedname_name(&fzonecut); - dns_name_copynf(name, zonecut); + dns_name_copy(name, zonecut); } nextnode = NULL; result = dns_dbiterator_next(dbiter); @@ -1866,7 +1866,7 @@ verify_nodes(vctx_t *vctx, isc_result_t *vresult) { } else { prevname = dns_fixedname_name(&fprevname); } - dns_name_copynf(name, prevname); + dns_name_copy(name, prevname); if (*vresult == ISC_R_SUCCESS) { *vresult = tvresult; } diff --git a/lib/ns/query.c b/lib/ns/query.c index 7d01872f53..a6fcaec824 100644 --- a/lib/ns/query.c +++ b/lib/ns/query.c @@ -2885,7 +2885,7 @@ rpz_rrset_find(ns_client_t *client, dns_name_t *name, dns_rdatatype_t type, query_rpzfetch(client, name, type); result = DNS_R_NXRRSET; } else { - dns_name_copynf(name, st->r_name); + dns_name_copy(name, st->r_name); result = ns_query_recurse(client, type, st->r_name, NULL, NULL, resuming); if (result == ISC_R_SUCCESS) { @@ -3151,7 +3151,7 @@ rpz_save_p(dns_rpz_st_t *st, dns_rpz_zone_t *rpz, dns_rpz_type_t rpz_type, st->m.rpz = rpz; st->m.type = rpz_type; st->m.policy = policy; - dns_name_copynf(p_name, st->p_name); + dns_name_copy(p_name, st->p_name); st->m.prefix = prefix; st->m.result = result; SAVE(st->m.zone, *zonep); @@ -4672,7 +4672,7 @@ again: found); } } else if (found != NULL) { - dns_name_copynf(&name, found); + dns_name_copy(&name, found); } return; } @@ -4885,7 +4885,7 @@ redirect(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset, } CTRACE(ISC_LOG_DEBUG(3), "redirect: found data: done"); - dns_name_copynf(found, name); + dns_name_copy(found, name); if (dns_rdataset_isassociated(rdataset)) { dns_rdataset_disassociate(rdataset); } @@ -4994,7 +4994,7 @@ redirect2(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset, return (ISC_R_NOTFOUND); } } else { - dns_name_copynf(redirectname, client->view->redirectzone); + dns_name_copy(redirectname, client->view->redirectzone); } options = 0; @@ -5070,7 +5070,7 @@ redirect2(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset, result = dns_name_concatenate(found, dns_rootname, found, NULL); RUNTIME_CHECK(result == ISC_R_SUCCESS); - dns_name_copynf(found, name); + dns_name_copy(found, name); if (dns_rdataset_isassociated(rdataset)) { dns_rdataset_disassociate(rdataset); } @@ -5819,7 +5819,7 @@ query_lookup(query_ctx_t *qctx) { * Fixup fname and sigrdataset. */ if (qctx->dns64 && qctx->rpz) { - dns_name_copynf(qctx->client->query.qname, qctx->fname); + dns_name_copy(qctx->client->query.qname, qctx->fname); if (qctx->sigrdataset != NULL && dns_rdataset_isassociated(qctx->sigrdataset)) { dns_rdataset_disassociate(qctx->sigrdataset); @@ -6252,14 +6252,14 @@ recparam_update(ns_query_recparam_t *param, dns_rdatatype_t qtype, param->qname = NULL; } else { param->qname = dns_fixedname_initname(¶m->fqname); - dns_name_copynf(qname, param->qname); + dns_name_copy(qname, param->qname); } if (qdomain == NULL) { param->qdomain = NULL; } else { param->qdomain = dns_fixedname_initname(¶m->fqdomain); - dns_name_copynf(qdomain, param->qdomain); + dns_name_copy(qdomain, param->qdomain); } } static atomic_uint_fast32_t last_soft, last_hard; @@ -6638,7 +6638,7 @@ query_resume(query_ctx_t *qctx) { tname = dns_fixedname_name(&qctx->event->foundname); } - dns_name_copynf(tname, qctx->fname); + dns_name_copy(tname, qctx->fname); if (qctx->rpz_st != NULL && (qctx->rpz_st->state & DNS_RPZ_RECURSING) != 0) { @@ -7143,7 +7143,7 @@ query_checkrpz(query_ctx_t *qctx, isc_result_t result) { SAVE(qctx->rpz_st->q.node, qctx->node); SAVE(qctx->rpz_st->q.rdataset, qctx->rdataset); SAVE(qctx->rpz_st->q.sigrdataset, qctx->sigrdataset); - dns_name_copynf(qctx->fname, qctx->rpz_st->fname); + dns_name_copy(qctx->fname, qctx->rpz_st->fname); qctx->rpz_st->q.result = result; qctx->client->query.attributes |= NS_QUERYATTR_RECURSING; return (ISC_R_COMPLETE); @@ -7168,7 +7168,7 @@ query_checkrpz(query_ctx_t *qctx, isc_result_t result) { * we looked up even if we were stopped short * in recursion or for a deferral. */ - dns_name_copynf(qctx->client->query.qname, qctx->fname); + dns_name_copy(qctx->client->query.qname, qctx->fname); rpz_clean(&qctx->zone, &qctx->db, &qctx->node, NULL); if (qctx->rpz_st->m.rdataset != NULL) { ns_client_putrdataset(qctx->client, &qctx->rdataset); @@ -7344,7 +7344,7 @@ query_rpzcname(query_ctx_t *qctx, dns_name_t *cname) { return (result); } } else { - dns_name_copynf(cname, qctx->fname); + dns_name_copy(cname, qctx->fname); } ns_client_keepname(client, qctx->fname, qctx->dbuf); @@ -8651,7 +8651,7 @@ query_prepare_delegation_response(query_ctx_t *qctx) { * it here in case we need it. */ dns_fixedname_init(&qctx->dsname); - dns_name_copynf(qctx->fname, dns_fixedname_name(&qctx->dsname)); + dns_name_copy(qctx->fname, dns_fixedname_name(&qctx->dsname)); /* * This is the best answer. @@ -9127,7 +9127,7 @@ query_nodata(query_ctx_t *qctx, isc_result_t res) { return (ns_query_done(qctx)); } } - dns_name_copynf(qctx->client->query.qname, qctx->fname); + dns_name_copy(qctx->client->query.qname, qctx->fname); qctx->dns64 = false; #ifdef dns64_bis_return_excluded_addresses /* @@ -9538,8 +9538,7 @@ query_redirect(query_ctx_t *qctx) { SAVE(qctx->client->query.redirect.sigrdataset, qctx->sigrdataset); qctx->client->query.redirect.result = DNS_R_NCACHENXDOMAIN; - dns_name_copynf(qctx->fname, - qctx->client->query.redirect.fname); + dns_name_copy(qctx->fname, qctx->client->query.redirect.fname); qctx->client->query.redirect.authoritative = qctx->authoritative; qctx->client->query.redirect.is_zone = qctx->is_zone; @@ -9648,7 +9647,7 @@ query_synthnodata(query_ctx_t *qctx, const dns_name_t *signer, goto cleanup; } - dns_name_copynf(signer, name); + dns_name_copy(signer, name); /* * Add SOA record. Omit the RRSIG if DNSSEC was not requested. @@ -9713,7 +9712,7 @@ query_synthwildcard(query_ctx_t *qctx, dns_rdataset_t *rdataset, result = ISC_R_NOMEMORY; goto cleanup; } - dns_name_copynf(qctx->client->query.qname, name); + dns_name_copy(qctx->client->query.qname, name); cloneset = ns_client_newrdataset(qctx->client); if (cloneset == NULL) { @@ -9804,7 +9803,7 @@ query_synthcnamewildcard(query_ctx_t *qctx, dns_rdataset_t *rdataset, RUNTIME_CHECK(result == ISC_R_SUCCESS); dns_rdata_reset(&rdata); - dns_name_copynf(&cname.cname, tname); + dns_name_copy(&cname.cname, tname); dns_rdata_freestruct(&cname); ns_client_qnamereplace(qctx->client, tname); @@ -9866,7 +9865,7 @@ query_synthnxdomain(query_ctx_t *qctx, dns_name_t *nowild, goto cleanup; } - dns_name_copynf(signer, name); + dns_name_copy(signer, name); /* * Add SOA record. Omit the RRSIG if DNSSEC was not requested. @@ -9896,7 +9895,7 @@ query_synthnxdomain(query_ctx_t *qctx, dns_name_t *nowild, goto cleanup; } - dns_name_copynf(nowild, name); + dns_name_copy(nowild, name); cloneset = ns_client_newrdataset(qctx->client); clonesigset = ns_client_newrdataset(qctx->client); @@ -9949,7 +9948,7 @@ checksignames(dns_name_t *signer, dns_rdataset_t *sigrdataset) { result = dns_rdata_tostruct(&rdata, &rrsig, NULL); RUNTIME_CHECK(result == ISC_R_SUCCESS); if (dns_name_countlabels(signer) == 0) { - dns_name_copynf(&rrsig.signer, signer); + dns_name_copy(&rrsig.signer, signer); } else if (!dns_name_equal(signer, &rrsig.signer)) { return (ISC_R_FAILURE); } @@ -10370,8 +10369,8 @@ query_cname(query_ctx_t *qctx) { (qctx->fname->attributes & DNS_NAMEATTR_WILDCARD) != 0) { dns_fixedname_init(&qctx->wildcardname); - dns_name_copynf(qctx->fname, - dns_fixedname_name(&qctx->wildcardname)); + dns_name_copy(qctx->fname, + dns_fixedname_name(&qctx->wildcardname)); qctx->need_wildcardproof = true; } @@ -10416,7 +10415,7 @@ query_cname(query_ctx_t *qctx) { RUNTIME_CHECK(result == ISC_R_SUCCESS); dns_rdata_reset(&rdata); - dns_name_copynf(&cname.cname, tname); + dns_name_copy(&cname.cname, tname); dns_rdata_freestruct(&cname); ns_client_qnamereplace(qctx->client, tname); @@ -10481,8 +10480,8 @@ query_dname(query_ctx_t *qctx) { (qctx->fname->attributes & DNS_NAMEATTR_WILDCARD) != 0) { dns_fixedname_init(&qctx->wildcardname); - dns_name_copynf(qctx->fname, - dns_fixedname_name(&qctx->wildcardname)); + dns_name_copy(qctx->fname, + dns_fixedname_name(&qctx->wildcardname)); qctx->need_wildcardproof = true; } @@ -10518,7 +10517,7 @@ query_dname(query_ctx_t *qctx) { RUNTIME_CHECK(result == ISC_R_SUCCESS); dns_rdata_reset(&rdata); - dns_name_copynf(&dname.dname, tname); + dns_name_copy(&dname.dname, tname); dns_rdata_freestruct(&dname); /* @@ -10617,7 +10616,7 @@ query_addcname(query_ctx_t *qctx, dns_trust_t trust, dns_ttl_t ttl) { return (result); } - dns_name_copynf(client->query.qname, aname); + dns_name_copy(client->query.qname, aname); result = dns_message_gettemprdatalist(client->message, &rdatalist); if (result != ISC_R_SUCCESS) { @@ -10687,8 +10686,8 @@ query_prepresponse(query_ctx_t *qctx) { (qctx->fname->attributes & DNS_NAMEATTR_WILDCARD) != 0) { dns_fixedname_init(&qctx->wildcardname); - dns_name_copynf(qctx->fname, - dns_fixedname_name(&qctx->wildcardname)); + dns_name_copy(qctx->fname, + dns_fixedname_name(&qctx->wildcardname)); qctx->need_wildcardproof = true; } @@ -11279,7 +11278,7 @@ again: /* * Find the closest encloser. */ - dns_name_copynf(name, cname); + dns_name_copy(name, cname); while (result == DNS_R_NXDOMAIN) { labels = dns_name_countlabels(cname) - 1; /* @@ -11339,7 +11338,7 @@ again: */ labels = dns_name_countlabels(cname) + 1; if (dns_name_countlabels(name) == labels) { - dns_name_copynf(name, wname); + dns_name_copy(name, wname); } else { dns_name_split(name, labels, NULL, wname); } diff --git a/lib/ns/update.c b/lib/ns/update.c index 3cb9356998..2820ff769e 100644 --- a/lib/ns/update.c +++ b/lib/ns/update.c @@ -713,7 +713,7 @@ foreach_rr(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, add_rr_prepare_ctx_t *ctx = rr_action_data; ctx->oldname = dns_fixedname_initname(&fixed); - dns_name_copynf(name, ctx->oldname); + dns_name_copy(name, ctx->oldname); dns_rdataset_getownercase(&rdataset, ctx->oldname); } @@ -1057,7 +1057,7 @@ temp_check(isc_mem_t *mctx, dns_diff_t *temp, dns_db_t *db, t = ISC_LIST_HEAD(temp->tuples); while (t != NULL) { name = &t->name; - dns_name_copynf(name, tmpname); + dns_name_copy(name, tmpname); *typep = t->rdata.type; /* A new unique name begins here. */ From f3f1cab05e05c9bdd5da91f3ab159ec6658ec7f4 Mon Sep 17 00:00:00 2001 From: Evan Hunt Date: Fri, 21 May 2021 17:59:09 -0700 Subject: [PATCH 4/6] clean up coccinelle patches for dns_name_copy() no need for semantic patches to use dns_name_copynf() any longer. --- cocci/dns_name_copy-with-result.spatch | 6 +++--- cocci/dns_name_copy.spatch | 8 ++++---- cocci/dns_name_copynf.spatch | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cocci/dns_name_copy-with-result.spatch b/cocci/dns_name_copy-with-result.spatch index c4555c3a76..129d421d67 100644 --- a/cocci/dns_name_copy-with-result.spatch +++ b/cocci/dns_name_copy-with-result.spatch @@ -5,7 +5,7 @@ statement S; - V = dns_name_copy(E1, E2, NULL); - if (V != ISC_R_SUCCESS) S -+ RUNTIME_CHECK(dns_name_copy(E1, E2, NULL) == ISC_R_SUCCESS); ++ dns_name_copy(E1, E2); @@ expression V, E1, E2; @@ -14,7 +14,7 @@ statement S1, S2; - V = dns_name_copy(E1, E2, NULL); - if (V == ISC_R_SUCCESS) S1 else S2; -+ RUNTIME_CHECK(dns_name_copy(E1, E2, NULL) == ISC_R_SUCCESS); ++ dns_name_copy(E1, E2); + S2 @@ @@ -25,6 +25,6 @@ statement S1, S2; - V = dns_name_copy(E1, E2, NULL); - S1 - if (V == ISC_R_SUCCESS) S2 -+ RUNTIME_CHECK(dns_name_copy(E1, E2, NULL) == ISC_R_SUCCESS); ++ dns_name_copy(E1, E2): + S1 + S2 diff --git a/cocci/dns_name_copy.spatch b/cocci/dns_name_copy.spatch index 89e340cb4c..0fa7e8557f 100644 --- a/cocci/dns_name_copy.spatch +++ b/cocci/dns_name_copy.spatch @@ -3,21 +3,21 @@ expression E1, E2; @@ - dns_name_copy(E1, E2, NULL); -+ RUNTIME_CHECK(dns_name_copy(E1, E2, NULL) == ISC_R_SUCCESS); ++ dns_name_copy(E1, E2); @@ expression E1, E2; @@ - (void)dns_name_copy(E1, E2, NULL); -+ RUNTIME_CHECK(dns_name_copy(E1, E2, NULL) == ISC_R_SUCCESS); ++ dns_name_copy(E1, E2); @@ expression E1, E2; @@ - return (dns_name_copy(E1, E2, NULL)); -+ RUNTIME_CHECK(dns_name_copy(E1, E2, NULL) == ISC_R_SUCCESS); ++ dns_name_copy(E1, E2); + return (ISC_R_SUCCESS); // ./bin/named/query.c processing broken with this rule, fix manually @@ -27,4 +27,4 @@ expression E1, E2; // // - V = dns_name_copy(E1, E2, NULL); // - RUNTIME_CHECK(V == ISC_R_SUCCESS); -// + RUNTIME_CHECK(dns_name_copy(E1, E2, NULL) == ISC_R_SUCCESS); +// + dns_name_copy(E1, E2); diff --git a/cocci/dns_name_copynf.spatch b/cocci/dns_name_copynf.spatch index 7853b679e0..079a40e9d7 100644 --- a/cocci/dns_name_copynf.spatch +++ b/cocci/dns_name_copynf.spatch @@ -3,4 +3,4 @@ expression E1, E2; @@ - RUNTIME_CHECK(dns_name_copy(E1, E2, NULL) == ISC_R_SUCCESS); -+ dns_name_copynf(E1, E2); ++ dns_name_copy(E1, E2); From 1fa6f8662e72ac4425a984dedb1a8e7647249024 Mon Sep 17 00:00:00 2001 From: Evan Hunt Date: Fri, 21 May 2021 18:06:57 -0700 Subject: [PATCH 5/6] update dev.md with name copying information revise the Developer Information document with updated information about copying names. --- doc/dev/dev.md | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/doc/dev/dev.md b/doc/dev/dev.md index 7dfef18ced..6afc0d1ebf 100644 --- a/doc/dev/dev.md +++ b/doc/dev/dev.md @@ -679,12 +679,35 @@ once. ##### Copying -There are two methods for copying name objects: `dns_name_clone()` -makes a target refer to the same data as the source without copying -the data, so the source must not be changed while the target is still in -use. `dns_name_dup()` and `dns_name_dupwithoffsets()` create a true -copy of the name, dynamically allocating memory as needed; targets -created by these must be freed by calling `dns_name_free()`. +There are three methods for copying name objects: + +- `dns_name_clone()` makes a target refer to the same data as the + source, but does not copy the data. The source must not be changed + or freed while the target is still in use. + +- `dns_name_copy()` copies the source data from one name object into + another, which must already have a dedicated buffer associated with + it to receive the data. The target name can have a buffer assigned + to it using `dns_name_setbuffer()`: + + dns_name_t target; + unsigned char namedata[DNS_NAME_MAXWIRE]; + isc_buffer_t buffer; + + isc_buffer_init(&buffer, namedata, sizeof(namedata)); + dns_name_init(&target, NULL); + dns_name_setbuffer(target, &buffer); + dns_name_copy(source, &target); + + Using a [fixed name](#fixedname) (see below) for the target + ensures that it has sufficient buffer space without needing to set + a buffer. + +- `dns_name_dup()` copies a name into a new name object, dynamically + allocating buffer space as needed. `dns_name_dupwithoffsets()` does + the same, but also dynamically allocates space for the copied offset + table. Targets created by these functions must be freed by calling + `dns_name_free()`. ##### Wire format @@ -799,7 +822,7 @@ not all of this information is required: * `dns_name_caseequal()`: same as `dns_name_equal()`, but case-sensitive * `dns_name_issubdomain()`: returns `true` if one name contains another -##### Fixed names +##### Fixed names `dns_fixedname_t` is a convenience type containing a name, an offsets table, and a dedicated buffer big enough for the longest possible DNS From d06b1ed11fb5c0abdc3c31d6a6d6cf2a3e5e3ee4 Mon Sep 17 00:00:00 2001 From: Evan Hunt Date: Fri, 21 May 2021 17:31:57 -0700 Subject: [PATCH 6/6] CHANGES --- CHANGES | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGES b/CHANGES index 3db805e339..a2d6de8d31 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ +5645. [cleanup] Remove the rarely-used dns_name_copy() function + and rename dns_name_copynf() to dns_name_copy(). + [GL !5081] + 5644. [bug] Fix a race condition in reading and writing key files for KASP zones in multiple views. [GL #1875]