diff --git a/bin/check/check-tool.c b/bin/check/check-tool.c index 794160e04b5..bd2733b69a3 100644 --- a/bin/check/check-tool.c +++ b/bin/check/check-tool.c @@ -655,7 +655,7 @@ load_zone(isc_mem_t *mctx, const char *zonename, const char *filename, isc_buffer_constinit(&buffer, zonename, strlen(zonename)); isc_buffer_add(&buffer, strlen(zonename)); origin = dns_fixedname_initname(&fixorigin); - CHECK(dns_name_fromtext(origin, &buffer, dns_rootname, 0, NULL)); + CHECK(dns_name_fromtext(origin, &buffer, dns_rootname, 0)); dns_zone_setorigin(zone, origin); dns_zone_setdbtype(zone, 1, (const char *const *)dbtype); if (strcmp(filename, "-") == 0) { diff --git a/bin/delv/delv.c b/bin/delv/delv.c index 2088088d464..1d63d143fd5 100644 --- a/bin/delv/delv.c +++ b/bin/delv/delv.c @@ -597,7 +597,7 @@ convert_name(dns_fixedname_t *fn, dns_name_t **name, const char *text) { isc_buffer_add(&b, len); n = dns_fixedname_initname(fn); - result = dns_name_fromtext(n, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(n, &b, dns_rootname, 0); if (result != ISC_R_SUCCESS) { delv_log(ISC_LOG_ERROR, "failed to convert name %s: %s", text, isc_result_totext(result)); diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c index cca1df70d24..69a310d2f3c 100644 --- a/bin/dig/dighost.c +++ b/bin/dig/dighost.c @@ -858,14 +858,14 @@ requeue_lookup(dig_lookup_t *lookold, bool servers) { void setup_text_key(void) { isc_result_t result; - dns_name_t keyname; + dns_fixedname_t fkey; + dns_name_t *keyname = dns_fixedname_initname(&fkey); isc_buffer_t secretbuf; unsigned int secretsize; unsigned char *secretstore; debug("setup_text_key()"); isc_buffer_allocate(mctx, &namebuf, MXNAME); - dns_name_init(&keyname); isc_buffer_putstr(namebuf, keynametext); secretsize = (unsigned int)strlen(keysecret) * 3 / 4; secretstore = isc_mem_allocate(mctx, secretsize); @@ -882,12 +882,12 @@ setup_text_key(void) { goto failure; } - result = dns_name_fromtext(&keyname, namebuf, dns_rootname, 0, namebuf); + result = dns_name_fromtext(keyname, namebuf, dns_rootname, 0); if (result != ISC_R_SUCCESS) { goto failure; } - result = dns_tsigkey_create(&keyname, hmac_alg, secretstore, + result = dns_tsigkey_create(keyname, hmac_alg, secretstore, (int)secretsize, mctx, &tsigkey); failure: if (result != ISC_R_SUCCESS) { @@ -898,7 +898,6 @@ setup_text_key(void) { } isc_mem_free(mctx, secretstore); - dns_name_invalidate(&keyname); isc_buffer_free(&namebuf); } @@ -2206,11 +2205,6 @@ setup_lookup(dig_lookup_t *lookup) { } dns_message_gettempname(lookup->sendmsg, &lookup->name); - isc_buffer_init(&lookup->namebuf, lookup->name_space, - sizeof(lookup->name_space)); - isc_buffer_init(&lookup->onamebuf, lookup->oname_space, - sizeof(lookup->oname_space)); - /* * We cannot convert `textname' and `origin' separately. * `textname' doesn't contain TLD, but local mapping needs @@ -2258,8 +2252,7 @@ setup_lookup(dig_lookup_t *lookup) { len = (unsigned int)strlen(origin); isc_buffer_init(&b, origin, len); isc_buffer_add(&b, len); - result = dns_name_fromtext(lookup->oname, &b, dns_rootname, 0, - &lookup->onamebuf); + result = dns_name_fromtext(lookup->oname, &b, dns_rootname, 0); if (result != ISC_R_SUCCESS) { dns_message_puttempname(lookup->sendmsg, &lookup->name); dns_message_puttempname(lookup->sendmsg, @@ -2277,12 +2270,12 @@ setup_lookup(dig_lookup_t *lookup) { len = (unsigned int)strlen(textname); isc_buffer_init(&b, textname, len); isc_buffer_add(&b, len); - result = dns_name_fromtext(name, &b, NULL, 0, NULL); + result = dns_name_fromtext(name, &b, NULL, 0); if (result == ISC_R_SUCCESS) { if (!dns_name_isabsolute(name)) { result = dns_name_concatenate( name, lookup->oname, - lookup->name, &lookup->namebuf); + lookup->name); } else { dns_name_copy(name, lookup->name); } @@ -2310,8 +2303,7 @@ setup_lookup(dig_lookup_t *lookup) { isc_buffer_init(&b, textname, len); isc_buffer_add(&b, len); result = dns_name_fromtext(lookup->name, &b, - dns_rootname, 0, - &lookup->namebuf); + dns_rootname, 0); if (result != ISC_R_SUCCESS) { dns_message_puttempname(lookup->sendmsg, &lookup->name); diff --git a/bin/dig/dighost.h b/bin/dig/dighost.h index 1c5c7ddf945..8c404d115d3 100644 --- a/bin/dig/dighost.h +++ b/bin/dig/dighost.h @@ -131,8 +131,6 @@ struct dig_lookup { bool rdclassset; char name_space[BUFSIZE]; char oname_space[BUFSIZE]; - isc_buffer_t namebuf; - isc_buffer_t onamebuf; isc_buffer_t renderbuf; char *sendspace; dns_name_t *name; diff --git a/bin/dnssec/dnssec-cds.c b/bin/dnssec/dnssec-cds.c index fbf319c356b..13368126ef1 100644 --- a/bin/dnssec/dnssec-cds.c +++ b/bin/dnssec/dnssec-cds.c @@ -178,7 +178,7 @@ initname(char *setname) { isc_buffer_init(&buf, setname, strlen(setname)); isc_buffer_add(&buf, strlen(setname)); - result = dns_name_fromtext(name, &buf, dns_rootname, 0, NULL); + result = dns_name_fromtext(name, &buf, dns_rootname, 0); if (result != ISC_R_SUCCESS) { fatal("could not initialize name %s", setname); } diff --git a/bin/dnssec/dnssec-dsfromkey.c b/bin/dnssec/dnssec-dsfromkey.c index 00c1bab86e4..9647638eac7 100644 --- a/bin/dnssec/dnssec-dsfromkey.c +++ b/bin/dnssec/dnssec-dsfromkey.c @@ -67,7 +67,7 @@ initname(char *setname) { isc_buffer_init(&buf, setname, strlen(setname)); isc_buffer_add(&buf, strlen(setname)); - result = dns_name_fromtext(name, &buf, dns_rootname, 0, NULL); + result = dns_name_fromtext(name, &buf, dns_rootname, 0); return result; } diff --git a/bin/dnssec/dnssec-importkey.c b/bin/dnssec/dnssec-importkey.c index 95ac0256bae..3d5ca6724e3 100644 --- a/bin/dnssec/dnssec-importkey.c +++ b/bin/dnssec/dnssec-importkey.c @@ -69,7 +69,7 @@ initname(char *setname) { isc_buffer_init(&buf, setname, strlen(setname)); isc_buffer_add(&buf, strlen(setname)); - result = dns_name_fromtext(name, &buf, dns_rootname, 0, NULL); + result = dns_name_fromtext(name, &buf, dns_rootname, 0); return result; } diff --git a/bin/dnssec/dnssec-keyfromlabel.c b/bin/dnssec/dnssec-keyfromlabel.c index 3b8899960ba..dadf6e0c9bb 100644 --- a/bin/dnssec/dnssec-keyfromlabel.c +++ b/bin/dnssec/dnssec-keyfromlabel.c @@ -367,7 +367,7 @@ main(int argc, char **argv) { isc_buffer_init(&buf, argv[isc_commandline_index], strlen(argv[isc_commandline_index])); isc_buffer_add(&buf, strlen(argv[isc_commandline_index])); - ret = dns_name_fromtext(name, &buf, dns_rootname, 0, NULL); + ret = dns_name_fromtext(name, &buf, dns_rootname, 0); if (ret != ISC_R_SUCCESS) { fatal("invalid key name %s: %s", argv[isc_commandline_index], diff --git a/bin/dnssec/dnssec-keygen.c b/bin/dnssec/dnssec-keygen.c index 36ed720ec8f..e04f73bd11e 100644 --- a/bin/dnssec/dnssec-keygen.c +++ b/bin/dnssec/dnssec-keygen.c @@ -277,7 +277,7 @@ keygen(keygen_ctx_t *ctx, isc_mem_t *mctx, int argc, char **argv) { isc_buffer_init(&buf, argv[isc_commandline_index], strlen(argv[isc_commandline_index])); isc_buffer_add(&buf, strlen(argv[isc_commandline_index])); - ret = dns_name_fromtext(name, &buf, dns_rootname, 0, NULL); + ret = dns_name_fromtext(name, &buf, dns_rootname, 0); if (ret != ISC_R_SUCCESS) { fatal("invalid key name %s: %s", argv[isc_commandline_index], diff --git a/bin/dnssec/dnssec-ksr.c b/bin/dnssec/dnssec-ksr.c index 95b1e4b7e54..3260e3ff645 100644 --- a/bin/dnssec/dnssec-ksr.c +++ b/bin/dnssec/dnssec-ksr.c @@ -1008,7 +1008,7 @@ parse_dnskey(isc_lex_t *lex, char *owner, isc_buffer_t *buf, dns_ttl_t *ttl) { dname = dns_fixedname_initname(&dfname); isc_buffer_init(&b, owner, strlen(owner)); isc_buffer_add(&b, strlen(owner)); - ret = dns_name_fromtext(dname, &b, dns_rootname, 0, NULL); + ret = dns_name_fromtext(dname, &b, dns_rootname, 0); if (ret != ISC_R_SUCCESS) { return ret; } @@ -1455,7 +1455,7 @@ main(int argc, char *argv[]) { name = dns_fixedname_initname(&fname); isc_buffer_init(&buf, argv[1], strlen(argv[1])); isc_buffer_add(&buf, strlen(argv[1])); - ret = dns_name_fromtext(name, &buf, dns_rootname, 0, NULL); + ret = dns_name_fromtext(name, &buf, dns_rootname, 0); if (ret != ISC_R_SUCCESS) { fatal("invalid zone name %s: %s", argv[1], isc_result_totext(ret)); diff --git a/bin/dnssec/dnssec-signzone.c b/bin/dnssec/dnssec-signzone.c index cfb8f5141e7..9101098470b 100644 --- a/bin/dnssec/dnssec-signzone.c +++ b/bin/dnssec/dnssec-signzone.c @@ -959,7 +959,7 @@ addnowildcardhash(hashlist_t *l, wild = dns_fixedname_initname(&fixed); - result = dns_name_concatenate(dns_wildcardname, name, wild, NULL); + result = dns_name_concatenate(dns_wildcardname, name, wild); if (result == ISC_R_NOSPACE) { return; } @@ -2579,7 +2579,7 @@ loadzone(char *file, char *origin, dns_rdataclass_t rdclass, dns_db_t **db) { isc_buffer_add(&b, len); name = dns_fixedname_initname(&fname); - result = dns_name_fromtext(name, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(name, &b, dns_rootname, 0); if (result != ISC_R_SUCCESS) { fatal("failed converting name '%s' to dns format: %s", origin, isc_result_totext(result)); diff --git a/bin/dnssec/dnssec-verify.c b/bin/dnssec/dnssec-verify.c index 14a19277b0e..1b00812c64c 100644 --- a/bin/dnssec/dnssec-verify.c +++ b/bin/dnssec/dnssec-verify.c @@ -105,7 +105,7 @@ loadzone(char *file, char *origin, dns_rdataclass_t rdclass, dns_db_t **db) { isc_buffer_add(&b, len); name = dns_fixedname_initname(&fname); - result = dns_name_fromtext(name, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(name, &b, dns_rootname, 0); if (result != ISC_R_SUCCESS) { fatal("failed converting name '%s' to dns format: %s", origin, isc_result_totext(result)); diff --git a/bin/named/config.c b/bin/named/config.c index 5da15a526c2..3ac41a80b2a 100644 --- a/bin/named/config.c +++ b/bin/named/config.c @@ -558,7 +558,7 @@ named_config_getname(isc_mem_t *mctx, const cfg_obj_t *obj, isc_buffer_add(&b, strlen(objstr)); dns_fixedname_init(&fname); result = dns_name_fromtext(dns_fixedname_name(&fname), &b, dns_rootname, - 0, NULL); + 0); if (result != ISC_R_SUCCESS) { isc_mem_put(mctx, *namep, sizeof(**namep)); *namep = NULL; diff --git a/bin/named/server.c b/bin/named/server.c index 9f6d021bbfc..236eadf6121 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -664,7 +664,7 @@ configure_view_nametable(const cfg_obj_t *vconfig, const cfg_obj_t *config, str = cfg_obj_asstring(nameobj); isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); - CHECK(dns_name_fromtext(name, &b, dns_rootname, 0, NULL)); + CHECK(dns_name_fromtext(name, &b, dns_rootname, 0)); result = dns_nametree_add(*ntp, name, true); if (result != ISC_R_SUCCESS) { cfg_obj_log(nameobj, ISC_LOG_ERROR, @@ -724,7 +724,7 @@ ta_fromconfig(const cfg_obj_t *key, bool *initialp, const char **namestrp, name = dns_fixedname_initname(&fname); isc_buffer_constinit(&namebuf, namestr, strlen(namestr)); isc_buffer_add(&namebuf, strlen(namestr)); - CHECK(dns_name_fromtext(name, &namebuf, dns_rootname, 0, NULL)); + CHECK(dns_name_fromtext(name, &namebuf, dns_rootname, 0)); if (*initialp) { atstr = cfg_obj_asstring(cfg_tuple_get(key, "anchortype")); @@ -913,7 +913,7 @@ process_key(const cfg_obj_t *key, dns_keytable_t *secroots, isc_buffer_constinit(&b, namestr, strlen(namestr)); isc_buffer_add(&b, strlen(namestr)); keyname = dns_fixedname_initname(&fkeyname); - result = dns_name_fromtext(keyname, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(keyname, &b, dns_rootname, 0); if (result != ISC_R_SUCCESS) { return result; } @@ -1306,7 +1306,7 @@ configure_order(dns_order_t *order, const cfg_obj_t *ent) { isc_buffer_add(&b, strlen(str)); dns_fixedname_init(&fixed); result = dns_name_fromtext(dns_fixedname_name(&fixed), &b, dns_rootname, - 0, NULL); + 0); if (result != ISC_R_SUCCESS) { return result; } @@ -1591,7 +1591,7 @@ disable_algorithms(const cfg_obj_t *disabled, dns_resolver_t *resolver) { str = cfg_obj_asstring(cfg_tuple_get(disabled, "name")); isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); - CHECK(dns_name_fromtext(name, &b, dns_rootname, 0, NULL)); + CHECK(dns_name_fromtext(name, &b, dns_rootname, 0)); algorithms = cfg_tuple_get(disabled, "algorithms"); for (element = cfg_list_first(algorithms); element != NULL; @@ -1634,7 +1634,7 @@ disable_ds_digests(const cfg_obj_t *disabled, dns_resolver_t *resolver) { str = cfg_obj_asstring(cfg_tuple_get(disabled, "name")); isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); - CHECK(dns_name_fromtext(name, &b, dns_rootname, 0, NULL)); + CHECK(dns_name_fromtext(name, &b, dns_rootname, 0)); digests = cfg_tuple_get(disabled, "digests"); for (element = cfg_list_first(digests); element != NULL; @@ -1678,7 +1678,7 @@ on_disable_list(const cfg_obj_t *disablelist, dns_name_t *zonename) { str = cfg_obj_asstring(value); isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); - result = dns_name_fromtext(name, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(name, &b, dns_rootname, 0); RUNTIME_CHECK(result == ISC_R_SUCCESS); if (dns_name_equal(name, zonename)) { return true; @@ -1861,7 +1861,7 @@ dns64_reverse(dns_view_t *view, isc_mem_t *mctx, isc_netaddr_t *na, name = dns_fixedname_initname(&fixed); isc_buffer_constinit(&b, reverse, strlen(reverse)); isc_buffer_add(&b, strlen(reverse)); - CHECK(dns_name_fromtext(name, &b, dns_rootname, 0, NULL)); + CHECK(dns_name_fromtext(name, &b, dns_rootname, 0)); dns_zone_create(&zone, mctx, 0); dns_zone_setorigin(zone, name); dns_zone_setview(zone, view); @@ -5876,8 +5876,8 @@ configure_alternates(const cfg_obj_t *config, dns_view_t *view, isc_buffer_constinit(&buffer, str, strlen(str)); isc_buffer_add(&buffer, strlen(str)); name = dns_fixedname_initname(&fixed); - CHECK(dns_name_fromtext(name, &buffer, dns_rootname, 0, - NULL)); + CHECK(dns_name_fromtext(name, &buffer, dns_rootname, + 0)); portobj = cfg_tuple_get(alternate, "port"); if (cfg_obj_isuint32(portobj)) { @@ -6232,7 +6232,7 @@ configure_zone(const cfg_obj_t *config, const cfg_obj_t *zconfig, isc_buffer_add(&buffer, strlen(zname)); dns_fixedname_init(&fixorigin); CHECK(dns_name_fromtext(dns_fixedname_name(&fixorigin), &buffer, - dns_rootname, 0, NULL)); + dns_rootname, 0)); origin = dns_fixedname_name(&fixorigin); CHECK(named_config_getclass(cfg_tuple_get(zconfig, "class"), @@ -7243,7 +7243,7 @@ configure_session_key(const cfg_obj_t **maps, named_server_t *server, isc_buffer_constinit(&buffer, keynamestr, strlen(keynamestr)); isc_buffer_add(&buffer, strlen(keynamestr)); keyname = dns_fixedname_initname(&fname); - result = dns_name_fromtext(keyname, &buffer, dns_rootname, 0, NULL); + result = dns_name_fromtext(keyname, &buffer, dns_rootname, 0); if (result != ISC_R_SUCCESS) { return result; } @@ -7801,8 +7801,7 @@ get_newzone_config(dns_view_t *view, const char *zonename, isc_buffer_constinit(&b, zonename, strlen(zonename)); isc_buffer_add(&b, strlen(zonename)); name = dns_fixedname_initname(&fname); - CHECK(dns_name_fromtext(name, &b, dns_rootname, DNS_NAME_DOWNCASE, - NULL)); + CHECK(dns_name_fromtext(name, &b, dns_rootname, DNS_NAME_DOWNCASE)); dns_name_format(name, zname, sizeof(zname)); key.mv_data = zname; @@ -11833,7 +11832,7 @@ named_server_flushnode(named_server_t *server, isc_lex_t *lex, bool tree) { isc_buffer_constinit(&b, target, strlen(target)); isc_buffer_add(&b, strlen(target)); name = dns_fixedname_initname(&fixed); - result = dns_name_fromtext(name, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(name, &b, dns_rootname, 0); if (result != ISC_R_SUCCESS) { return result; } @@ -12943,7 +12942,7 @@ load_nzf(dns_view_t *view, ns_cfgctx_t *nzcfg) { isc_buffer_add(&b, strlen(origin)); name = dns_fixedname_initname(&fname); CHECK(dns_name_fromtext(name, &b, dns_rootname, - DNS_NAME_DOWNCASE, NULL)); + DNS_NAME_DOWNCASE)); dns_name_format(name, zname, sizeof(zname)); key.mv_data = zname; @@ -13652,7 +13651,7 @@ named_server_changezone(named_server_t *server, char *command, isc_buffer_add(&buf, strlen(zonename)); dnsname = dns_fixedname_initname(&fname); - CHECK(dns_name_fromtext(dnsname, &buf, dns_rootname, 0, NULL)); + CHECK(dns_name_fromtext(dnsname, &buf, dns_rootname, 0)); if (redirect) { if (!dns_name_equal(dnsname, dns_rootname)) { @@ -15218,7 +15217,7 @@ named_server_nta(named_server_t *server, isc_lex_t *lex, bool readonly, isc_buffer_t b; isc_buffer_init(&b, namebuf, strlen(namebuf)); isc_buffer_add(&b, strlen(namebuf)); - CHECK(dns_name_fromtext(fname, &b, dns_rootname, 0, NULL)); + CHECK(dns_name_fromtext(fname, &b, dns_rootname, 0)); ntaname = fname; } diff --git a/bin/named/tkeyconf.c b/bin/named/tkeyconf.c index 28beca30856..569a7873e97 100644 --- a/bin/named/tkeyconf.c +++ b/bin/named/tkeyconf.c @@ -62,7 +62,7 @@ named_tkeyctx_fromconfig(const cfg_obj_t *options, isc_mem_t *mctx, isc_buffer_constinit(&b, s, strlen(s)); isc_buffer_add(&b, strlen(s)); name = dns_fixedname_initname(&fname); - RETERR(dns_name_fromtext(name, &b, dns_rootname, 0, NULL)); + RETERR(dns_name_fromtext(name, &b, dns_rootname, 0)); tctx->domain = isc_mem_get(mctx, sizeof(dns_name_t)); dns_name_init(tctx->domain); dns_name_dup(name, mctx, tctx->domain); @@ -76,7 +76,7 @@ named_tkeyctx_fromconfig(const cfg_obj_t *options, isc_mem_t *mctx, isc_buffer_constinit(&b, s, strlen(s)); isc_buffer_add(&b, strlen(s)); name = dns_fixedname_initname(&fname); - RETERR(dns_name_fromtext(name, &b, dns_rootname, 0, NULL)); + RETERR(dns_name_fromtext(name, &b, dns_rootname, 0)); RETERR(dst_gssapi_acquirecred(name, false, &tctx->gsscred)); } diff --git a/bin/named/transportconf.c b/bin/named/transportconf.c index 3382bf9b98e..5b904761ecc 100644 --- a/bin/named/transportconf.c +++ b/bin/named/transportconf.c @@ -27,17 +27,16 @@ #include #include -#define create_name(id, name) \ - isc_buffer_t namesrc, namebuf; \ - char namedata[DNS_NAME_FORMATSIZE + 1]; \ - dns_name_init(name); \ - isc_buffer_constinit(&namesrc, id, strlen(id)); \ - isc_buffer_add(&namesrc, strlen(id)); \ - isc_buffer_init(&namebuf, namedata, sizeof(namedata)); \ - result = (dns_name_fromtext(name, &namesrc, dns_rootname, \ - DNS_NAME_DOWNCASE, &namebuf)); \ - if (result != ISC_R_SUCCESS) { \ - goto failure; \ +#define create_name(id, name) \ + isc_buffer_t namesrc; \ + dns_fixedname_t _fn; \ + name = dns_fixedname_initname(&_fn); \ + isc_buffer_constinit(&namesrc, id, strlen(id)); \ + isc_buffer_add(&namesrc, strlen(id)); \ + result = (dns_name_fromtext(name, &namesrc, dns_rootname, \ + DNS_NAME_DOWNCASE)); \ + if (result != ISC_R_SUCCESS) { \ + goto failure; \ } #define parse_transport_option(map, transport, name, setter) \ @@ -100,15 +99,15 @@ add_doh_transports(const cfg_obj_t *transportlist, dns_transport_list_t *list) { for (const cfg_listelt_t *element = cfg_list_first(transportlist); element != NULL; element = cfg_list_next(element)) { - dns_name_t dohname; - dns_transport_t *transport; + dns_name_t *dohname = NULL; + dns_transport_t *transport = NULL; doh = cfg_listelt_value(element); dohid = cfg_obj_asstring(cfg_map_getname(doh)); - create_name(dohid, &dohname); + create_name(dohid, dohname); - transport = dns_transport_new(&dohname, DNS_TRANSPORT_HTTP, + transport = dns_transport_new(dohname, DNS_TRANSPORT_HTTP, list); dns_transport_set_tlsname(transport, dohid); @@ -148,8 +147,8 @@ add_tls_transports(const cfg_obj_t *transportlist, dns_transport_list_t *list) { for (const cfg_listelt_t *element = cfg_list_first(transportlist); element != NULL; element = cfg_list_next(element)) { - dns_name_t tlsname; - dns_transport_t *transport; + dns_name_t *tlsname = NULL; + dns_transport_t *transport = NULL; tls = cfg_listelt_value(element); tlsid = cfg_obj_asstring(cfg_map_getname(tls)); @@ -159,10 +158,9 @@ add_tls_transports(const cfg_obj_t *transportlist, dns_transport_list_t *list) { goto failure; } - create_name(tlsid, &tlsname); + create_name(tlsid, tlsname); - transport = dns_transport_new(&tlsname, DNS_TRANSPORT_TLS, - list); + transport = dns_transport_new(tlsname, DNS_TRANSPORT_TLS, list); dns_transport_set_tlsname(transport, tlsid); parse_transport_option(tls, transport, "key-file", @@ -222,12 +220,12 @@ transport_list_fromconfig(const cfg_obj_t *config, dns_transport_list_t *list) { static void transport_list_add_ephemeral(dns_transport_list_t *list) { isc_result_t result; - dns_name_t tlsname; + dns_name_t *tlsname = NULL; dns_transport_t *transport; - create_name("ephemeral", &tlsname); + create_name("ephemeral", tlsname); - transport = dns_transport_new(&tlsname, DNS_TRANSPORT_TLS, list); + transport = dns_transport_new(tlsname, DNS_TRANSPORT_TLS, list); dns_transport_set_tlsname(transport, "ephemeral"); return; diff --git a/bin/named/tsigconf.c b/bin/named/tsigconf.c index 1f371e1b9be..aa8be9dbaeb 100644 --- a/bin/named/tsigconf.c +++ b/bin/named/tsigconf.c @@ -46,11 +46,11 @@ add_initial_keys(const cfg_obj_t *list, dns_tsigkeyring_t *ring, { const cfg_obj_t *algobj = NULL; const cfg_obj_t *secretobj = NULL; - dns_name_t keyname; + dns_fixedname_t fkey; + dns_name_t *keyname = dns_fixedname_initname(&fkey); dst_algorithm_t alg = DST_ALG_UNKNOWN; const char *algstr = NULL; - char keynamedata[1024]; - isc_buffer_t keynamesrc, keynamebuf; + isc_buffer_t keynamesrc; const char *secretstr = NULL; isc_buffer_t secretbuf; int secretlen = 0; @@ -68,12 +68,10 @@ add_initial_keys(const cfg_obj_t *list, dns_tsigkeyring_t *ring, /* * Create the key name. */ - dns_name_init(&keyname); isc_buffer_constinit(&keynamesrc, keyid, strlen(keyid)); isc_buffer_add(&keynamesrc, strlen(keyid)); - isc_buffer_init(&keynamebuf, keynamedata, sizeof(keynamedata)); - ret = dns_name_fromtext(&keyname, &keynamesrc, dns_rootname, - DNS_NAME_DOWNCASE, &keynamebuf); + ret = dns_name_fromtext(keyname, &keynamesrc, dns_rootname, + DNS_NAME_DOWNCASE); if (ret != ISC_R_SUCCESS) { goto failure; } @@ -103,7 +101,7 @@ add_initial_keys(const cfg_obj_t *list, dns_tsigkeyring_t *ring, } secretlen = isc_buffer_usedlength(&secretbuf); - ret = dns_tsigkey_create(&keyname, alg, secret, secretlen, mctx, + ret = dns_tsigkey_create(keyname, alg, secret, secretlen, mctx, &tsigkey); isc_mem_put(mctx, secret, secretalloc); secret = NULL; diff --git a/bin/named/zoneconf.c b/bin/named/zoneconf.c index 1b1e8a818ad..9b2dd18a760 100644 --- a/bin/named/zoneconf.c +++ b/bin/named/zoneconf.c @@ -253,7 +253,7 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone, isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); result = dns_name_fromtext(dns_fixedname_name(&fident), &b, - dns_rootname, 0, NULL); + dns_rootname, 0); if (result != ISC_R_SUCCESS) { cfg_obj_log(identity, ISC_LOG_ERROR, "'%s' is not a valid name", str); @@ -283,7 +283,7 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone, isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); result = dns_name_fromtext(dns_fixedname_name(&fname), - &b, dns_rootname, 0, NULL); + &b, dns_rootname, 0); if (result != ISC_R_SUCCESS) { cfg_obj_log(identity, ISC_LOG_ERROR, "'%s' is not a valid name", str); @@ -518,7 +518,7 @@ configure_staticstub_servernames(const cfg_obj_t *zconfig, dns_zone_t *zone, isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); - result = dns_name_fromtext(nsname, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(nsname, &b, dns_rootname, 0); if (result != ISC_R_SUCCESS) { cfg_obj_log(zconfig, ISC_LOG_ERROR, "server-name '%s' is not a valid " diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c index 831eeba7aeb..f09c74db0b7 100644 --- a/bin/nsupdate/nsupdate.c +++ b/bin/nsupdate/nsupdate.c @@ -523,8 +523,7 @@ setup_keystr(void) { isc_buffer_add(&keynamesrc, (unsigned int)(n - name)); debug("namefromtext"); - result = dns_name_fromtext(mykeyname, &keynamesrc, dns_rootname, 0, - NULL); + result = dns_name_fromtext(mykeyname, &keynamesrc, dns_rootname, 0); check_result(result, "dns_name_fromtext"); secretlen = strlen(secretstr) * 3 / 4; @@ -786,16 +785,14 @@ set_source_ports(dns_dispatchmgr_t *manager) { } static isc_result_t -create_name(const char *str, char *namedata, size_t len, dns_name_t *name) { - isc_buffer_t namesrc, namebuf; +create_name(const char *str, dns_name_t *name) { + isc_buffer_t namesrc; - dns_name_init(name); isc_buffer_constinit(&namesrc, str, strlen(str)); isc_buffer_add(&namesrc, strlen(str)); - isc_buffer_init(&namebuf, namedata, len); return dns_name_fromtext(name, &namesrc, dns_rootname, - DNS_NAME_DOWNCASE, &namebuf); + DNS_NAME_DOWNCASE); } static void @@ -805,8 +802,8 @@ setup_system(void *arg ISC_ATTR_UNUSED) { isc_sockaddrlist_t *nslist; isc_logconfig_t *logconfig = NULL; irs_resconf_t *resconf = NULL; - dns_name_t tlsname; - char namedata[DNS_NAME_FORMATSIZE + 1]; + dns_fixedname_t ftls; + dns_name_t *tlsname = dns_fixedname_initname(&ftls); ddebug("setup_system()"); @@ -940,17 +937,15 @@ setup_system(void *arg ISC_ATTR_UNUSED) { isc_tlsctx_cache_create(gmctx, &tls_ctx_cache); if (tls_client_key_file == NULL) { - result = create_name("tls-non-auth-client", namedata, - sizeof(namedata), &tlsname); + result = create_name("tls-non-auth-client", tlsname); check_result(result, "create_name (tls-non-auth-client)"); - transport = dns_transport_new(&tlsname, DNS_TRANSPORT_TLS, + transport = dns_transport_new(tlsname, DNS_TRANSPORT_TLS, transport_list); dns_transport_set_tlsname(transport, "tls-non-auth-client"); } else { - result = create_name("tls-auth-client", namedata, - sizeof(namedata), &tlsname); + result = create_name("tls-auth-client", tlsname); check_result(result, "create_name (tls-auth-client)"); - transport = dns_transport_new(&tlsname, DNS_TRANSPORT_TLS, + transport = dns_transport_new(tlsname, DNS_TRANSPORT_TLS, transport_list); dns_transport_set_tlsname(transport, "tls-auth-client"); dns_transport_set_keyfile(transport, tls_client_key_file); @@ -1309,7 +1304,7 @@ parse_name(char **cmdlinep, dns_message_t *msg, dns_name_t **namep) { dns_message_gettempname(msg, namep); isc_buffer_init(&source, word, strlen(word)); isc_buffer_add(&source, strlen(word)); - result = dns_name_fromtext(*namep, &source, dns_rootname, 0, NULL); + result = dns_name_fromtext(*namep, &source, dns_rootname, 0); if (result != ISC_R_SUCCESS) { error("invalid owner name: %s", isc_result_totext(result)); isc_buffer_invalidate(&source); @@ -1735,7 +1730,7 @@ evaluate_key(char *cmdline) { isc_buffer_init(&b, namestr, strlen(namestr)); isc_buffer_add(&b, strlen(namestr)); - result = dns_name_fromtext(mykeyname, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(mykeyname, &b, dns_rootname, 0); if (result != ISC_R_SUCCESS) { fprintf(stderr, "could not parse key name\n"); return STATUS_SYNTAX; @@ -1789,7 +1784,7 @@ evaluate_zone(char *cmdline) { userzone = dns_fixedname_initname(&fuserzone); isc_buffer_init(&b, word, strlen(word)); isc_buffer_add(&b, strlen(word)); - result = dns_name_fromtext(userzone, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(userzone, &b, dns_rootname, 0); if (result != ISC_R_SUCCESS) { userzone = NULL; /* Lest it point to an invalid name */ fprintf(stderr, "could not parse zone name\n"); @@ -3123,7 +3118,7 @@ start_gssrequest(dns_name_t *primary) { RUNTIME_CHECK(result < sizeof(servicename)); isc_buffer_init(&buf, servicename, strlen(servicename)); isc_buffer_add(&buf, strlen(servicename)); - result = dns_name_fromtext(servname, &buf, dns_rootname, 0, NULL); + result = dns_name_fromtext(servname, &buf, dns_rootname, 0); if (result != ISC_R_SUCCESS) { fatal("dns_name_fromtext(servname) failed: %s", isc_result_totext(result)); @@ -3140,7 +3135,7 @@ start_gssrequest(dns_name_t *primary) { isc_buffer_init(&buf, mykeystr, strlen(mykeystr)); isc_buffer_add(&buf, strlen(mykeystr)); - result = dns_name_fromtext(keyname, &buf, dns_rootname, 0, NULL); + result = dns_name_fromtext(keyname, &buf, dns_rootname, 0); if (result != ISC_R_SUCCESS) { fatal("dns_name_fromtext(keyname) failed: %s", isc_result_totext(result)); @@ -3299,7 +3294,7 @@ recvgss(void *arg) { servname = dns_fixedname_initname(&fname); isc_buffer_init(&buf, servicename, strlen(servicename)); isc_buffer_add(&buf, strlen(servicename)); - result = dns_name_fromtext(servname, &buf, dns_rootname, 0, NULL); + result = dns_name_fromtext(servname, &buf, dns_rootname, 0); check_result(result, "dns_name_fromtext"); result = dns_tkey_gssnegotiate(tsigquery, rcvmsg, servname, &context, diff --git a/bin/tests/system/pipelined/pipequeries.c b/bin/tests/system/pipelined/pipequeries.c index fcfb50ccd02..fd1f03a31d0 100644 --- a/bin/tests/system/pipelined/pipequeries.c +++ b/bin/tests/system/pipelined/pipequeries.c @@ -141,7 +141,7 @@ sendquery(void) { isc_buffer_init(&buf, host, strlen(host)); isc_buffer_add(&buf, strlen(host)); result = dns_name_fromtext(dns_fixedname_name(&queryname), &buf, - dns_rootname, 0, NULL); + dns_rootname, 0); CHECK("dns_name_fromtext", result); dns_message_create(mctx, NULL, NULL, DNS_MESSAGE_INTENTRENDER, diff --git a/bin/tools/mdig.c b/bin/tools/mdig.c index 3ae513b6681..cafaf482c97 100644 --- a/bin/tools/mdig.c +++ b/bin/tools/mdig.c @@ -592,7 +592,7 @@ sendquery(struct query *query) { isc_buffer_init(&buf, query->textname, strlen(query->textname)); isc_buffer_add(&buf, strlen(query->textname)); result = dns_name_fromtext(dns_fixedname_name(&queryname), &buf, - dns_rootname, 0, NULL); + dns_rootname, 0); CHECK("dns_name_fromtext", result); dns_message_create(mctx, NULL, NULL, DNS_MESSAGE_INTENTRENDER, diff --git a/bin/tools/nsec3hash.c b/bin/tools/nsec3hash.c index c0f62375d80..e55800821e7 100644 --- a/bin/tools/nsec3hash.c +++ b/bin/tools/nsec3hash.c @@ -122,7 +122,7 @@ nsec3hash(nsec3printer *nsec3print, const char *algostr, const char *flagstr, name = dns_fixedname_initname(&fixed); isc_buffer_constinit(&buffer, domain, strlen(domain)); isc_buffer_add(&buffer, strlen(domain)); - result = dns_name_fromtext(name, &buffer, dns_rootname, 0, NULL); + result = dns_name_fromtext(name, &buffer, dns_rootname, 0); check_result(result, "dns_name_fromtext() failed"); dns_name_downcase(name, name); diff --git a/fuzz/dns_name_fromtext_target.c b/fuzz/dns_name_fromtext_target.c index 7886b043715..cdf6e479930 100644 --- a/fuzz/dns_name_fromtext_target.c +++ b/fuzz/dns_name_fromtext_target.c @@ -42,7 +42,7 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { isc_buffer_setactive(&buf, size); result = dns_name_fromtext(dns_fixedname_name(&origin), &buf, - dns_rootname, 0, NULL); + dns_rootname, 0); if (debug) { fprintf(stderr, "dns_name_fromtext: %s\n", isc_result_totext(result)); diff --git a/lib/dns/adb.c b/lib/dns/adb.c index 88313cbce62..5682090d30e 100644 --- a/lib/dns/adb.c +++ b/lib/dns/adb.c @@ -875,8 +875,7 @@ set_target(dns_adb_t *adb, const dns_name_t *name, const dns_name_t *fname, prefix = dns_fixedname_initname(&fixed1); new_target = dns_fixedname_initname(&fixed2); dns_name_split(name, nlabels, prefix, NULL); - result = dns_name_concatenate(prefix, &dname.dname, new_target, - NULL); + result = dns_name_concatenate(prefix, &dname.dname, new_target); dns_rdata_freestruct(&dname); if (result != ISC_R_SUCCESS) { return result; diff --git a/lib/dns/byaddr.c b/lib/dns/byaddr.c index a0a83c9ec4f..fff186746e8 100644 --- a/lib/dns/byaddr.c +++ b/lib/dns/byaddr.c @@ -80,5 +80,5 @@ dns_byaddr_createptrname(const isc_netaddr_t *address, dns_name_t *name) { len = (unsigned int)strlen(textname); isc_buffer_init(&buffer, textname, len); isc_buffer_add(&buffer, len); - return dns_name_fromtext(name, &buffer, dns_rootname, 0, NULL); + return dns_name_fromtext(name, &buffer, dns_rootname, 0); } diff --git a/lib/dns/client.c b/lib/dns/client.c index 350a8a06add..0fb9d9012e9 100644 --- a/lib/dns/client.c +++ b/lib/dns/client.c @@ -652,7 +652,7 @@ client_resfind(resctx_t *rctx, dns_fetchresponse_t *resp) { prefix = dns_fixedname_initname(&fixed); dns_name_split(name, nlabels, prefix, NULL); tresult = dns_name_concatenate(prefix, &dname.dname, - name, NULL); + name); dns_rdata_freestruct(&dname); if (tresult == ISC_R_SUCCESS) { want_restart = true; diff --git a/lib/dns/compress.c b/lib/dns/compress.c index 9490d2a7f76..9fc067a4695 100644 --- a/lib/dns/compress.c +++ b/lib/dns/compress.c @@ -57,6 +57,7 @@ dns_compress_init(dns_compress_t *cctx, isc_mem_t *mctx, .mctx = mctx, .mask = mask, .set = set, + .coff = 0xffff, }; } @@ -69,6 +70,23 @@ dns_compress_invalidate(dns_compress_t *cctx) { *cctx = (dns_compress_t){ 0 }; } +void +dns_compress_setmultiuse(dns_compress_t *cctx, bool multi) { + REQUIRE(CCTX_VALID(cctx)); + if (multi) { + cctx->flags |= DNS_COMPRESS_MULTIUSE; + } else { + cctx->flags &= ~DNS_COMPRESS_MULTIUSE; + } + cctx->coff = 0xffff; +} + +bool +dns_compress_getmultiuse(dns_compress_t *cctx) { + REQUIRE(CCTX_VALID(cctx)); + return (cctx->flags & DNS_COMPRESS_MULTIUSE) != 0; +} + void dns_compress_setpermitted(dns_compress_t *cctx, bool permitted) { REQUIRE(CCTX_VALID(cctx)); @@ -77,6 +95,7 @@ dns_compress_setpermitted(dns_compress_t *cctx, bool permitted) { } else { cctx->flags &= ~DNS_COMPRESS_PERMITTED; } + dns_compress_setmultiuse(cctx, false); } bool diff --git a/lib/dns/dlz.c b/lib/dns/dlz.c index b6d41678edd..599520092ea 100644 --- a/lib/dns/dlz.c +++ b/lib/dns/dlz.c @@ -410,7 +410,7 @@ dns_dlz_writeablezone(dns_view_t *view, dns_dlzdb_t *dlzdb, isc_buffer_add(&buffer, strlen(zone_name)); dns_fixedname_init(&fixorigin); result = dns_name_fromtext(dns_fixedname_name(&fixorigin), &buffer, - dns_rootname, 0, NULL); + dns_rootname, 0); if (result != ISC_R_SUCCESS) { goto cleanup; } diff --git a/lib/dns/dnssec.c b/lib/dns/dnssec.c index cda1115ded4..2220dbb233f 100644 --- a/lib/dns/dnssec.c +++ b/lib/dns/dnssec.c @@ -592,7 +592,7 @@ dns_dnssec_verify(const dns_name_t *name, dns_rdataset_t *set, dst_key_t *key, RUNTIME_CHECK(dns_name_concatenate( dns_wildcardname, dns_fixedname_name(&fnewname), - wild, NULL) == ISC_R_SUCCESS); + wild) == ISC_R_SUCCESS); } inc_stat(dns_dnssecstats_wildcard); ret = DNS_R_FROMWILDCARD; diff --git a/lib/dns/dst_api.c b/lib/dns/dst_api.c index 7e8f4d2cb95..444eb8fbfd9 100644 --- a/lib/dns/dst_api.c +++ b/lib/dns/dst_api.c @@ -1618,8 +1618,7 @@ dst_key_read_public(const char *filename, int type, isc_mem_t *mctx, dns_fixedname_init(&name); isc_buffer_init(&b, DST_AS_STR(token), strlen(DST_AS_STR(token))); isc_buffer_add(&b, strlen(DST_AS_STR(token))); - ret = dns_name_fromtext(dns_fixedname_name(&name), &b, dns_rootname, 0, - NULL); + ret = dns_name_fromtext(dns_fixedname_name(&name), &b, dns_rootname, 0); if (ret != ISC_R_SUCCESS) { goto cleanup; } diff --git a/lib/dns/gssapictx.c b/lib/dns/gssapictx.c index 273d94a2cdb..8e9025d3570 100644 --- a/lib/dns/gssapictx.c +++ b/lib/dns/gssapictx.c @@ -783,8 +783,7 @@ dst_gssapi_acceptctx(dns_gss_cred_id_t cred, const char *gssapi_keytab, isc_buffer_init(&namebuf, r.base, r.length); isc_buffer_add(&namebuf, r.length); - RETERR(dns_name_fromtext(principal, &namebuf, dns_rootname, 0, - NULL)); + RETERR(dns_name_fromtext(principal, &namebuf, dns_rootname, 0)); if (gnamebuf.length != 0U) { gret = gss_release_buffer(&minor, &gnamebuf); diff --git a/lib/dns/include/dns/compress.h b/lib/dns/include/dns/compress.h index 1e3fb84527b..9ca1b98327f 100644 --- a/lib/dns/include/dns/compress.h +++ b/lib/dns/include/dns/compress.h @@ -75,6 +75,7 @@ enum dns_compress_flags { DNS_COMPRESS_LARGE = 0x00000004U, /* can toggle while rendering a message */ DNS_COMPRESS_PERMITTED = 0x00000008U, + DNS_COMPRESS_MULTIUSE = 0x00000010U, }; /* @@ -91,6 +92,7 @@ struct dns_compress { dns_compress_flags_t flags; uint16_t mask; uint16_t count; + uint16_t coff; isc_mem_t *mctx; dns_compress_slot_t *set; dns_compress_slot_t smallset[1 << DNS_COMPRESS_SMALLBITS]; @@ -140,11 +142,36 @@ dns_compress_invalidate(dns_compress_t *cctx); */ void +dns_compress_setmultiuse(dns_compress_t *cctx, bool multi); +/*%< + * Indicates this compression context is to be used for + * multiple calls to dns_name_towire(), for example when + * rendering the rdata in an rdataset. This causes the + * compression offset to be reusable across calls. + * + * Requires: + *\li 'cctx' is not NULL. + */ + +bool +dns_compress_getmultiuse(dns_compress_t *cctx); + +/*%< + * Find out whether multiuse is enabled. + * + * Requires: + *\li 'cctx' to be initialized. + * + * Returns: + *\li allowed compression bitmap. + */ +void dns_compress_setpermitted(dns_compress_t *cctx, bool permitted); /*%< * Sets whether compression is allowed, according to RFC 3597. - * This can vary depending on the rdata type. + * This can vary depending on the rdata type. This will also + * reset multiuse to false. * * Requires: *\li 'cctx' to be initialized. diff --git a/lib/dns/include/dns/name.h b/lib/dns/include/dns/name.h index 24340b2e4b6..07265f5ae5b 100644 --- a/lib/dns/include/dns/name.h +++ b/lib/dns/include/dns/name.h @@ -302,9 +302,10 @@ dns_name_setbuffer(dns_name_t *name, isc_buffer_t *buffer) { * Dedicate a buffer for use with 'name'. * * Notes: - * \li Specification of a target buffer in dns_name_fromwire(), - * dns_name_fromtext(), and dns_name_concatenate() is optional if - * 'name' has a dedicated buffer. + * \li Specification of a target buffer in dns_name_fromwire() and + * dns_name_fromtext() is optional if 'name' has a dedicated buffer. + * The target name in dns_name_concatenate() must have a dedicated + * buffer. * * \li The caller must not write to buffer until the name has been * invalidated or is otherwise known not to be in use. @@ -768,10 +769,11 @@ dns_name_fromwire(dns_name_t *name, isc_buffer_t *source, dns_decompress_t dctx, isc_result_t dns_name_towire(const dns_name_t *name, dns_compress_t *cctx, - isc_buffer_t *target, uint16_t *comp_offsetp); + isc_buffer_t *target); /*%< * Convert 'name' into wire format, compressing it as specified by the - * compression context 'cctx', and storing the result in 'target'. + * compression context 'cctx' (or leaving it uncompressed if 'cctx' is + * NULL), and storing the result in 'target'. * * Notes: * \li If compression is permitted, then the cctx table may be updated. @@ -798,11 +800,10 @@ dns_name_towire(const dns_name_t *name, dns_compress_t *cctx, isc_result_t dns_name_fromtext(dns_name_t *name, isc_buffer_t *source, - const dns_name_t *origin, unsigned int options, - isc_buffer_t *target); + const dns_name_t *origin, unsigned int options); /*%< - * Convert the textual representation of a DNS name at source - * into uncompressed wire form stored in target. + * Convert the textual representation of a DNS name in 'source' + * and store it in 'name'. * * Notes: * \li Relative domain names will have 'origin' appended to them @@ -814,18 +815,52 @@ dns_name_fromtext(dns_name_t *name, isc_buffer_t *source, * * Requires: * - * \li 'name' is a valid name. + * \li 'name' is a valid name with a dedicated buffer. * * \li 'source' is a valid buffer. * - * \li 'target' is a valid buffer or 'target' is NULL and 'name' has - * a dedicated buffer. - * * Ensures: * * If result is success: - * \li If 'target' is not NULL, 'name' is attached to it. + * \li Uppercase letters are downcased in the copy iff + * DNS_NAME_DOWNCASE is set in 'options'. * + * \li The current location in source is advanced. + * + * Result: + *\li #ISC_R_SUCCESS + *\li #DNS_R_EMPTYLABEL + *\li #DNS_R_LABELTOOLONG + *\li #DNS_R_BADESCAPE + *\li #DNS_R_BADDOTTEDQUAD + *\li #ISC_R_NOSPACE + *\li #ISC_R_UNEXPECTEDEND + */ + +isc_result_t +dns_name_wirefromtext(isc_buffer_t *source, const dns_name_t *origin, + unsigned int options, isc_buffer_t *target); +/*%< + * Convert the textual representation of a DNS name in 'source' + * into uncompressed wire form stored in target. + * + * Notes: + * \li Relative domain names will have 'origin' appended to them + * unless 'origin' is NULL, in which case relative domain names + * will remain relative. + * + * \li If DNS_NAME_DOWNCASE is set in 'options', any uppercase letters + * in 'source' will be downcased when they are copied into 'target'. + * + * Requires: + * + * \li 'source' is a valid buffer. + * + * \li 'target' is a valid buffer. + * + * Ensures: + * + * If result is success: * \li Uppercase letters are downcased in the copy iff * DNS_NAME_DOWNCASE is set in 'options'. * @@ -959,9 +994,11 @@ dns_name_downcase(const dns_name_t *source, dns_name_t *name); isc_result_t dns_name_concatenate(const dns_name_t *prefix, const dns_name_t *suffix, - dns_name_t *name, isc_buffer_t *target); + dns_name_t *name); /*%< - * Concatenate 'prefix' and 'suffix'. + * Concatenate 'prefix' and 'suffix' and place the result in 'name'. + * (Note that 'name' may be the same as 'prefix', in which case + * 'suffix' will be appended to it.) * * Requires: * @@ -969,20 +1006,10 @@ dns_name_concatenate(const dns_name_t *prefix, const dns_name_t *suffix, * *\li 'suffix' is a valid name or NULL. * - *\li 'name' is a valid name or NULL. - * - *\li 'target' is a valid buffer or 'target' is NULL and 'name' has - * a dedicated buffer. + *\li 'name' is a valid name with a dedicated buffer. * *\li If 'prefix' is absolute, 'suffix' must be NULL or the empty name. * - * Ensures: - * - *\li On success, - * If 'target' is not NULL and 'name' is not NULL, then 'name' - * is attached to it. - * The used space in target is updated. - * * Returns: *\li #ISC_R_SUCCESS *\li #ISC_R_NOSPACE diff --git a/lib/dns/master.c b/lib/dns/master.c index 08b3a49046d..071c1c3475f 100644 --- a/lib/dns/master.c +++ b/lib/dns/master.c @@ -835,8 +835,7 @@ generate(dns_loadctx_t *lctx, char *range, char *lhs, char *gtype, char *rhs, isc_buffer_init(&buffer, lhsbuf, strlen(lhsbuf)); isc_buffer_add(&buffer, strlen(lhsbuf)); isc_buffer_setactive(&buffer, strlen(lhsbuf)); - result = dns_name_fromtext(owner, &buffer, ictx->origin, 0, - NULL); + result = dns_name_fromtext(owner, &buffer, ictx->origin, 0); if (result != ISC_R_SUCCESS) { goto error_cleanup; } @@ -1388,7 +1387,7 @@ load_text(dns_loadctx_t *lctx) { isc_buffer_setactive(&buffer, token.value.as_region.length); result = dns_name_fromtext(new_name, &buffer, - ictx->origin, 0, NULL); + ictx->origin, 0); if (MANYERRS(lctx, result)) { SETRESULT(lctx, result); LOGIT(result); diff --git a/lib/dns/name.c b/lib/dns/name.c index 12201c05d8d..ba6e5693e60 100644 --- a/lib/dns/name.c +++ b/lib/dns/name.c @@ -706,12 +706,11 @@ dns_name_fromregion(dns_name_t *name, const isc_region_t *r) { } } -isc_result_t -dns_name_fromtext(dns_name_t *name, isc_buffer_t *source, - const dns_name_t *origin, unsigned int options, - isc_buffer_t *target) { - unsigned char *ndata, *label = NULL; - char *tdata; +static isc_result_t +convert_text(isc_buffer_t *source, const dns_name_t *origin, + unsigned int options, dns_name_t *name, isc_buffer_t *target) { + unsigned char *ndata = NULL, *label = NULL; + char *tdata = NULL; char c; ft_state state; unsigned int value = 0, count = 0; @@ -720,20 +719,9 @@ dns_name_fromtext(dns_name_t *name, isc_buffer_t *source, bool done; bool downcase; - /* - * Convert the textual representation of a DNS name at source - * into uncompressed wire form stored in target. - * - * Notes: - * Relative domain names will have 'origin' appended to them - * unless 'origin' is NULL, in which case relative domain names - * will remain relative. - */ - REQUIRE(DNS_NAME_VALID(name)); REQUIRE(ISC_BUFFER_VALID(source)); - REQUIRE((target != NULL && ISC_BUFFER_VALID(target)) || - (target == NULL && ISC_BUFFER_VALID(name->buffer))); + REQUIRE(ISC_BUFFER_VALID(target)); downcase = ((options & DNS_NAME_DOWNCASE) != 0); @@ -951,6 +939,27 @@ dns_name_fromtext(dns_name_t *name, isc_buffer_t *source, return ISC_R_SUCCESS; } +isc_result_t +dns_name_wirefromtext(isc_buffer_t *source, const dns_name_t *origin, + unsigned int options, isc_buffer_t *target) { + dns_name_t name; + + REQUIRE(ISC_BUFFER_VALID(target)); + + dns_name_init(&name); + return convert_text(source, origin, options, &name, target); +} + +isc_result_t +dns_name_fromtext(dns_name_t *name, isc_buffer_t *source, + const dns_name_t *origin, unsigned int options) { + REQUIRE(DNS_NAME_VALID(name)); + REQUIRE(ISC_BUFFER_VALID(name->buffer)); + + isc_buffer_clear(name->buffer); + return convert_text(source, origin, options, name, name->buffer); +} + isc_result_t dns_name_totext(const dns_name_t *name, unsigned int options, isc_buffer_t *target) { @@ -1436,33 +1445,43 @@ root_label:; isc_result_t dns_name_towire(const dns_name_t *name, dns_compress_t *cctx, - isc_buffer_t *target, uint16_t *name_coff) { - bool compress; + isc_buffer_t *target) { + bool compress, multi; unsigned int here; unsigned int prefix_length; unsigned int suffix_coff; /* * Convert 'name' into wire format, compressing it as specified by the - * compression context 'cctx', and storing the result in 'target'. + * compression context 'cctx' (or without compressing if 'cctx' + * is NULL), and storing the result in 'target'. */ REQUIRE(DNS_NAME_VALID(name)); - REQUIRE(cctx != NULL); REQUIRE(ISC_BUFFER_VALID(target)); + if (cctx == NULL) { + if (isc_buffer_availablelength(target) < name->length) { + return ISC_R_NOSPACE; + } + memmove(isc_buffer_used(target), name->ndata, name->length); + isc_buffer_add(target, name->length); + return ISC_R_SUCCESS; + } + compress = !name->attributes.nocompress && dns_compress_getpermitted(cctx); + multi = compress && dns_compress_getmultiuse(cctx); /* * Write a compression pointer directly if the caller passed us * a pointer to this name's offset that we saved previously. */ - if (compress && name_coff != NULL && *name_coff < 0x4000) { + if (multi && cctx->coff < 0x4000) { if (isc_buffer_availablelength(target) < 2) { return ISC_R_NOSPACE; } - isc_buffer_putuint16(target, *name_coff | 0xc000); + isc_buffer_putuint16(target, cctx->coff | 0xc000); return ISC_R_SUCCESS; } @@ -1483,8 +1502,8 @@ dns_name_towire(const dns_name_t *name, dns_compress_t *cctx, * it isn't too short for compression to help (i.e. it's the root) */ here = isc_buffer_usedlength(target); - if (name_coff != NULL && here < 0x4000 && prefix_length > 1) { - *name_coff = (uint16_t)here; + if (multi && here < 0x4000 && prefix_length > 1) { + cctx->coff = (uint16_t)here; } if (prefix_length > 0) { @@ -1496,8 +1515,8 @@ dns_name_towire(const dns_name_t *name, dns_compress_t *cctx, } if (suffix_coff > 0) { - if (name_coff != NULL && prefix_length == 0) { - *name_coff = suffix_coff; + if (multi && prefix_length == 0) { + cctx->coff = suffix_coff; } if (isc_buffer_availablelength(target) < 2) { return ISC_R_NOSPACE; @@ -1510,13 +1529,14 @@ dns_name_towire(const dns_name_t *name, dns_compress_t *cctx, isc_result_t dns_name_concatenate(const dns_name_t *prefix, const dns_name_t *suffix, - dns_name_t *name, isc_buffer_t *target) { - unsigned char *ndata; + dns_name_t *name) { + unsigned char *ndata = NULL; unsigned int nrem, prefix_length, length; bool copy_prefix = true; bool copy_suffix = true; bool absolute = false; dns_name_t tmp_name; + isc_buffer_t *target = NULL; /* * Concatenate 'prefix' and 'suffix'. @@ -1524,10 +1544,9 @@ dns_name_concatenate(const dns_name_t *prefix, const dns_name_t *suffix, REQUIRE(prefix == NULL || DNS_NAME_VALID(prefix)); REQUIRE(suffix == NULL || DNS_NAME_VALID(suffix)); - REQUIRE(name == NULL || DNS_NAME_VALID(name)); - REQUIRE((target != NULL && ISC_BUFFER_VALID(target)) || - (target == NULL && name != NULL && - ISC_BUFFER_VALID(name->buffer))); + REQUIRE(DNS_NAME_VALID(name) && ISC_BUFFER_VALID(name->buffer)); + REQUIRE(DNS_NAME_BINDABLE(name)); + if (prefix == NULL || prefix->length == 0) { copy_prefix = false; } @@ -1542,13 +1561,9 @@ dns_name_concatenate(const dns_name_t *prefix, const dns_name_t *suffix, dns_name_init(&tmp_name); name = &tmp_name; } - if (target == NULL) { - INSIST(name->buffer != NULL); - target = name->buffer; - isc_buffer_clear(name->buffer); - } - REQUIRE(DNS_NAME_BINDABLE(name)); + target = name->buffer; + isc_buffer_clear(target); /* * Set up. @@ -1582,8 +1597,7 @@ dns_name_concatenate(const dns_name_t *prefix, const dns_name_t *suffix, } /* - * If 'prefix' and 'name' are the same object, and the object has - * a dedicated buffer, and we're using it, then we don't have to + * If 'prefix' and 'name' are the same object, we don't have to * copy anything. */ if (copy_prefix && (prefix != name || prefix->buffer != target)) { @@ -1791,7 +1805,7 @@ dns_name_fromstring(dns_name_t *target, const char *src, name = dns_fixedname_initname(&fn); } - result = dns_name_fromtext(name, &buf, origin, options, NULL); + result = dns_name_fromtext(name, &buf, origin, options); if (result != ISC_R_SUCCESS) { return result; } diff --git a/lib/dns/ncache.c b/lib/dns/ncache.c index edf8bbe816d..bd9c43288b5 100644 --- a/lib/dns/ncache.c +++ b/lib/dns/ncache.c @@ -360,7 +360,7 @@ dns_ncache_towire(dns_rdataset_t *rdataset, dns_compress_t *cctx, * Write the name. */ dns_compress_setpermitted(cctx, true); - result = dns_name_towire(&name, cctx, target, NULL); + result = dns_name_towire(&name, cctx, target); if (result != ISC_R_SUCCESS) { goto rollback; } diff --git a/lib/dns/nsec.c b/lib/dns/nsec.c index 23ed7811649..7fa26758d82 100644 --- a/lib/dns/nsec.c +++ b/lib/dns/nsec.c @@ -483,8 +483,7 @@ dns_nsec_noexistnodata(dns_rdatatype_t type, const dns_name_t *name, dns_name_getlabelsequence(&nsec.next, labels - nlabels, nlabels, &common); } - result = dns_name_concatenate(dns_wildcardname, &common, wild, - NULL); + result = dns_name_concatenate(dns_wildcardname, &common, wild); if (result != ISC_R_SUCCESS) { dns_rdata_freestruct(&nsec); (*logit)(arg, ISC_LOG_DEBUG(3), diff --git a/lib/dns/nsec3.c b/lib/dns/nsec3.c index d0d3eadda74..8791c416055 100644 --- a/lib/dns/nsec3.c +++ b/lib/dns/nsec3.c @@ -282,7 +282,7 @@ dns_nsec3_hashname(dns_fixedname_t *result, /* convert the hex to a domain name */ dns_fixedname_init(result); return dns_name_fromtext(dns_fixedname_name(result), &namebuffer, - origin, 0, NULL); + origin, 0); } unsigned int diff --git a/lib/dns/peer.c b/lib/dns/peer.c index 6d733d9636f..f633ab285f7 100644 --- a/lib/dns/peer.c +++ b/lib/dns/peer.c @@ -506,7 +506,7 @@ dns_peer_setkeybycharp(dns_peer_t *peer, const char *keyval) { isc_buffer_constinit(&b, keyval, strlen(keyval)); isc_buffer_add(&b, strlen(keyval)); result = dns_name_fromtext(dns_fixedname_name(&fname), &b, dns_rootname, - 0, NULL); + 0); if (result != ISC_R_SUCCESS) { return result; } diff --git a/lib/dns/qpzone.c b/lib/dns/qpzone.c index 8851542592e..766d25fe8a8 100644 --- a/lib/dns/qpzone.c +++ b/lib/dns/qpzone.c @@ -2960,7 +2960,7 @@ find_wildcard(qpz_search_t *search, qpznode_t **nodep, * Construct the wildcard name for this level. */ result = dns_name_concatenate(dns_wildcardname, - &node->name, wname, NULL); + &node->name, wname); if (result != ISC_R_SUCCESS) { break; } diff --git a/lib/dns/rdata/any_255/tsig_250.c b/lib/dns/rdata/any_255/tsig_250.c index f568665981f..ef776e5562b 100644 --- a/lib/dns/rdata/any_255/tsig_250.c +++ b/lib/dns/rdata/any_255/tsig_250.c @@ -20,7 +20,6 @@ static isc_result_t fromtext_any_tsig(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; uint64_t sigtime; isc_buffer_t buffer; dns_rcode_t rcode; @@ -39,12 +38,11 @@ fromtext_any_tsig(ARGS_FROMTEXT) { */ RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); /* * Time Signed: 48 bits. @@ -335,7 +333,7 @@ towire_any_tsig(ARGS_TOWIRE) { dns_rdata_toregion(rdata, &sr); dns_name_init(&name); dns_name_fromregion(&name, &sr); - RETERR(dns_name_towire(&name, cctx, target, NULL)); + RETERR(dns_name_towire(&name, cctx, target)); isc_region_consume(&sr, name_length(&name)); return mem_tobuffer(target, sr.base, sr.length); } diff --git a/lib/dns/rdata/ch_3/a_1.c b/lib/dns/rdata/ch_3/a_1.c index af7ee1e8e18..95a02fe9576 100644 --- a/lib/dns/rdata/ch_3/a_1.c +++ b/lib/dns/rdata/ch_3/a_1.c @@ -24,7 +24,8 @@ static isc_result_t fromtext_ch_a(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; + dns_fixedname_t fn; + dns_name_t *name = dns_fixedname_initname(&fn); isc_buffer_t buffer; REQUIRE(type == dns_rdatatype_a); @@ -37,22 +38,22 @@ fromtext_ch_a(ARGS_FROMTEXT) { false)); /* get domain name */ - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_fromtext(name, &buffer, origin, options)); + RETTOK(dns_name_towire(name, NULL, target)); if ((options & DNS_RDATA_CHECKNAMES) != 0 && (options & DNS_RDATA_CHECKREVERSE) != 0) { bool ok; - ok = dns_name_ishostname(&name, false); + ok = dns_name_ishostname(name, false); if (!ok && (options & DNS_RDATA_CHECKNAMESFAIL) != 0) { RETTOK(DNS_R_BADNAME); } if (!ok && callbacks != NULL) { - warn_badname(&name, lexer, callbacks); + warn_badname(name, lexer, callbacks); } } @@ -146,7 +147,7 @@ towire_ch_a(ARGS_TOWIRE) { dns_name_fromregion(&name, &sregion); isc_region_consume(&sregion, name_length(&name)); - RETERR(dns_name_towire(&name, cctx, target, NULL)); + RETERR(dns_name_towire(&name, cctx, target)); isc_buffer_availableregion(target, &tregion); if (tregion.length < 2) { diff --git a/lib/dns/rdata/generic/afsdb_18.c b/lib/dns/rdata/generic/afsdb_18.c index 9a8ed8ff44c..07216108076 100644 --- a/lib/dns/rdata/generic/afsdb_18.c +++ b/lib/dns/rdata/generic/afsdb_18.c @@ -22,7 +22,8 @@ static isc_result_t fromtext_afsdb(ARGS_FROMTEXT) { isc_token_t token; isc_buffer_t buffer; - dns_name_t name; + dns_fixedname_t fn; + dns_name_t *name = dns_fixedname_initname(&fn); bool ok; REQUIRE(type == dns_rdatatype_afsdb); @@ -46,21 +47,21 @@ fromtext_afsdb(ARGS_FROMTEXT) { */ RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_fromtext(name, &buffer, origin, options)); + RETTOK(dns_name_towire(name, NULL, target)); ok = true; if ((options & DNS_RDATA_CHECKNAMES) != 0) { - ok = dns_name_ishostname(&name, false); + ok = dns_name_ishostname(name, false); } if (!ok && (options & DNS_RDATA_CHECKNAMESFAIL) != 0) { RETTOK(DNS_R_BADNAME); } if (!ok && callbacks != NULL) { - warn_badname(&name, lexer, callbacks); + warn_badname(name, lexer, callbacks); } return ISC_R_SUCCESS; } @@ -141,7 +142,7 @@ towire_afsdb(ARGS_TOWIRE) { dns_name_init(&name); dns_name_fromregion(&name, &sr); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int diff --git a/lib/dns/rdata/generic/amtrelay_260.c b/lib/dns/rdata/generic/amtrelay_260.c index 1bd7378745c..00c66c7bf6c 100644 --- a/lib/dns/rdata/generic/amtrelay_260.c +++ b/lib/dns/rdata/generic/amtrelay_260.c @@ -23,7 +23,6 @@ static isc_result_t fromtext_amtrelay(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; unsigned int discovery; unsigned int gateway; @@ -108,13 +107,11 @@ fromtext_amtrelay(ARGS_FROMTEXT) { return ISC_R_SUCCESS; case 3: - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - return dns_name_fromtext(&name, &buffer, origin, options, - target); + return dns_name_wirefromtext(&buffer, origin, options, target); default: UNREACHABLE(); } diff --git a/lib/dns/rdata/generic/cname_5.c b/lib/dns/rdata/generic/cname_5.c index a66c719b332..dbf333effb6 100644 --- a/lib/dns/rdata/generic/cname_5.c +++ b/lib/dns/rdata/generic/cname_5.c @@ -20,7 +20,6 @@ static isc_result_t fromtext_cname(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; REQUIRE(type == dns_rdatatype_cname); @@ -32,12 +31,11 @@ fromtext_cname(ARGS_FROMTEXT) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); return ISC_R_SUCCESS; } @@ -91,7 +89,7 @@ towire_cname(ARGS_TOWIRE) { dns_rdata_toregion(rdata, ®ion); dns_name_fromregion(&name, ®ion); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int diff --git a/lib/dns/rdata/generic/dname_39.c b/lib/dns/rdata/generic/dname_39.c index 7fa31a471d4..6e1d6e14d2a 100644 --- a/lib/dns/rdata/generic/dname_39.c +++ b/lib/dns/rdata/generic/dname_39.c @@ -21,7 +21,6 @@ static isc_result_t fromtext_dname(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; REQUIRE(type == dns_rdatatype_dname); @@ -33,12 +32,11 @@ fromtext_dname(ARGS_FROMTEXT) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); return ISC_R_SUCCESS; } @@ -91,7 +89,7 @@ towire_dname(ARGS_TOWIRE) { dns_rdata_toregion(rdata, ®ion); dns_name_fromregion(&name, ®ion); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int diff --git a/lib/dns/rdata/generic/hip_55.c b/lib/dns/rdata/generic/hip_55.c index 228922ba925..b084a899ebf 100644 --- a/lib/dns/rdata/generic/hip_55.c +++ b/lib/dns/rdata/generic/hip_55.c @@ -20,7 +20,6 @@ static isc_result_t fromtext_hip(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; isc_buffer_t hit_len; isc_buffer_t key_len; @@ -96,7 +95,6 @@ fromtext_hip(ARGS_FROMTEXT) { /* * Rendezvous Servers. */ - dns_name_init(&name); do { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, true)); @@ -104,8 +102,7 @@ fromtext_hip(ARGS_FROMTEXT) { break; } buffer_fromregion(&buffer, &token.value.as_region); - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, - target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); } while (1); /* diff --git a/lib/dns/rdata/generic/ipseckey_45.c b/lib/dns/rdata/generic/ipseckey_45.c index d479e7d2d93..4c4996c4bbd 100644 --- a/lib/dns/rdata/generic/ipseckey_45.c +++ b/lib/dns/rdata/generic/ipseckey_45.c @@ -23,7 +23,6 @@ static isc_result_t fromtext_ipseckey(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; unsigned int gateway; struct in_addr addr; @@ -105,13 +104,11 @@ fromtext_ipseckey(ARGS_FROMTEXT) { break; case 3: - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, - target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); break; } diff --git a/lib/dns/rdata/generic/lp_107.c b/lib/dns/rdata/generic/lp_107.c index 6bc41e298d0..00aa6abc903 100644 --- a/lib/dns/rdata/generic/lp_107.c +++ b/lib/dns/rdata/generic/lp_107.c @@ -23,7 +23,6 @@ static isc_result_t fromtext_lp(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; REQUIRE(type == dns_rdatatype_lp); @@ -42,12 +41,11 @@ fromtext_lp(ARGS_FROMTEXT) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - return dns_name_fromtext(&name, &buffer, origin, options, target); + return dns_name_wirefromtext(&buffer, origin, options, target); } static isc_result_t diff --git a/lib/dns/rdata/generic/mb_7.c b/lib/dns/rdata/generic/mb_7.c index 767d5b5c510..555d92a5147 100644 --- a/lib/dns/rdata/generic/mb_7.c +++ b/lib/dns/rdata/generic/mb_7.c @@ -19,7 +19,6 @@ static isc_result_t fromtext_mb(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; REQUIRE(type == dns_rdatatype_mb); @@ -31,12 +30,11 @@ fromtext_mb(ARGS_FROMTEXT) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); return ISC_R_SUCCESS; } @@ -90,7 +88,7 @@ towire_mb(ARGS_TOWIRE) { dns_rdata_toregion(rdata, ®ion); dns_name_fromregion(&name, ®ion); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int diff --git a/lib/dns/rdata/generic/md_3.c b/lib/dns/rdata/generic/md_3.c index 70d6006e65b..217fd3b0bf1 100644 --- a/lib/dns/rdata/generic/md_3.c +++ b/lib/dns/rdata/generic/md_3.c @@ -19,7 +19,6 @@ static isc_result_t fromtext_md(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; REQUIRE(type == dns_rdatatype_md); @@ -31,12 +30,11 @@ fromtext_md(ARGS_FROMTEXT) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); return ISC_R_SUCCESS; } @@ -90,7 +88,7 @@ towire_md(ARGS_TOWIRE) { dns_rdata_toregion(rdata, ®ion); dns_name_fromregion(&name, ®ion); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int diff --git a/lib/dns/rdata/generic/mf_4.c b/lib/dns/rdata/generic/mf_4.c index ad14f8fa40d..8f353bf717c 100644 --- a/lib/dns/rdata/generic/mf_4.c +++ b/lib/dns/rdata/generic/mf_4.c @@ -19,7 +19,6 @@ static isc_result_t fromtext_mf(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; REQUIRE(type == dns_rdatatype_mf); @@ -31,12 +30,11 @@ fromtext_mf(ARGS_FROMTEXT) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); return ISC_R_SUCCESS; } @@ -90,7 +88,7 @@ towire_mf(ARGS_TOWIRE) { dns_rdata_toregion(rdata, ®ion); dns_name_fromregion(&name, ®ion); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int diff --git a/lib/dns/rdata/generic/mg_8.c b/lib/dns/rdata/generic/mg_8.c index f426c299a59..15dba05c011 100644 --- a/lib/dns/rdata/generic/mg_8.c +++ b/lib/dns/rdata/generic/mg_8.c @@ -19,7 +19,6 @@ static isc_result_t fromtext_mg(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; REQUIRE(type == dns_rdatatype_mg); @@ -31,12 +30,11 @@ fromtext_mg(ARGS_FROMTEXT) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); return ISC_R_SUCCESS; } @@ -90,7 +88,7 @@ towire_mg(ARGS_TOWIRE) { dns_rdata_toregion(rdata, ®ion); dns_name_fromregion(&name, ®ion); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int diff --git a/lib/dns/rdata/generic/minfo_14.c b/lib/dns/rdata/generic/minfo_14.c index aef31a4dc32..460d37c5737 100644 --- a/lib/dns/rdata/generic/minfo_14.c +++ b/lib/dns/rdata/generic/minfo_14.c @@ -19,7 +19,8 @@ static isc_result_t fromtext_minfo(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; + dns_fixedname_t fn; + dns_name_t *name = dns_fixedname_initname(&fn); isc_buffer_t buffer; int i; bool ok; @@ -37,19 +38,18 @@ fromtext_minfo(ARGS_FROMTEXT) { for (i = 0; i < 2; i++) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, - target)); + RETTOK(dns_name_fromtext(name, &buffer, origin, options)); + RETTOK(dns_name_towire(name, NULL, target)); ok = true; if ((options & DNS_RDATA_CHECKNAMES) != 0) { - ok = dns_name_ismailbox(&name); + ok = dns_name_ismailbox(name); } if (!ok && (options & DNS_RDATA_CHECKNAMESFAIL) != 0) { RETTOK(DNS_R_BADNAME); } if (!ok && callbacks != NULL) { - warn_badname(&name, lexer, callbacks); + warn_badname(name, lexer, callbacks); } } return ISC_R_SUCCESS; @@ -129,12 +129,12 @@ towire_minfo(ARGS_TOWIRE) { dns_name_fromregion(&rmail, ®ion); isc_region_consume(®ion, name_length(&rmail)); - RETERR(dns_name_towire(&rmail, cctx, target, NULL)); + RETERR(dns_name_towire(&rmail, cctx, target)); dns_name_fromregion(&rmail, ®ion); isc_region_consume(®ion, rmail.length); - return dns_name_towire(&rmail, cctx, target, NULL); + return dns_name_towire(&rmail, cctx, target); } static int diff --git a/lib/dns/rdata/generic/mr_9.c b/lib/dns/rdata/generic/mr_9.c index a63b37a947e..df023d731ac 100644 --- a/lib/dns/rdata/generic/mr_9.c +++ b/lib/dns/rdata/generic/mr_9.c @@ -19,7 +19,6 @@ static isc_result_t fromtext_mr(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; REQUIRE(type == dns_rdatatype_mr); @@ -31,12 +30,11 @@ fromtext_mr(ARGS_FROMTEXT) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); return ISC_R_SUCCESS; } @@ -90,7 +88,7 @@ towire_mr(ARGS_TOWIRE) { dns_rdata_toregion(rdata, ®ion); dns_name_fromregion(&name, ®ion); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int diff --git a/lib/dns/rdata/generic/mx_15.c b/lib/dns/rdata/generic/mx_15.c index 50464d71b65..84ffd0e4a56 100644 --- a/lib/dns/rdata/generic/mx_15.c +++ b/lib/dns/rdata/generic/mx_15.c @@ -47,7 +47,8 @@ check_mx(isc_token_t *token) { static isc_result_t fromtext_mx(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; + dns_fixedname_t fn; + dns_name_t *name = dns_fixedname_initname(&fn); isc_buffer_t buffer; bool ok; @@ -77,21 +78,21 @@ fromtext_mx(ARGS_FROMTEXT) { warn_badmx(&token, lexer, callbacks); } - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_fromtext(name, &buffer, origin, options)); + RETTOK(dns_name_towire(name, NULL, target)); ok = true; if ((options & DNS_RDATA_CHECKNAMES) != 0) { - ok = dns_name_ishostname(&name, false); + ok = dns_name_ishostname(name, false); } if (!ok && (options & DNS_RDATA_CHECKNAMESFAIL) != 0) { RETTOK(DNS_R_BADNAME); } if (!ok && callbacks != NULL) { - warn_badname(&name, lexer, callbacks); + warn_badname(name, lexer, callbacks); } return ISC_R_SUCCESS; } @@ -165,7 +166,7 @@ towire_mx(ARGS_TOWIRE) { dns_name_init(&name); dns_name_fromregion(&name, ®ion); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int @@ -290,7 +291,7 @@ additionaldata_mx(ARGS_ADDLDATA) { dns_fixedname_init(&fixed); result = dns_name_concatenate(&port25, &name, - dns_fixedname_name(&fixed), NULL); + dns_fixedname_name(&fixed)); if (result != ISC_R_SUCCESS) { return ISC_R_SUCCESS; } diff --git a/lib/dns/rdata/generic/naptr_35.c b/lib/dns/rdata/generic/naptr_35.c index d66b6934a75..7589106c6a0 100644 --- a/lib/dns/rdata/generic/naptr_35.c +++ b/lib/dns/rdata/generic/naptr_35.c @@ -172,7 +172,6 @@ txt_valid_regex(const unsigned char *txt) { static isc_result_t fromtext_naptr(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; unsigned char *regex; @@ -230,12 +229,11 @@ fromtext_naptr(ARGS_FROMTEXT) { */ RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); return ISC_R_SUCCESS; } @@ -388,7 +386,7 @@ towire_naptr(ARGS_TOWIRE) { */ dns_name_init(&name); dns_name_fromregion(&name, &sr); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int diff --git a/lib/dns/rdata/generic/ns_2.c b/lib/dns/rdata/generic/ns_2.c index 73e9b7c6e6b..89362b6c83f 100644 --- a/lib/dns/rdata/generic/ns_2.c +++ b/lib/dns/rdata/generic/ns_2.c @@ -19,7 +19,8 @@ static isc_result_t fromtext_ns(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; + dns_fixedname_t fn; + dns_name_t *name = dns_fixedname_initname(&fn); isc_buffer_t buffer; bool ok; @@ -32,21 +33,21 @@ fromtext_ns(ARGS_FROMTEXT) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_fromtext(name, &buffer, origin, options)); + RETTOK(dns_name_towire(name, NULL, target)); ok = true; if ((options & DNS_RDATA_CHECKNAMES) != 0) { - ok = dns_name_ishostname(&name, false); + ok = dns_name_ishostname(name, false); } if (!ok && (options & DNS_RDATA_CHECKNAMESFAIL) != 0) { RETTOK(DNS_R_BADNAME); } if (!ok && callbacks != NULL) { - warn_badname(&name, lexer, callbacks); + warn_badname(name, lexer, callbacks); } return ISC_R_SUCCESS; } @@ -101,7 +102,7 @@ towire_ns(ARGS_TOWIRE) { dns_rdata_toregion(rdata, ®ion); dns_name_fromregion(&name, ®ion); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int diff --git a/lib/dns/rdata/generic/nsec_47.c b/lib/dns/rdata/generic/nsec_47.c index 59db69d2568..e8858bb6d8d 100644 --- a/lib/dns/rdata/generic/nsec_47.c +++ b/lib/dns/rdata/generic/nsec_47.c @@ -27,7 +27,6 @@ static isc_result_t fromtext_nsec(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; REQUIRE(type == dns_rdatatype_nsec); @@ -41,12 +40,11 @@ fromtext_nsec(ARGS_FROMTEXT) { */ RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); return typemap_fromtext(lexer, target, false); } @@ -110,7 +108,7 @@ towire_nsec(ARGS_TOWIRE) { dns_rdata_toregion(rdata, &sr); dns_name_fromregion(&name, &sr); isc_region_consume(&sr, name_length(&name)); - RETERR(dns_name_towire(&name, cctx, target, NULL)); + RETERR(dns_name_towire(&name, cctx, target)); return mem_tobuffer(target, sr.base, sr.length); } diff --git a/lib/dns/rdata/generic/nxt_30.c b/lib/dns/rdata/generic/nxt_30.c index 1a828933b26..077bd73f5ac 100644 --- a/lib/dns/rdata/generic/nxt_30.c +++ b/lib/dns/rdata/generic/nxt_30.c @@ -25,7 +25,6 @@ static isc_result_t fromtext_nxt(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; char *e; unsigned char bm[8 * 1024]; /* 64k bits */ @@ -45,12 +44,11 @@ fromtext_nxt(ARGS_FROMTEXT) { */ RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); memset(bm, 0, sizeof(bm)); do { @@ -173,7 +171,7 @@ towire_nxt(ARGS_TOWIRE) { dns_rdata_toregion(rdata, &sr); dns_name_fromregion(&name, &sr); isc_region_consume(&sr, name_length(&name)); - RETERR(dns_name_towire(&name, cctx, target, NULL)); + RETERR(dns_name_towire(&name, cctx, target)); return mem_tobuffer(target, sr.base, sr.length); } diff --git a/lib/dns/rdata/generic/ptr_12.c b/lib/dns/rdata/generic/ptr_12.c index b24178c9677..e0b5ea6309c 100644 --- a/lib/dns/rdata/generic/ptr_12.c +++ b/lib/dns/rdata/generic/ptr_12.c @@ -19,8 +19,9 @@ static isc_result_t fromtext_ptr(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; + dns_fixedname_t fn; + dns_name_t *name = dns_fixedname_initname(&fn); REQUIRE(type == dns_rdatatype_ptr); @@ -31,23 +32,25 @@ fromtext_ptr(ARGS_FROMTEXT) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + + RETTOK(dns_name_fromtext(name, &buffer, origin, options)); + RETTOK(dns_name_towire(name, NULL, target)); + if (rdclass == dns_rdataclass_in && (options & DNS_RDATA_CHECKNAMES) != 0 && (options & DNS_RDATA_CHECKREVERSE) != 0) { bool ok; - ok = dns_name_ishostname(&name, false); + ok = dns_name_ishostname(name, false); if (!ok && (options & DNS_RDATA_CHECKNAMESFAIL) != 0) { RETTOK(DNS_R_BADNAME); } if (!ok && callbacks != NULL) { - warn_badname(&name, lexer, callbacks); + warn_badname(name, lexer, callbacks); } } return ISC_R_SUCCESS; @@ -103,7 +106,7 @@ towire_ptr(ARGS_TOWIRE) { dns_rdata_toregion(rdata, ®ion); dns_name_fromregion(&name, ®ion); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int diff --git a/lib/dns/rdata/generic/rp_17.c b/lib/dns/rdata/generic/rp_17.c index f652aa2c2c1..bc1861e9881 100644 --- a/lib/dns/rdata/generic/rp_17.c +++ b/lib/dns/rdata/generic/rp_17.c @@ -21,7 +21,6 @@ static isc_result_t fromtext_rp(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; int i; bool ok; @@ -37,21 +36,25 @@ fromtext_rp(ARGS_FROMTEXT) { } for (i = 0; i < 2; i++) { + dns_fixedname_t fn; + dns_name_t *name = dns_fixedname_initname(&fn); + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, - target)); + + RETTOK(dns_name_fromtext(name, &buffer, origin, options)); + RETTOK(dns_name_towire(name, NULL, target)); + ok = true; if ((options & DNS_RDATA_CHECKNAMES) != 0 && i == 0) { - ok = dns_name_ismailbox(&name); + ok = dns_name_ismailbox(name); } if (!ok && (options & DNS_RDATA_CHECKNAMESFAIL) != 0) { RETTOK(DNS_R_BADNAME); } if (!ok && callbacks != NULL) { - warn_badname(&name, lexer, callbacks); + warn_badname(name, lexer, callbacks); } } return ISC_R_SUCCESS; @@ -130,12 +133,12 @@ towire_rp(ARGS_TOWIRE) { dns_name_fromregion(&rmail, ®ion); isc_region_consume(®ion, rmail.length); - RETERR(dns_name_towire(&rmail, cctx, target, NULL)); + RETERR(dns_name_towire(&rmail, cctx, target)); dns_name_fromregion(&rmail, ®ion); isc_region_consume(®ion, rmail.length); - return dns_name_towire(&rmail, cctx, target, NULL); + return dns_name_towire(&rmail, cctx, target); } static int diff --git a/lib/dns/rdata/generic/rrsig_46.c b/lib/dns/rdata/generic/rrsig_46.c index 7cad4b65aec..91202513afd 100644 --- a/lib/dns/rdata/generic/rrsig_46.c +++ b/lib/dns/rdata/generic/rrsig_46.c @@ -28,7 +28,6 @@ fromtext_rrsig(ARGS_FROMTEXT) { dns_rdatatype_t covered; char *e; isc_result_t result; - dns_name_t name; isc_buffer_t buffer; uint32_t time_signed, time_expire; unsigned int used; @@ -145,12 +144,11 @@ fromtext_rrsig(ARGS_FROMTEXT) { */ RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); /* * Sig. @@ -377,7 +375,7 @@ towire_rrsig(ARGS_TOWIRE) { dns_name_init(&name); dns_name_fromregion(&name, &sr); isc_region_consume(&sr, name_length(&name)); - RETERR(dns_name_towire(&name, cctx, target, NULL)); + RETERR(dns_name_towire(&name, cctx, target)); /* * Signature. diff --git a/lib/dns/rdata/generic/rt_21.c b/lib/dns/rdata/generic/rt_21.c index 7402a14acd1..798693f92b8 100644 --- a/lib/dns/rdata/generic/rt_21.c +++ b/lib/dns/rdata/generic/rt_21.c @@ -21,8 +21,9 @@ static isc_result_t fromtext_rt(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; + dns_fixedname_t fn; + dns_name_t *name = dns_fixedname_initname(&fn); bool ok; REQUIRE(type == dns_rdatatype_rt); @@ -41,21 +42,23 @@ fromtext_rt(ARGS_FROMTEXT) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + + RETTOK(dns_name_fromtext(name, &buffer, origin, options)); + RETTOK(dns_name_towire(name, NULL, target)); + ok = true; if ((options & DNS_RDATA_CHECKNAMES) != 0) { - ok = dns_name_ishostname(&name, false); + ok = dns_name_ishostname(name, false); } if (!ok && (options & DNS_RDATA_CHECKNAMESFAIL) != 0) { RETTOK(DNS_R_BADNAME); } if (!ok && callbacks != NULL) { - warn_badname(&name, lexer, callbacks); + warn_badname(name, lexer, callbacks); } return ISC_R_SUCCESS; } @@ -138,7 +141,7 @@ towire_rt(ARGS_TOWIRE) { dns_name_init(&name); dns_name_fromregion(&name, ®ion); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int diff --git a/lib/dns/rdata/generic/sig_24.c b/lib/dns/rdata/generic/sig_24.c index beeb366571b..04b37fcd393 100644 --- a/lib/dns/rdata/generic/sig_24.c +++ b/lib/dns/rdata/generic/sig_24.c @@ -26,7 +26,6 @@ fromtext_sig(ARGS_FROMTEXT) { dns_rdatatype_t covered; char *e; isc_result_t result; - dns_name_t name; isc_buffer_t buffer; uint32_t time_signed, time_expire; unsigned int used; @@ -109,12 +108,11 @@ fromtext_sig(ARGS_FROMTEXT) { */ RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); /* * Sig. @@ -341,7 +339,7 @@ towire_sig(ARGS_TOWIRE) { dns_name_init(&name); dns_name_fromregion(&name, &sr); isc_region_consume(&sr, name_length(&name)); - RETERR(dns_name_towire(&name, cctx, target, NULL)); + RETERR(dns_name_towire(&name, cctx, target)); /* * Signature. diff --git a/lib/dns/rdata/generic/soa_6.c b/lib/dns/rdata/generic/soa_6.c index 14575c3002d..427433ee28b 100644 --- a/lib/dns/rdata/generic/soa_6.c +++ b/lib/dns/rdata/generic/soa_6.c @@ -19,7 +19,6 @@ static isc_result_t fromtext_soa(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; int i; uint32_t n; @@ -36,21 +35,23 @@ fromtext_soa(ARGS_FROMTEXT) { } for (i = 0; i < 2; i++) { + dns_fixedname_t fn; + dns_name_t *name = dns_fixedname_initname(&fn); + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, - target)); + RETTOK(dns_name_fromtext(name, &buffer, origin, options)); + RETTOK(dns_name_towire(name, NULL, target)); ok = true; if ((options & DNS_RDATA_CHECKNAMES) != 0) { switch (i) { case 0: - ok = dns_name_ishostname(&name, false); + ok = dns_name_ishostname(name, false); break; case 1: - ok = dns_name_ismailbox(&name); + ok = dns_name_ismailbox(name); break; } } @@ -58,7 +59,7 @@ fromtext_soa(ARGS_FROMTEXT) { RETTOK(DNS_R_BADNAME); } if (!ok && callbacks != NULL) { - warn_badname(&name, lexer, callbacks); + warn_badname(name, lexer, callbacks); } } @@ -213,11 +214,11 @@ towire_soa(ARGS_TOWIRE) { dns_name_fromregion(&mname, &sregion); isc_region_consume(&sregion, name_length(&mname)); - RETERR(dns_name_towire(&mname, cctx, target, NULL)); + RETERR(dns_name_towire(&mname, cctx, target)); dns_name_fromregion(&rname, &sregion); isc_region_consume(&sregion, name_length(&rname)); - RETERR(dns_name_towire(&rname, cctx, target, NULL)); + RETERR(dns_name_towire(&rname, cctx, target)); isc_buffer_availableregion(target, &tregion); if (tregion.length < 20) { diff --git a/lib/dns/rdata/generic/talink_58.c b/lib/dns/rdata/generic/talink_58.c index 68328dc65a2..fef1195b322 100644 --- a/lib/dns/rdata/generic/talink_58.c +++ b/lib/dns/rdata/generic/talink_58.c @@ -19,7 +19,6 @@ static isc_result_t fromtext_talink(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; int i; @@ -37,10 +36,8 @@ fromtext_talink(ARGS_FROMTEXT) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, - target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); } return ISC_R_SUCCESS; @@ -117,11 +114,11 @@ towire_talink(ARGS_TOWIRE) { dns_name_fromregion(&prev, &sregion); isc_region_consume(&sregion, name_length(&prev)); - RETERR(dns_name_towire(&prev, cctx, target, NULL)); + RETERR(dns_name_towire(&prev, cctx, target)); dns_name_fromregion(&next, &sregion); isc_region_consume(&sregion, name_length(&next)); - return dns_name_towire(&next, cctx, target, NULL); + return dns_name_towire(&next, cctx, target); } static int diff --git a/lib/dns/rdata/generic/tkey_249.c b/lib/dns/rdata/generic/tkey_249.c index e700ab4987b..b16757b3ada 100644 --- a/lib/dns/rdata/generic/tkey_249.c +++ b/lib/dns/rdata/generic/tkey_249.c @@ -22,7 +22,6 @@ static isc_result_t fromtext_tkey(ARGS_FROMTEXT) { isc_token_t token; dns_rcode_t rcode; - dns_name_t name; isc_buffer_t buffer; long i; char *e; @@ -38,12 +37,11 @@ fromtext_tkey(ARGS_FROMTEXT) { */ RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); /* * Inception. @@ -320,7 +318,7 @@ towire_tkey(ARGS_TOWIRE) { dns_rdata_toregion(rdata, &sr); dns_name_init(&name); dns_name_fromregion(&name, &sr); - RETERR(dns_name_towire(&name, cctx, target, NULL)); + RETERR(dns_name_towire(&name, cctx, target)); isc_region_consume(&sr, name_length(&name)); return mem_tobuffer(target, sr.base, sr.length); diff --git a/lib/dns/rdata/in_1/a6_38.c b/lib/dns/rdata/in_1/a6_38.c index da76a50f5d0..822f9b225be 100644 --- a/lib/dns/rdata/in_1/a6_38.c +++ b/lib/dns/rdata/in_1/a6_38.c @@ -27,8 +27,9 @@ fromtext_in_a6(ARGS_FROMTEXT) { unsigned char prefixlen; unsigned char octets; unsigned char mask; - dns_name_t name; isc_buffer_t buffer; + dns_fixedname_t fn; + dns_name_t *name = dns_fixedname_initname(&fn); bool ok; REQUIRE(type == dns_rdatatype_a6); @@ -77,21 +78,23 @@ fromtext_in_a6(ARGS_FROMTEXT) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + + RETTOK(dns_name_fromtext(name, &buffer, origin, options)); + RETTOK(dns_name_towire(name, NULL, target)); + ok = true; if ((options & DNS_RDATA_CHECKNAMES) != 0) { - ok = dns_name_ishostname(&name, false); + ok = dns_name_ishostname(name, false); } if (!ok && (options & DNS_RDATA_CHECKNAMESFAIL) != 0) { RETTOK(DNS_R_BADNAME); } if (!ok && callbacks != NULL) { - warn_badname(&name, lexer, callbacks); + warn_badname(name, lexer, callbacks); } return ISC_R_SUCCESS; } @@ -226,7 +229,7 @@ towire_in_a6(ARGS_TOWIRE) { dns_name_init(&name); dns_name_fromregion(&name, &sr); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int diff --git a/lib/dns/rdata/in_1/kx_36.c b/lib/dns/rdata/in_1/kx_36.c index 8bc548913f8..3498b72d260 100644 --- a/lib/dns/rdata/in_1/kx_36.c +++ b/lib/dns/rdata/in_1/kx_36.c @@ -21,7 +21,6 @@ static isc_result_t fromtext_in_kx(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; REQUIRE(type == dns_rdatatype_kx); @@ -40,12 +39,11 @@ fromtext_in_kx(ARGS_FROMTEXT) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); return ISC_R_SUCCESS; } @@ -120,7 +118,7 @@ towire_in_kx(ARGS_TOWIRE) { dns_name_init(&name); dns_name_fromregion(&name, ®ion); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int diff --git a/lib/dns/rdata/in_1/nsap-ptr_23.c b/lib/dns/rdata/in_1/nsap-ptr_23.c index 1afb6a5ef06..929d3264221 100644 --- a/lib/dns/rdata/in_1/nsap-ptr_23.c +++ b/lib/dns/rdata/in_1/nsap-ptr_23.c @@ -21,7 +21,6 @@ static isc_result_t fromtext_in_nsap_ptr(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; REQUIRE(type == dns_rdatatype_nsap_ptr); @@ -34,12 +33,11 @@ fromtext_in_nsap_ptr(ARGS_FROMTEXT) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); return ISC_R_SUCCESS; } @@ -95,7 +93,7 @@ towire_in_nsap_ptr(ARGS_TOWIRE) { dns_rdata_toregion(rdata, ®ion); dns_name_fromregion(&name, ®ion); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int diff --git a/lib/dns/rdata/in_1/px_26.c b/lib/dns/rdata/in_1/px_26.c index 07b555750dc..89603478ed2 100644 --- a/lib/dns/rdata/in_1/px_26.c +++ b/lib/dns/rdata/in_1/px_26.c @@ -21,7 +21,6 @@ static isc_result_t fromtext_in_px(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; REQUIRE(type == dns_rdatatype_px); @@ -50,18 +49,16 @@ fromtext_in_px(ARGS_FROMTEXT) { */ RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); /* * MAPX400. */ RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_wirefromtext(&buffer, origin, options, target)); return ISC_R_SUCCESS; } @@ -168,7 +165,7 @@ towire_in_px(ARGS_TOWIRE) { */ dns_name_init(&name); dns_name_fromregion(&name, ®ion); - RETERR(dns_name_towire(&name, cctx, target, NULL)); + RETERR(dns_name_towire(&name, cctx, target)); isc_region_consume(®ion, name_length(&name)); /* @@ -176,7 +173,7 @@ towire_in_px(ARGS_TOWIRE) { */ dns_name_init(&name); dns_name_fromregion(&name, ®ion); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int diff --git a/lib/dns/rdata/in_1/srv_33.c b/lib/dns/rdata/in_1/srv_33.c index d8693a51137..5c0cb1ed729 100644 --- a/lib/dns/rdata/in_1/srv_33.c +++ b/lib/dns/rdata/in_1/srv_33.c @@ -21,8 +21,9 @@ static isc_result_t fromtext_in_srv(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; + dns_fixedname_t fn; + dns_name_t *name = dns_fixedname_initname(&fn); bool ok; REQUIRE(type == dns_rdatatype_srv); @@ -67,22 +68,24 @@ fromtext_in_srv(ARGS_FROMTEXT) { */ RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + RETTOK(dns_name_fromtext(name, &buffer, origin, options)); + RETTOK(dns_name_towire(name, NULL, target)); ok = true; + if ((options & DNS_RDATA_CHECKNAMES) != 0) { - ok = dns_name_ishostname(&name, false); + ok = dns_name_ishostname(name, false); } if (!ok && (options & DNS_RDATA_CHECKNAMESFAIL) != 0) { RETTOK(DNS_R_BADNAME); } if (!ok && callbacks != NULL) { - warn_badname(&name, lexer, callbacks); + warn_badname(name, lexer, callbacks); } + return ISC_R_SUCCESS; } @@ -191,7 +194,7 @@ towire_in_srv(ARGS_TOWIRE) { */ dns_name_init(&name); dns_name_fromregion(&name, &sr); - return dns_name_towire(&name, cctx, target, NULL); + return dns_name_towire(&name, cctx, target); } static int @@ -341,7 +344,7 @@ additionaldata_in_srv(ARGS_ADDLDATA) { } result = dns_name_concatenate(dns_fixedname_name(&fixed), &name, - dns_fixedname_name(&fixed), NULL); + dns_fixedname_name(&fixed)); if (result != ISC_R_SUCCESS) { return ISC_R_SUCCESS; } diff --git a/lib/dns/rdata/in_1/svcb_64.c b/lib/dns/rdata/in_1/svcb_64.c index ce7a297ec08..0f458c9c048 100644 --- a/lib/dns/rdata/in_1/svcb_64.c +++ b/lib/dns/rdata/in_1/svcb_64.c @@ -552,11 +552,12 @@ svcsortkeys(isc_buffer_t *target, unsigned int used) { static isc_result_t generic_fromtext_in_svcb(ARGS_FROMTEXT) { isc_token_t token; - dns_name_t name; isc_buffer_t buffer; bool alias; bool ok = true; unsigned int used; + dns_fixedname_t fn; + dns_name_t *name = dns_fixedname_initname(&fn); UNUSED(type); UNUSED(rdclass); @@ -579,20 +580,22 @@ generic_fromtext_in_svcb(ARGS_FROMTEXT) { */ RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_qstring, false)); - dns_name_init(&name); buffer_fromregion(&buffer, &token.value.as_region); if (origin == NULL) { origin = dns_rootname; } - RETTOK(dns_name_fromtext(&name, &buffer, origin, options, target)); + + RETTOK(dns_name_fromtext(name, &buffer, origin, options)); + RETTOK(dns_name_towire(name, NULL, target)); + if (!alias && (options & DNS_RDATA_CHECKNAMES) != 0) { - ok = dns_name_ishostname(&name, false); + ok = dns_name_ishostname(name, false); } if (!ok && (options & DNS_RDATA_CHECKNAMESFAIL) != 0) { RETTOK(DNS_R_BADNAME); } if (!ok && callbacks != NULL) { - warn_badname(&name, lexer, callbacks); + warn_badname(name, lexer, callbacks); } /* @@ -940,7 +943,7 @@ generic_towire_in_svcb(ARGS_TOWIRE) { */ dns_name_init(&name); dns_name_fromregion(&name, ®ion); - RETERR(dns_name_towire(&name, cctx, target, NULL)); + RETERR(dns_name_towire(&name, cctx, target)); isc_region_consume(®ion, name_length(&name)); /* diff --git a/lib/dns/rdataset.c b/lib/dns/rdataset.c index d0962fe95e6..28659b48670 100644 --- a/lib/dns/rdataset.c +++ b/lib/dns/rdataset.c @@ -247,7 +247,6 @@ towire(dns_rdataset_t *rdataset, const dns_name_t *owner_name, struct towire_sort *out = out_fixed; dns_fixedname_t fixed; dns_name_t *name = NULL; - uint16_t offset; /* * Convert 'rdataset' to wire format, compressing names as specified @@ -357,7 +356,7 @@ towire(dns_rdataset_t *rdataset, const dns_name_t *owner_name, name = dns_fixedname_initname(&fixed); dns_name_copy(owner_name, name); dns_rdataset_getownercase(rdataset, name); - offset = 0xffff; + dns_compress_setmultiuse(cctx, true); name->attributes.nocompress |= owner_name->attributes.nocompress; @@ -368,15 +367,14 @@ towire(dns_rdataset_t *rdataset, const dns_name_t *owner_name, rrbuffer = *target; dns_compress_setpermitted(cctx, true); - result = dns_name_towire(name, cctx, target, &offset); + result = dns_name_towire(name, cctx, target); if (result != ISC_R_SUCCESS) { goto rollback; } headlen = sizeof(dns_rdataclass_t) + sizeof(dns_rdatatype_t); if (!question) { headlen += sizeof(dns_ttl_t) + 2; - } /* XXX 2 for rdata len - */ + } /* XXX 2 for rdata len */ isc_buffer_availableregion(target, &r); if (r.length < headlen) { result = ISC_R_NOSPACE; diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index 962b79109b3..73d4815163f 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -2703,7 +2703,7 @@ resquery_send(resquery_t *query) { memset(&zr, 0, sizeof(zr)); isc_buffer_init(&zb, zone, sizeof(zone)); dns_compress_setpermitted(&cctx, false); - result = dns_name_towire(fctx->domain, &cctx, &zb, NULL); + result = dns_name_towire(fctx->domain, &cctx, &zb); if (result == ISC_R_SUCCESS) { isc_buffer_usedregion(&zb, &zr); } @@ -6929,8 +6929,7 @@ is_answertarget_allowed(fetchctx_t *fctx, dns_name_t *qname, dns_name_t *rname, tname = dns_fixedname_initname(&fixed); nlabels = dns_name_countlabels(rname); dns_name_split(qname, nlabels, &prefix, NULL); - result = dns_name_concatenate(&prefix, &dname.dname, tname, - NULL); + result = dns_name_concatenate(&prefix, &dname.dname, tname); if (result == DNS_R_NAMETOOLONG) { SET_IF_NOT_NULL(chainingp, true); return true; @@ -9730,7 +9729,7 @@ rctx_logpacket(respctx_t *rctx) { dns_compress_init(&cctx, fctx->mctx, 0); dns_compress_setpermitted(&cctx, false); isc_buffer_init(&zb, zone, sizeof(zone)); - result = dns_name_towire(fctx->domain, &cctx, &zb, NULL); + result = dns_name_towire(fctx->domain, &cctx, &zb); if (result == ISC_R_SUCCESS) { isc_buffer_usedregion(&zb, &zr); } diff --git a/lib/dns/rpz.c b/lib/dns/rpz.c index 130d833f3f6..42c7b286bac 100644 --- a/lib/dns/rpz.c +++ b/lib/dns/rpz.c @@ -818,7 +818,7 @@ ip2name(const dns_rpz_cidr_key_t *tgt_ip, dns_rpz_prefix_t tgt_prefix, isc_buffer_init(&buffer, str, sizeof(str)); isc_buffer_add(&buffer, len); - result = dns_name_fromtext(ip_name, &buffer, base_name, 0, NULL); + result = dns_name_fromtext(ip_name, &buffer, base_name, 0); return result; } @@ -1071,7 +1071,7 @@ name2data(dns_rpz_zone_t *rpz, dns_rpz_type_t rpz_type, n -= dns_name_countlabels(&rpz->nsdname); } dns_name_getlabelsequence(src_name, prefix_len, n, &tmp_name); - (void)dns_name_concatenate(&tmp_name, dns_rootname, trig_name, NULL); + (void)dns_name_concatenate(&tmp_name, dns_rootname, trig_name); } #ifndef HAVE_BUILTIN_CLZ diff --git a/lib/dns/rrl.c b/lib/dns/rrl.c index e9fa6171a3f..ede8966cc89 100644 --- a/lib/dns/rrl.c +++ b/lib/dns/rrl.c @@ -432,7 +432,7 @@ make_key(const dns_rrl_t *rrl, dns_rrl_key_t *key, */ wild = dns_fixedname_initname(&fixed); result = dns_name_concatenate(dns_wildcardname, origin, - wild, NULL); + wild); if (result != ISC_R_SUCCESS) { /* * Fallback to use the zone's origin name diff --git a/lib/dns/sdlz.c b/lib/dns/sdlz.c index 29cf564c6a7..e99f34da13d 100644 --- a/lib/dns/sdlz.c +++ b/lib/dns/sdlz.c @@ -549,8 +549,8 @@ getnodedata(dns_db_t *db, const dns_name_t *name, bool create, fname = dns_fixedname_name(&fixed); dns_name_getlabelsequence( name, i + 1, dlabels - i - 1, fname); - result = dns_name_concatenate( - dns_wildcardname, fname, fname, NULL); + result = dns_name_concatenate(dns_wildcardname, + fname, fname); if (result != ISC_R_SUCCESS) { MAYBE_UNLOCK(sdlz->dlzimp); return result; @@ -1798,7 +1798,7 @@ dns_sdlz_putnamedrr(dns_sdlzallnodes_t *allnodes, const char *name, isc_buffer_constinit(&b, name, strlen(name)); isc_buffer_add(&b, strlen(name)); - result = dns_name_fromtext(newname, &b, origin, 0, NULL); + result = dns_name_fromtext(newname, &b, origin, 0); if (result != ISC_R_SUCCESS) { return result; } diff --git a/lib/dns/skr.c b/lib/dns/skr.c index e2dada1f790..ee64025b344 100644 --- a/lib/dns/skr.c +++ b/lib/dns/skr.c @@ -72,7 +72,7 @@ parse_rr(isc_lex_t *lex, isc_mem_t *mctx, char *owner, dns_name_t *origin, dname = dns_fixedname_initname(&dfname); isc_buffer_init(&b, owner, strlen(owner)); isc_buffer_add(&b, strlen(owner)); - ret = dns_name_fromtext(dname, &b, dns_rootname, 0, NULL); + ret = dns_name_fromtext(dname, &b, dns_rootname, 0); if (ret != ISC_R_SUCCESS) { return ret; } diff --git a/lib/dns/ssu.c b/lib/dns/ssu.c index f2892041004..29ca14ee688 100644 --- a/lib/dns/ssu.c +++ b/lib/dns/ssu.c @@ -278,7 +278,7 @@ reverse_from_address(dns_name_t *tcpself, const isc_netaddr_t *tcpaddr) { } isc_buffer_init(&b, buf, strlen(buf)); isc_buffer_add(&b, strlen(buf)); - result = dns_name_fromtext(tcpself, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(tcpself, &b, dns_rootname, 0); RUNTIME_CHECK(result == ISC_R_SUCCESS); } @@ -318,7 +318,7 @@ stf_from_address(dns_name_t *stfself, const isc_netaddr_t *tcpaddr) { } isc_buffer_init(&b, buf, strlen(buf)); isc_buffer_add(&b, strlen(buf)); - result = dns_name_fromtext(stfself, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(stfself, &b, dns_rootname, 0); RUNTIME_CHECK(result == ISC_R_SUCCESS); } @@ -631,7 +631,7 @@ dns_ssutable_checkrules(dns_ssutable_t *table, const dns_name_t *signer, case dns_ssumatchtype_selfwild: wildcard = dns_fixedname_initname(&fixed); result = dns_name_concatenate(dns_wildcardname, signer, - wildcard, NULL); + wildcard); if (result != ISC_R_SUCCESS) { if (logit) { isc_log_write( diff --git a/lib/dns/tkey.c b/lib/dns/tkey.c index c34d8f8f3f1..ecfb21731d2 100644 --- a/lib/dns/tkey.c +++ b/lib/dns/tkey.c @@ -473,10 +473,9 @@ dns_tkey_processquery(dns_message_t *msg, dns_tkeyctx_t *tctx, isc_nonce_buf(randomdata, sizeof(randomdata)); isc_buffer_init(&b, randomtext, sizeof(randomtext)); RETERR(isc_hex_totext(&r, 2, "", &b)); - RETERR(dns_name_fromtext(keyname, &b, NULL, 0, NULL)); + RETERR(dns_name_fromtext(keyname, &b, NULL, 0)); } - RETERR(dns_name_concatenate(keyname, dns_rootname, keyname, - NULL)); + RETERR(dns_name_concatenate(keyname, dns_rootname, keyname)); result = dns_tsigkey_find(&tsigkey, keyname, NULL, ring); if (result == ISC_R_SUCCESS) { diff --git a/lib/dns/tsig.c b/lib/dns/tsig.c index 828a4addf1e..57da1846588 100644 --- a/lib/dns/tsig.c +++ b/lib/dns/tsig.c @@ -372,7 +372,7 @@ restore_key(dns_tsigkeyring_t *ring, isc_stdtime_t now, FILE *fp) { name = dns_fixedname_initname(&fname); isc_buffer_init(&b, namestr, strlen(namestr)); isc_buffer_add(&b, strlen(namestr)); - result = dns_name_fromtext(name, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(name, &b, dns_rootname, 0); if (result != ISC_R_SUCCESS) { return result; } @@ -380,7 +380,7 @@ restore_key(dns_tsigkeyring_t *ring, isc_stdtime_t now, FILE *fp) { creator = dns_fixedname_initname(&fcreator); isc_buffer_init(&b, creatorstr, strlen(creatorstr)); isc_buffer_add(&b, strlen(creatorstr)); - result = dns_name_fromtext(creator, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(creator, &b, dns_rootname, 0); if (result != ISC_R_SUCCESS) { return result; } @@ -388,7 +388,7 @@ restore_key(dns_tsigkeyring_t *ring, isc_stdtime_t now, FILE *fp) { algorithm = dns_fixedname_initname(&falgorithm); isc_buffer_init(&b, algorithmstr, strlen(algorithmstr)); isc_buffer_add(&b, strlen(algorithmstr)); - result = dns_name_fromtext(algorithm, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(algorithm, &b, dns_rootname, 0); if (result != ISC_R_SUCCESS) { return result; } diff --git a/lib/dns/validator.c b/lib/dns/validator.c index fd732519763..806d20da8e1 100644 --- a/lib/dns/validator.c +++ b/lib/dns/validator.c @@ -2610,8 +2610,7 @@ findnsec3proofs(dns_validator_t *val) { { val->attributes |= VALATTR_FOUNDCLOSEST; result = dns_name_concatenate(dns_wildcardname, closest, - dns_fixedname_name(&val->wild), - NULL); + dns_fixedname_name(&val->wild)); RUNTIME_CHECK(result == ISC_R_SUCCESS); } else { val->attributes &= ~VALATTR_FOUNDNOQNAME; diff --git a/lib/dns/view.c b/lib/dns/view.c index be7db571c85..963d862723e 100644 --- a/lib/dns/view.c +++ b/lib/dns/view.c @@ -2071,8 +2071,7 @@ dns_view_loadnta(dns_view_t *view) { isc_buffer_init(&b, name, (unsigned int)len); isc_buffer_add(&b, (unsigned int)len); - CHECK(dns_name_fromtext(fname, &b, dns_rootname, 0, - NULL)); + CHECK(dns_name_fromtext(fname, &b, dns_rootname, 0)); ntaname = fname; } diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 98690078b24..bc021815272 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -4881,7 +4881,7 @@ check_reportchannel(dns_zone_t *zone, dns_db_t *db) { * Otherwise, we need a '*._er' wildcard with a TXT rdataset. */ name = dns_fixedname_initname(&fixed); - CHECK(dns_name_concatenate(&er, &zone->origin, name, NULL)); + CHECK(dns_name_concatenate(&er, &zone->origin, name)); CHECK(dns_db_findnode(db, name, false, &node)); dns_db_currentversion(db, &version); diff --git a/lib/isccfg/aclconf.c b/lib/isccfg/aclconf.c index 10973151cc7..133322a0dfc 100644 --- a/lib/isccfg/aclconf.c +++ b/lib/isccfg/aclconf.c @@ -181,7 +181,7 @@ convert_keyname(const cfg_obj_t *keyobj, isc_mem_t *mctx, dns_name_t *dnsname) { isc_buffer_add(&buf, keylen); dns_fixedname_init(&fixname); result = dns_name_fromtext(dns_fixedname_name(&fixname), &buf, - dns_rootname, 0, NULL); + dns_rootname, 0); if (result != ISC_R_SUCCESS) { cfg_obj_log(keyobj, ISC_LOG_WARNING, "key name '%s' is not a valid domain name", diff --git a/lib/isccfg/check.c b/lib/isccfg/check.c index c60eec4b676..2e8a4b22973 100644 --- a/lib/isccfg/check.c +++ b/lib/isccfg/check.c @@ -136,7 +136,7 @@ check_orderent(const cfg_obj_t *ent) { isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); tresult = dns_name_fromtext(dns_fixedname_name(&fixed), &b, - dns_rootname, 0, NULL); + dns_rootname, 0); if (tresult != ISC_R_SUCCESS) { cfg_obj_log(obj, ISC_LOG_ERROR, "rrset-order: invalid name '%s'", str); @@ -243,8 +243,7 @@ check_dual_stack(const cfg_obj_t *options) { isc_buffer_constinit(&buffer, str, strlen(str)); isc_buffer_add(&buffer, strlen(str)); name = dns_fixedname_initname(&fixed); - tresult = dns_name_fromtext(name, &buffer, dns_rootname, 0, - NULL); + tresult = dns_name_fromtext(name, &buffer, dns_rootname, 0); if (tresult != ISC_R_SUCCESS) { cfg_obj_log(obj, ISC_LOG_ERROR, "bad name '%s'", str); if (result == ISC_R_SUCCESS) { @@ -365,7 +364,7 @@ disabled_algorithms(const cfg_obj_t *disabled) { str = cfg_obj_asstring(obj); isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); - tresult = dns_name_fromtext(name, &b, dns_rootname, 0, NULL); + tresult = dns_name_fromtext(name, &b, dns_rootname, 0); if (tresult != ISC_R_SUCCESS) { cfg_obj_log(obj, ISC_LOG_ERROR, "bad domain name '%s'", str); result = tresult; @@ -408,7 +407,7 @@ disabled_ds_digests(const cfg_obj_t *disabled) { str = cfg_obj_asstring(obj); isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); - tresult = dns_name_fromtext(name, &b, dns_rootname, 0, NULL); + tresult = dns_name_fromtext(name, &b, dns_rootname, 0); if (tresult != ISC_R_SUCCESS) { cfg_obj_log(obj, ISC_LOG_ERROR, "bad domain name '%s'", str); result = tresult; @@ -3130,7 +3129,7 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, isc_buffer_constinit(&b, znamestr, strlen(znamestr)); isc_buffer_add(&b, strlen(znamestr)); tresult = dns_name_fromtext(dns_fixedname_name(&fixedname), &b, - dns_rootname, DNS_NAME_DOWNCASE, NULL); + dns_rootname, DNS_NAME_DOWNCASE); if (tresult != ISC_R_SUCCESS) { cfg_obj_log(zconfig, ISC_LOG_ERROR, "zone '%s': is not a valid name", znamestr); @@ -3718,8 +3717,8 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, isc_buffer_constinit(&b2, snamestr, strlen(snamestr)); isc_buffer_add(&b2, strlen(snamestr)); sname = dns_fixedname_initname(&fixed_sname); - tresult = dns_name_fromtext(sname, &b2, dns_rootname, 0, - NULL); + tresult = dns_name_fromtext(sname, &b2, dns_rootname, + 0); if (tresult != ISC_R_SUCCESS) { cfg_obj_log(zconfig, ISC_LOG_ERROR, "server-name '%s' is not a valid " @@ -4153,7 +4152,7 @@ check_keylist(const cfg_obj_t *keys, isc_symtab_t *symtab, isc_mem_t *mctx) { isc_buffer_constinit(&b, keyid, strlen(keyid)); isc_buffer_add(&b, strlen(keyid)); - tresult = dns_name_fromtext(name, &b, dns_rootname, 0, NULL); + tresult = dns_name_fromtext(name, &b, dns_rootname, 0); if (tresult != ISC_R_SUCCESS) { cfg_obj_log(key, ISC_LOG_ERROR, "key '%s': bad key name", keyid); @@ -4393,7 +4392,7 @@ check_servers(const cfg_obj_t *config, const cfg_obj_t *voptions, isc_buffer_add(&b, strlen(keyval)); keyname = dns_fixedname_initname(&fname); tresult = dns_name_fromtext(keyname, &b, dns_rootname, - 0, NULL); + 0); if (tresult != ISC_R_SUCCESS) { cfg_obj_log(keys, ISC_LOG_ERROR, "bad key name '%s'", keyval); @@ -4558,7 +4557,7 @@ check_trust_anchor(const cfg_obj_t *key, unsigned int *flagsp) { keyname = dns_fixedname_initname(&fkeyname); isc_buffer_constinit(&b, namestr, strlen(namestr)); isc_buffer_add(&b, strlen(namestr)); - result = dns_name_fromtext(keyname, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(keyname, &b, dns_rootname, 0); if (result != ISC_R_SUCCESS) { cfg_obj_log(key, ISC_LOG_WARNING, "bad key name: %s\n", isc_result_totext(result)); diff --git a/lib/ns/client.c b/lib/ns/client.c index 6a3d40f446e..222a4f4f500 100644 --- a/lib/ns/client.c +++ b/lib/ns/client.c @@ -699,7 +699,7 @@ ns_client_send(ns_client_t *client) { isc_buffer_init(&b, zone, sizeof(zone)); dns_compress_setpermitted(&cctx, false); - eresult = dns_name_towire(zo, &cctx, &b, NULL); + eresult = dns_name_towire(zo, &cctx, &b); if (eresult == ISC_R_SUCCESS) { isc_buffer_usedregion(&b, &zr); } diff --git a/lib/ns/query.c b/lib/ns/query.c index b9d33f11425..8382b8ede3b 100644 --- a/lib/ns/query.c +++ b/lib/ns/query.c @@ -3181,7 +3181,7 @@ rpz_get_p_name(ns_client_t *client, dns_name_t *p_name, dns_rpz_zone_t *rpz, for (;;) { dns_name_getlabelsequence(trig_name, first, labels - first - 1, &prefix); - result = dns_name_concatenate(&prefix, suffix, p_name, NULL); + result = dns_name_concatenate(&prefix, suffix, p_name); if (result == ISC_R_SUCCESS) { break; } @@ -4900,9 +4900,8 @@ redirect2(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset, dns_name_init(&prefix); dns_name_getlabelsequence(client->query.qname, 0, labels - 1, &prefix); - result = dns_name_concatenate(&prefix, - client->view->redirectzone, - redirectname, NULL); + result = dns_name_concatenate( + &prefix, client->view->redirectzone, redirectname); if (result != ISC_R_SUCCESS) { return ISC_R_NOTFOUND; } @@ -4980,7 +4979,7 @@ redirect2(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset, /* * Make the name absolute. */ - result = dns_name_concatenate(found, dns_rootname, found, NULL); + result = dns_name_concatenate(found, dns_rootname, found); RUNTIME_CHECK(result == ISC_R_SUCCESS); dns_name_copy(found, name); @@ -7269,7 +7268,7 @@ query_rpzcname(query_ctx_t *qctx, dns_name_t *cname) { dns_fixedname_name(&suffix)); result = dns_name_concatenate(dns_fixedname_name(&prefix), dns_fixedname_name(&suffix), - qctx->fname, NULL); + qctx->fname); if (result == DNS_R_NAMETOOLONG) { client->message->rcode = dns_rcode_yxdomain; } else if (result != ISC_R_SUCCESS) { @@ -9271,8 +9270,8 @@ query_addnxrrsetnsec(query_ctx_t *qctx) { dns_name_split(qctx->fname, sig.labels + 1, NULL, fname); /* This will succeed, since we've stripped labels. */ - RUNTIME_CHECK(dns_name_concatenate(dns_wildcardname, fname, fname, - NULL) == ISC_R_SUCCESS); + RUNTIME_CHECK(dns_name_concatenate(dns_wildcardname, fname, fname) == + ISC_R_SUCCESS); query_addrrset(qctx, &fname, &qctx->rdataset, &qctx->sigrdataset, dbuf, DNS_SECTION_AUTHORITY); } @@ -10385,7 +10384,7 @@ query_dname(query_ctx_t *qctx) { INSIST(qctx->fname == NULL); qctx->dbuf = ns_client_getnamebuf(qctx->client); qctx->fname = ns_client_newname(qctx->client, qctx->dbuf, &b); - result = dns_name_concatenate(prefix, tname, qctx->fname, NULL); + result = dns_name_concatenate(prefix, tname, qctx->fname); dns_message_puttempname(qctx->client->message, &tname); /* @@ -11190,8 +11189,7 @@ query_addwildcardproof(query_ctx_t *qctx, bool ispositive, bool nodata) { /* * Add the no wildcard proof. */ - result = dns_name_concatenate(dns_wildcardname, cname, wname, - NULL); + result = dns_name_concatenate(dns_wildcardname, cname, wname); if (result != ISC_R_SUCCESS) { goto cleanup; } @@ -11232,7 +11230,7 @@ query_addwildcardproof(query_ctx_t *qctx, bool ispositive, bool nodata) { dns_name_split(name, nlabels, NULL, wname); } result = dns_name_concatenate(dns_wildcardname, wname, - wname, NULL); + wname); if (result == ISC_R_SUCCESS) { have_wname = true; } diff --git a/tests/bench/compress.c b/tests/bench/compress.c index 0660785ddc5..912e8847e21 100644 --- a/tests/bench/compress.c +++ b/tests/bench/compress.c @@ -62,7 +62,7 @@ main(void) { errx(1, "too many names"); } dns_name_t *name = dns_fixedname_initname(&fixedname[count++]); - result = dns_name_fromtext(name, &buf, dns_rootname, 0, NULL); + result = dns_name_fromtext(name, &buf, dns_rootname, 0); CHECKRESULT(result, line); } @@ -80,7 +80,7 @@ main(void) { for (unsigned int i = 0; i < count; i++) { dns_name_t *name = dns_fixedname_name(&fixedname[i]); - result = dns_name_towire(name, &cctx, &buf, NULL); + result = dns_name_towire(name, &cctx, &buf); if (result == ISC_R_NOSPACE) { dns_compress_invalidate(&cctx); dns_compress_init(&cctx, mctx, 0); diff --git a/tests/bench/load-names.c b/tests/bench/load-names.c index ca9aa0ac3a0..9957bbc543c 100644 --- a/tests/bench/load-names.c +++ b/tests/bench/load-names.c @@ -471,8 +471,7 @@ main(int argc, char *argv[]) { isc_buffer_t buffer; isc_buffer_init(&buffer, domain, len); isc_buffer_add(&buffer, len); - result = dns_name_fromtext(name, &buffer, dns_rootname, 0, - NULL); + result = dns_name_fromtext(name, &buffer, dns_rootname, 0); FILE_CHECK(result == ISC_R_SUCCESS, isc_result_totext(result)); wirebytes += name->length; diff --git a/tests/bench/qp-dump.c b/tests/bench/qp-dump.c index 612a5b0446b..476cab2bfc8 100644 --- a/tests/bench/qp-dump.c +++ b/tests/bench/qp-dump.c @@ -203,8 +203,7 @@ main(int argc, char *argv[]) { isc_buffer_init(&buffer, domain, len); isc_buffer_add(&buffer, len); - result = dns_name_fromtext(name, &buffer, dns_rootname, 0, - NULL); + result = dns_name_fromtext(name, &buffer, dns_rootname, 0); if (result == ISC_R_SUCCESS) { smallname_from_name(name, &pval, &ival); result = dns_qp_insert(qp, pval, ival); diff --git a/tests/bench/qplookups.c b/tests/bench/qplookups.c index 23130caedd0..ed31ecf318b 100644 --- a/tests/bench/qplookups.c +++ b/tests/bench/qplookups.c @@ -162,8 +162,7 @@ load_qp(dns_qp_t *qp, const char *filename) { isc_buffer_init(&buffer, domain, len); isc_buffer_add(&buffer, len); - result = dns_name_fromtext(name, &buffer, dns_rootname, 0, - NULL); + result = dns_name_fromtext(name, &buffer, dns_rootname, 0); if (result == ISC_R_SUCCESS) { smallname_from_name(name, &pval, &ival); result = dns_qp_insert(qp, pval, ival); diff --git a/tests/dns/dbiterator_test.c b/tests/dns/dbiterator_test.c index 67e19c71e55..a84e4d806ca 100644 --- a/tests/dns/dbiterator_test.c +++ b/tests/dns/dbiterator_test.c @@ -42,7 +42,7 @@ make_name(const char *src, dns_name_t *name) { isc_buffer_t b; isc_buffer_constinit(&b, src, strlen(src)); isc_buffer_add(&b, strlen(src)); - return dns_name_fromtext(name, &b, dns_rootname, 0, NULL); + return dns_name_fromtext(name, &b, dns_rootname, 0); } /* create: make sure we can create a dbiterator */ diff --git a/tests/dns/dispatch_test.c b/tests/dns/dispatch_test.c index 034421641ef..ae3bed56db7 100644 --- a/tests/dns/dispatch_test.c +++ b/tests/dns/dispatch_test.c @@ -65,7 +65,6 @@ static isc_sockaddr_t tls_connect_addr; static isc_tlsctx_cache_t *tls_tlsctx_client_cache = NULL; static isc_tlsctx_t *tls_listen_tlsctx = NULL; -static dns_name_t tls_name; static const char *tls_name_str = "ephemeral"; static dns_transport_t *tls_transport = NULL; static dns_transport_list_t *transport_list = NULL; @@ -150,8 +149,9 @@ setup_ephemeral_port(isc_sockaddr_t *addr, sa_family_t family) { static int setup_test(void **state) { - isc_buffer_t namesrc, namebuf; - char namedata[DNS_NAME_FORMATSIZE + 1]; + isc_buffer_t namesrc; + dns_fixedname_t ft; + dns_name_t *tls_name = dns_fixedname_initname(&ft); uv_os_sock_t socket = -1; @@ -216,17 +216,15 @@ setup_test(void **state) { return -1; } - dns_name_init(&tls_name); isc_buffer_constinit(&namesrc, tls_name_str, strlen(tls_name_str)); isc_buffer_add(&namesrc, strlen(tls_name_str)); - isc_buffer_init(&namebuf, namedata, sizeof(namedata)); - if (dns_name_fromtext(&tls_name, &namesrc, dns_rootname, - DNS_NAME_DOWNCASE, &namebuf) != ISC_R_SUCCESS) + if (dns_name_fromtext(tls_name, &namesrc, dns_rootname, + DNS_NAME_DOWNCASE) != ISC_R_SUCCESS) { return -1; } transport_list = dns_transport_list_new(mctx); - tls_transport = dns_transport_new(&tls_name, DNS_TRANSPORT_TLS, + tls_transport = dns_transport_new(tls_name, DNS_TRANSPORT_TLS, transport_list); dns_transport_set_tlsname(tls_transport, tls_name_str); diff --git a/tests/dns/dnstap_test.c b/tests/dns/dnstap_test.c index a7156b7ba94..de88bd16558 100644 --- a/tests/dns/dnstap_test.c +++ b/tests/dns/dnstap_test.c @@ -180,14 +180,14 @@ ISC_LOOP_TEST_IMPL(dns_dt_send) { zname = dns_fixedname_initname(&zfname); isc_buffer_constinit(&zb, "example.com.", 12); isc_buffer_add(&zb, 12); - result = dns_name_fromtext(zname, &zb, NULL, 0, NULL); + result = dns_name_fromtext(zname, &zb, NULL, 0); assert_int_equal(result, ISC_R_SUCCESS); memset(&zr, 0, sizeof(zr)); isc_buffer_init(&zb, zone, sizeof(zone)); dns_compress_init(&cctx, mctx, 0); dns_compress_setpermitted(&cctx, false); - result = dns_name_towire(zname, &cctx, &zb, NULL); + result = dns_name_towire(zname, &cctx, &zb); assert_int_equal(result, ISC_R_SUCCESS); dns_compress_invalidate(&cctx); isc_buffer_usedregion(&zb, &zr); diff --git a/tests/dns/dst_test.c b/tests/dns/dst_test.c index 871a4931ce5..10bb24bc9b8 100644 --- a/tests/dns/dst_test.c +++ b/tests/dns/dst_test.c @@ -163,7 +163,7 @@ check_sig(const char *datapath, const char *sigpath, const char *keyname, name = dns_fixedname_initname(&fname); isc_buffer_constinit(&b, keyname, strlen(keyname)); isc_buffer_add(&b, strlen(keyname)); - result = dns_name_fromtext(name, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(name, &b, dns_rootname, 0); assert_int_equal(result, ISC_R_SUCCESS); result = dst_key_fromfile(name, id, alg, type, TESTS_DIR "/testdata/dst", mctx, &key); @@ -298,7 +298,7 @@ check_cmp(const char *key1_name, dns_keytag_t key1_id, const char *key2_name, name1 = dns_fixedname_initname(&fname1); isc_buffer_constinit(&b1, key1_name, strlen(key1_name)); isc_buffer_add(&b1, strlen(key1_name)); - result = dns_name_fromtext(name1, &b1, dns_rootname, 0, NULL); + result = dns_name_fromtext(name1, &b1, dns_rootname, 0); assert_int_equal(result, ISC_R_SUCCESS); result = dst_key_fromfile(name1, key1_id, alg, type, TESTS_DIR "/comparekeys", mctx, &key1); @@ -310,7 +310,7 @@ check_cmp(const char *key1_name, dns_keytag_t key1_id, const char *key2_name, name2 = dns_fixedname_initname(&fname2); isc_buffer_constinit(&b2, key2_name, strlen(key2_name)); isc_buffer_add(&b2, strlen(key2_name)); - result = dns_name_fromtext(name2, &b2, dns_rootname, 0, NULL); + result = dns_name_fromtext(name2, &b2, dns_rootname, 0); assert_int_equal(result, ISC_R_SUCCESS); result = dst_key_fromfile(name2, key2_id, alg, type, TESTS_DIR "/comparekeys", mctx, &key2); @@ -445,7 +445,7 @@ ISC_RUN_TEST_IMPL(ecdsa_determinism_test) { name = dns_fixedname_initname(&fname); isc_buffer_constinit(&keybuf, "example.", strlen("example.")); isc_buffer_add(&keybuf, strlen("example.")); - result = dns_name_fromtext(name, &keybuf, dns_rootname, 0, NULL); + result = dns_name_fromtext(name, &keybuf, dns_rootname, 0); assert_int_equal(result, ISC_R_SUCCESS); result = dst_key_fromfile(name, 19786, DST_ALG_ECDSA256, DST_TYPE_PUBLIC | DST_TYPE_PRIVATE, diff --git a/tests/dns/keytable_test.c b/tests/dns/keytable_test.c index 5b0ba19a3af..538a98bfebb 100644 --- a/tests/dns/keytable_test.c +++ b/tests/dns/keytable_test.c @@ -97,9 +97,8 @@ str2name(const char *namestr) { name = dns_fixedname_initname(&fname); isc_buffer_init(&namebuf, UNCONST(namestr), strlen(namestr)); isc_buffer_add(&namebuf, strlen(namestr)); - assert_int_equal( - dns_name_fromtext(name, &namebuf, dns_rootname, 0, NULL), - ISC_R_SUCCESS); + assert_int_equal(dns_name_fromtext(name, &namebuf, dns_rootname, 0), + ISC_R_SUCCESS); return name; } diff --git a/tests/dns/master_test.c b/tests/dns/master_test.c index e21ce8d1f66..930e339475f 100644 --- a/tests/dns/master_test.c +++ b/tests/dns/master_test.c @@ -55,9 +55,9 @@ nullmsg(dns_rdatacallbacks_t *cb, const char *fmt, ...) { static dns_masterrawheader_t header; static bool headerset; -dns_name_t dns_origin; +dns_fixedname_t dns_fixed; +dns_name_t *dns_origin = NULL; char origin[sizeof(TEST_ORIGIN)]; -unsigned char name_buf[BUFLEN]; dns_rdatacallbacks_t callbacks; char *include_file = NULL; @@ -91,19 +91,16 @@ setup_master(void (*warn)(struct dns_rdatacallbacks *, const char *, ...), isc_result_t result; int len; isc_buffer_t source; - isc_buffer_t target; + dns_origin = dns_fixedname_initname(&dns_fixed); strlcpy(origin, TEST_ORIGIN, sizeof(origin)); len = strlen(origin); isc_buffer_init(&source, origin, len); isc_buffer_add(&source, len); isc_buffer_setactive(&source, len); - isc_buffer_init(&target, name_buf, BUFLEN); - dns_name_init(&dns_origin); dns_master_initrawheader(&header); - result = dns_name_fromtext(&dns_origin, &source, dns_rootname, 0, - &target); + result = dns_name_fromtext(dns_origin, &source, dns_rootname, 0); if (result != ISC_R_SUCCESS) { return result; } @@ -152,7 +149,7 @@ test_master(const char *workdir, const char *testfile, } } - result = dns_master_loadfile(testfile, &dns_origin, &dns_origin, + result = dns_master_loadfile(testfile, dns_origin, dns_origin, dns_rdataclass_in, true, 0, &callbacks, NULL, NULL, mctx, format, 0); @@ -327,10 +324,10 @@ ISC_RUN_TEST_IMPL(master_includelist) { result = isc_dir_chdir(SRCDIR); assert_int_equal(result, ISC_R_SUCCESS); - result = dns_master_loadfile( - TESTS_DIR "/testdata/master/master8.data", &dns_origin, - &dns_origin, dns_rdataclass_in, 0, true, &callbacks, - include_callback, &filename, mctx, dns_masterformat_text, 0); + result = dns_master_loadfile(TESTS_DIR "/testdata/master/master8.data", + dns_origin, dns_origin, dns_rdataclass_in, + 0, true, &callbacks, include_callback, + &filename, mctx, dns_masterformat_text, 0); assert_int_equal(result, DNS_R_SEENINCLUDE); assert_non_null(filename); if (filename != NULL) { @@ -455,26 +452,13 @@ ISC_RUN_TEST_IMPL(dumpraw) { isc_result_t result; dns_db_t *db = NULL; dns_dbversion_t *version = NULL; - char myorigin[sizeof(TEST_ORIGIN)]; - dns_name_t dnsorigin; - isc_buffer_t source, target; - unsigned char namebuf[BUFLEN]; - int len; UNUSED(state); - strlcpy(myorigin, TEST_ORIGIN, sizeof(myorigin)); - len = strlen(myorigin); - isc_buffer_init(&source, myorigin, len); - isc_buffer_add(&source, len); - isc_buffer_setactive(&source, len); - isc_buffer_init(&target, namebuf, BUFLEN); - dns_name_init(&dnsorigin); - result = dns_name_fromtext(&dnsorigin, &source, dns_rootname, 0, - &target); + result = setup_master(nullmsg, nullmsg); assert_int_equal(result, ISC_R_SUCCESS); - result = dns_db_create(mctx, ZONEDB_DEFAULT, &dnsorigin, + result = dns_db_create(mctx, ZONEDB_DEFAULT, dns_origin, dns_dbtype_zone, dns_rdataclass_in, 0, NULL, &db); assert_int_equal(result, ISC_R_SUCCESS); diff --git a/tests/dns/name_test.c b/tests/dns/name_test.c index 47369761a4f..d598447ad3a 100644 --- a/tests/dns/name_test.c +++ b/tests/dns/name_test.c @@ -148,28 +148,34 @@ compress_test(const dns_name_t *name1, const dns_name_t *name2, if (rdata) { /* RDATA compression */ - assert_int_equal(dns_name_towire(name1, cctx, &source, NULL), + assert_int_equal(dns_name_towire(name1, cctx, &source), ISC_R_SUCCESS); - assert_int_equal(dns_name_towire(name2, cctx, &source, NULL), + assert_int_equal(dns_name_towire(name2, cctx, &source), ISC_R_SUCCESS); - assert_int_equal(dns_name_towire(name2, cctx, &source, NULL), + assert_int_equal(dns_name_towire(name2, cctx, &source), ISC_R_SUCCESS); - assert_int_equal(dns_name_towire(name3, cctx, &source, NULL), + assert_int_equal(dns_name_towire(name3, cctx, &source), ISC_R_SUCCESS); } else { /* Owner name compression */ - uint16_t offset = 0xffff; - assert_int_equal(dns_name_towire(name1, cctx, &source, &offset), + if (cctx != NULL) { + dns_compress_setmultiuse(cctx, true); + } + assert_int_equal(dns_name_towire(name1, cctx, &source), ISC_R_SUCCESS); - offset = 0xffff; - assert_int_equal(dns_name_towire(name2, cctx, &source, &offset), + if (cctx != NULL) { + dns_compress_setmultiuse(cctx, true); + } + assert_int_equal(dns_name_towire(name2, cctx, &source), ISC_R_SUCCESS); - assert_int_equal(dns_name_towire(name2, cctx, &source, &offset), + assert_int_equal(dns_name_towire(name2, cctx, &source), ISC_R_SUCCESS); - offset = 0xffff; - assert_int_equal(dns_name_towire(name3, cctx, &source, &offset), + if (cctx != NULL) { + dns_compress_setmultiuse(cctx, true); + } + assert_int_equal(dns_name_towire(name3, cctx, &source), ISC_R_SUCCESS); } assert_int_equal(source.used, compressed_length); @@ -254,6 +260,12 @@ ISC_RUN_TEST_IMPL(compression) { r.length = sizeof(plain3); dns_name_fromregion(&name4, &r); + /* Test 0: no compression context */ + compress_test(&name1, &name2, &name3, plain, sizeof(plain), plain, + sizeof(plain), NULL, DNS_DECOMPRESS_NEVER, true); + compress_test(&name1, &name2, &name3, plain, sizeof(plain), plain, + sizeof(plain), NULL, DNS_DECOMPRESS_NEVER, false); + /* Test 1: off, rdata */ permitted = false; dns_compress_init(&cctx, mctx, 0); @@ -433,7 +445,8 @@ ISC_RUN_TEST_IMPL(collision) { } dns_compress_rollback(&cctx, coff); - result = dns_name_towire(&name, &cctx, &message, NULL); + dns_compress_setmultiuse(&cctx, true); + result = dns_name_towire(&name, &cctx, &message); assert_int_equal(result, ISC_R_SUCCESS); /* we must be able to find the name we just added */ @@ -639,7 +652,7 @@ ISC_RUN_TEST_IMPL(isabsolute) { dns_name_init(&name); isc_buffer_init(&nb, data, BUFSIZ); dns_name_setbuffer(&name, &nb); - result = dns_name_fromtext(&name, &b, NULL, 0, NULL); + result = dns_name_fromtext(&name, &b, NULL, 0); assert_int_equal(result, ISC_R_SUCCESS); assert_int_equal(dns_name_isabsolute(&name), diff --git a/tests/dns/qpzone_test.c b/tests/dns/qpzone_test.c index e3c693d4a91..7e716bf024d 100644 --- a/tests/dns/qpzone_test.c +++ b/tests/dns/qpzone_test.c @@ -134,12 +134,12 @@ ownercase_test_one(const char *str1, const char *str2) { isc_buffer_constinit(&b, str1, strlen(str1)); isc_buffer_add(&b, strlen(str1)); - result = dns_name_fromtext(name1, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(name1, &b, dns_rootname, 0); assert_int_equal(result, ISC_R_SUCCESS); isc_buffer_constinit(&b, str2, strlen(str2)); isc_buffer_add(&b, strlen(str2)); - result = dns_name_fromtext(name2, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(name2, &b, dns_rootname, 0); assert_int_equal(result, ISC_R_SUCCESS); /* Store the case from name1 */ @@ -206,12 +206,12 @@ ISC_RUN_TEST_IMPL(setownercase) { isc_buffer_constinit(&b, str1, strlen(str1)); isc_buffer_add(&b, strlen(str1)); - result = dns_name_fromtext(name1, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(name1, &b, dns_rootname, 0); assert_int_equal(result, ISC_R_SUCCESS); isc_buffer_constinit(&b, str1, strlen(str1)); isc_buffer_add(&b, strlen(str1)); - result = dns_name_fromtext(name2, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(name2, &b, dns_rootname, 0); assert_int_equal(result, ISC_R_SUCCESS); assert_false(CASESET(&header)); diff --git a/tests/dns/rsa_test.c b/tests/dns/rsa_test.c index c1d44fa3f58..89a347e2e3d 100644 --- a/tests/dns/rsa_test.c +++ b/tests/dns/rsa_test.c @@ -133,7 +133,7 @@ ISC_RUN_TEST_IMPL(isc_rsa_verify) { name = dns_fixedname_initname(&fname); isc_buffer_constinit(&buf, "rsa.", 4); isc_buffer_add(&buf, 4); - ret = dns_name_fromtext(name, &buf, NULL, 0, NULL); + ret = dns_name_fromtext(name, &buf, NULL, 0); assert_int_equal(ret, ISC_R_SUCCESS); ret = dst_key_fromfile(name, 29238, DST_ALG_RSASHA256, DST_TYPE_PUBLIC, diff --git a/tests/dns/skr_test.c b/tests/dns/skr_test.c index a0038c6ddc0..dbeb4a7cc86 100644 --- a/tests/dns/skr_test.c +++ b/tests/dns/skr_test.c @@ -448,7 +448,7 @@ ISC_RUN_TEST_IMPL(skr_read) { dname = dns_fixedname_initname(&dfname); isc_buffer_init(&b, name, strlen(name)); isc_buffer_add(&b, strlen(name)); - result = dns_name_fromtext(dname, &b, dns_rootname, 0, NULL); + result = dns_name_fromtext(dname, &b, dns_rootname, 0); assert_int_equal(result, ISC_R_SUCCESS); /* Get the KSK */ diff --git a/tests/libtest/dns.c b/tests/libtest/dns.c index 2ded8b3e3be..7c88b6f285c 100644 --- a/tests/libtest/dns.c +++ b/tests/libtest/dns.c @@ -419,7 +419,7 @@ dns_test_namefromstring(const char *namestr, dns_fixedname_t *fname) { isc_buffer_allocate(mctx, &b, length); isc_buffer_putmem(b, (const unsigned char *)namestr, length); - result = dns_name_fromtext(name, b, NULL, 0, NULL); + result = dns_name_fromtext(name, b, NULL, 0); INSIST(result == ISC_R_SUCCESS); isc_buffer_free(&b);