From 77fe5da6476240e23856db0c09f562899f545bd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Tue, 10 Sep 2019 13:55:18 +0200 Subject: [PATCH] Add RUNTIME_CHECK() around result = dns_name_copy(..., NULL) calls This second commit uses second semantic patch to replace the calls to dns_name_copy() with NULL as third argument where the result was stored in a isc_result_t variable. As the dns_name_copy(..., NULL) cannot fail gracefully when the third argument is NULL, it was just a bunch of dead code. Couple of manual tweaks (removing dead labels and unused variables) were manually applied on top of the semantic patch. (cherry picked from commit 89b269b0d28e0acf4a1f92414b5df2e86e2a008e) --- bin/dnssec/dnssec-dsfromkey.c | 4 +--- bin/dnssec/dnssec-importkey.c | 4 +--- bin/named/zoneconf.c | 11 +---------- bin/tests/system/dyndb/driver/syncptr.c | 10 +--------- lib/dns/adb.c | 4 +--- lib/dns/client.c | 13 +++---------- lib/dns/dnsrps.c | 5 +---- lib/dns/lookup.c | 20 ++++---------------- lib/dns/rbt.c | 4 +--- lib/dns/rbtdb.c | 9 ++------- lib/dns/resolver.c | 9 ++------- lib/dns/sdb.c | 11 +---------- lib/dns/sdlz.c | 11 +---------- lib/dns/view.c | 17 +++++------------ lib/ns/query.c | 8 +------- 15 files changed, 26 insertions(+), 114 deletions(-) diff --git a/bin/dnssec/dnssec-dsfromkey.c b/bin/dnssec/dnssec-dsfromkey.c index 0bf3517e75..9f38ebd2eb 100644 --- a/bin/dnssec/dnssec-dsfromkey.c +++ b/bin/dnssec/dnssec-dsfromkey.c @@ -207,9 +207,7 @@ loadkey(char *filename, unsigned char *key_buf, unsigned int key_buf_size, rdclass = dst_key_class(key); name = dns_fixedname_initname(&fixed); - result = dns_name_copy(dst_key_name(key), name, NULL); - if (result != ISC_R_SUCCESS) - fatal("can't copy name"); + RUNTIME_CHECK(dns_name_copy(dst_key_name(key), name, NULL) == ISC_R_SUCCESS); dst_key_free(&key); } diff --git a/bin/dnssec/dnssec-importkey.c b/bin/dnssec/dnssec-importkey.c index 067aeb81b4..490d42c2f3 100644 --- a/bin/dnssec/dnssec-importkey.c +++ b/bin/dnssec/dnssec-importkey.c @@ -181,9 +181,7 @@ loadkey(char *filename, unsigned char *key_buf, unsigned int key_buf_size, rdclass = dst_key_class(key); name = dns_fixedname_initname(&fixed); - result = dns_name_copy(dst_key_name(key), name, NULL); - if (result != ISC_R_SUCCESS) - fatal("can't copy name"); + RUNTIME_CHECK(dns_name_copy(dst_key_name(key), name, NULL) == ISC_R_SUCCESS); dst_key_free(&key); } diff --git a/bin/named/zoneconf.c b/bin/named/zoneconf.c index adf9e00dd7..5406e28461 100644 --- a/bin/named/zoneconf.c +++ b/bin/named/zoneconf.c @@ -260,16 +260,7 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone, dns_fixedname_init(&fname); if (usezone) { - result = dns_name_copy(dns_zone_getorigin(zone), - dns_fixedname_name(&fname), - NULL); - if (result != ISC_R_SUCCESS) { - cfg_obj_log(identity, named_g_lctx, - ISC_LOG_ERROR, - "error copying origin: %s", - isc_result_totext(result)); - goto cleanup; - } + RUNTIME_CHECK(dns_name_copy(dns_zone_getorigin(zone), dns_fixedname_name(&fname), NULL) == ISC_R_SUCCESS); } else { str = cfg_obj_asstring(dname); isc_buffer_constinit(&b, str, strlen(str)); diff --git a/bin/tests/system/dyndb/driver/syncptr.c b/bin/tests/system/dyndb/driver/syncptr.c index 4789091ec9..166c8dba7e 100644 --- a/bin/tests/system/dyndb/driver/syncptr.c +++ b/bin/tests/system/dyndb/driver/syncptr.c @@ -235,15 +235,7 @@ syncptr(sample_instance_t *inst, dns_name_t *name, /* Reverse zone is managed by this driver, prepare PTR record */ pevent->zone = NULL; dns_zone_attach(ptr_zone, &pevent->zone); - result = dns_name_copy(name, - dns_fixedname_name(&pevent->ptr_target_name), - NULL); - if (result != ISC_R_SUCCESS) { - log_write(ISC_LOG_ERROR, - "syncptr: dns_name_copy -> %s\n", - isc_result_totext(result)); - goto cleanup; - } + RUNTIME_CHECK(dns_name_copy(name, dns_fixedname_name(&pevent->ptr_target_name), NULL) == ISC_R_SUCCESS); dns_name_clone(dns_fixedname_name(&pevent->ptr_target_name), &ptr_struct.ptr); dns_diff_init(inst->mctx, &pevent->diff); diff --git a/lib/dns/adb.c b/lib/dns/adb.c index b3a124fb03..6cf1283a45 100644 --- a/lib/dns/adb.c +++ b/lib/dns/adb.c @@ -3207,9 +3207,7 @@ dns_adb_createfind(dns_adb_t *adb, isc_task_t *task, isc_taskaction_t action, find->partial_result |= (adbname->partial_result & wanted_addresses); if (alias) { if (target != NULL) { - result = dns_name_copy(&adbname->target, target, NULL); - if (result != ISC_R_SUCCESS) - goto out; + RUNTIME_CHECK(dns_name_copy(&adbname->target, target, NULL) == ISC_R_SUCCESS); } result = DNS_R_ALIAS; } else diff --git a/lib/dns/client.c b/lib/dns/client.c index 57038befe5..47c51559aa 100644 --- a/lib/dns/client.c +++ b/lib/dns/client.c @@ -1419,9 +1419,7 @@ dns_client_startresolve(dns_client_t *client, const dns_name_t *name, rctx->sigrdataset = sigrdataset; dns_fixedname_init(&rctx->name); - result = dns_name_copy(name, dns_fixedname_name(&rctx->name), NULL); - if (result != ISC_R_SUCCESS) - goto cleanup; + RUNTIME_CHECK(dns_name_copy(name, dns_fixedname_name(&rctx->name), NULL) == ISC_R_SUCCESS); rctx->client = client; ISC_LINK_INIT(rctx, link); @@ -2235,9 +2233,7 @@ process_soa(updatectx_t *uctx, dns_rdataset_t *soaset, if (uctx->zonename == NULL) { uctx->zonename = dns_fixedname_name(&uctx->zonefname); - result = dns_name_copy(soaname, uctx->zonename, NULL); - if (result != ISC_R_SUCCESS) - goto out; + RUNTIME_CHECK(dns_name_copy(soaname, uctx->zonename, NULL) == ISC_R_SUCCESS); } if (uctx->currentserver != NULL) @@ -2274,7 +2270,6 @@ process_soa(updatectx_t *uctx, dns_rdataset_t *soaset, UNLOCK(&uctx->lock); } - out: dns_rdata_freestruct(&soa); return (result); @@ -2614,9 +2609,7 @@ copy_name(isc_mem_t *mctx, dns_message_t *msg, const dns_name_t *name, dns_name_init(newname, NULL); dns_name_setbuffer(newname, namebuf); dns_message_takebuffer(msg, &namebuf); - result = dns_name_copy(name, newname, NULL); - if (result != ISC_R_SUCCESS) - goto fail; + RUNTIME_CHECK(dns_name_copy(name, newname, NULL) == ISC_R_SUCCESS); for (rdataset = ISC_LIST_HEAD(name->list); rdataset != NULL; rdataset = ISC_LIST_NEXT(rdataset, link)) { diff --git a/lib/dns/dnsrps.c b/lib/dns/dnsrps.c index 493fdb7e86..e3fa5ee953 100644 --- a/lib/dns/dnsrps.c +++ b/lib/dns/dnsrps.c @@ -595,7 +595,6 @@ rpsdb_finddb(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version, dns_rdataset_t *rdataset, dns_rdataset_t *sigrdataset) { dns_dbnode_t *node; - isc_result_t result; UNUSED(version); UNUSED(options); @@ -607,9 +606,7 @@ rpsdb_finddb(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version, nodep = &node; } rpsdb_findnode(db, name, false, nodep); - result = dns_name_copy(name, foundname, NULL); - if (result != ISC_R_SUCCESS) - return (result); + RUNTIME_CHECK(dns_name_copy(name, foundname, NULL) == ISC_R_SUCCESS); return (rpsdb_findrdataset(db, *nodep, NULL, type, 0, 0, rdataset, sigrdataset)); } diff --git a/lib/dns/lookup.c b/lib/dns/lookup.c index af00365cf2..4e9d7f3fcc 100644 --- a/lib/dns/lookup.c +++ b/lib/dns/lookup.c @@ -271,12 +271,10 @@ lookup_find(dns_lookup_t *lookup, dns_fetchevent_t *event) { dns_rdata_reset(&rdata); if (result != ISC_R_SUCCESS) break; - result = dns_name_copy(&cname.cname, name, NULL); + RUNTIME_CHECK(dns_name_copy(&cname.cname, name, NULL) == ISC_R_SUCCESS); dns_rdata_freestruct(&cname); - if (result == ISC_R_SUCCESS) { - want_restart = true; - send_event = false; - } + want_restart = true; + send_event = false; break; case DNS_R_DNAME: namereln = dns_name_fullcompare(name, fname, &order, @@ -414,9 +412,7 @@ dns_lookup_create(isc_mem_t *mctx, const dns_name_t *name, dns_rdatatype_t type, dns_fixedname_init(&lookup->name); - result = dns_name_copy(name, dns_fixedname_name(&lookup->name), NULL); - if (result != ISC_R_SUCCESS) - goto cleanup_lock; + RUNTIME_CHECK(dns_name_copy(name, dns_fixedname_name(&lookup->name), NULL) == ISC_R_SUCCESS); lookup->type = type; lookup->view = NULL; @@ -434,14 +430,6 @@ dns_lookup_create(isc_mem_t *mctx, const dns_name_t *name, dns_rdatatype_t type, return (ISC_R_SUCCESS); - cleanup_lock: - isc_mutex_destroy(&lookup->lock); - ievent = (isc_event_t *)lookup->event; - isc_event_free(&ievent); - lookup->event = NULL; - - isc_task_detach(&lookup->task); - cleanup_lookup: isc_mem_putanddetach(&mctx, lookup, sizeof(*lookup)); diff --git a/lib/dns/rbt.c b/lib/dns/rbt.c index 9f5b15d199..915f0bf41a 100644 --- a/lib/dns/rbt.c +++ b/lib/dns/rbt.c @@ -1047,9 +1047,7 @@ chain_name(dns_rbtnodechain_t *chain, dns_name_t *name, if (include_chain_end && chain->end != NULL) { NODENAME(chain->end, &nodename); - result = dns_name_copy(&nodename, name, NULL); - if (result != ISC_R_SUCCESS) - return (result); + RUNTIME_CHECK(dns_name_copy(&nodename, name, NULL) == ISC_R_SUCCESS); } else dns_name_reset(name); diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c index af28bd569d..0cd73a58c1 100644 --- a/lib/dns/rbtdb.c +++ b/lib/dns/rbtdb.c @@ -3062,7 +3062,6 @@ setup_delegation(rbtdb_search_t *search, dns_dbnode_t **nodep, dns_name_t *foundname, dns_rdataset_t *rdataset, dns_rdataset_t *sigrdataset) { - isc_result_t result; dns_name_t *zcname; rbtdb_rdatatype_t type; dns_rbtnode_t *node; @@ -3083,9 +3082,7 @@ setup_delegation(rbtdb_search_t *search, dns_dbnode_t **nodep, */ if (foundname != NULL && search->copy_name) { zcname = dns_fixedname_name(&search->zonecut_name); - result = dns_name_copy(zcname, foundname, NULL); - if (result != ISC_R_SUCCESS) - return (result); + RUNTIME_CHECK(dns_name_copy(zcname, foundname, NULL) == ISC_R_SUCCESS); } if (nodep != NULL) { /* @@ -3913,9 +3910,7 @@ zone_find(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version, */ result = find_wildcard(&search, &node, name); if (result == ISC_R_SUCCESS) { - result = dns_name_copy(name, foundname, NULL); - if (result != ISC_R_SUCCESS) - goto tree_exit; + RUNTIME_CHECK(dns_name_copy(name, foundname, NULL) == ISC_R_SUCCESS); wild = true; goto found; } diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index f38c1e6a1c..c66b3f8881 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -5994,10 +5994,7 @@ cache_name(fetchctx_t *fctx, dns_name_t *name, dns_adbaddrinfo_t *addrinfo, if (event != NULL) { adbp = &event->db; aname = dns_fixedname_name(&event->foundname); - result = dns_name_copy(name, aname, NULL); - if (result != ISC_R_SUCCESS) { - return (result); - } + RUNTIME_CHECK(dns_name_copy(name, aname, NULL) == ISC_R_SUCCESS); anodep = &event->node; /* * If this is an ANY, SIG or RRSIG query, we're not @@ -6630,9 +6627,7 @@ ncache_message(fetchctx_t *fctx, dns_adbaddrinfo_t *addrinfo, if (event != NULL) { adbp = &event->db; aname = dns_fixedname_name(&event->foundname); - result = dns_name_copy(name, aname, NULL); - if (result != ISC_R_SUCCESS) - goto unlock; + RUNTIME_CHECK(dns_name_copy(name, aname, NULL) == ISC_R_SUCCESS); anodep = &event->node; ardataset = event->rdataset; } diff --git a/lib/dns/sdb.c b/lib/dns/sdb.c index 88c62878c8..bfcb396243 100644 --- a/lib/dns/sdb.c +++ b/lib/dns/sdb.c @@ -1031,16 +1031,7 @@ findext(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version, dns_rdataset_disassociate(rdataset); if (foundname != NULL) { - isc_result_t xresult; - - xresult = dns_name_copy(xname, foundname, NULL); - if (xresult != ISC_R_SUCCESS) { - if (node != NULL) - destroynode(node); - if (dns_rdataset_isassociated(rdataset)) - dns_rdataset_disassociate(rdataset); - return (DNS_R_BADDB); - } + RUNTIME_CHECK(dns_name_copy(xname, foundname, NULL) == ISC_R_SUCCESS); } if (nodep != NULL) diff --git a/lib/dns/sdlz.c b/lib/dns/sdlz.c index 61f275fa0f..ae34414307 100644 --- a/lib/dns/sdlz.c +++ b/lib/dns/sdlz.c @@ -1033,16 +1033,7 @@ findext(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version, dns_rdataset_disassociate(rdataset); if (foundname != NULL) { - isc_result_t xresult; - - xresult = dns_name_copy(xname, foundname, NULL); - if (xresult != ISC_R_SUCCESS) { - if (node != NULL) - destroynode(node); - if (dns_rdataset_isassociated(rdataset)) - dns_rdataset_disassociate(rdataset); - return (DNS_R_BADDB); - } + RUNTIME_CHECK(dns_name_copy(xname, foundname, NULL) == ISC_R_SUCCESS); } if (nodep != NULL) diff --git a/lib/dns/view.c b/lib/dns/view.c index 25efba959b..2868296487 100644 --- a/lib/dns/view.c +++ b/lib/dns/view.c @@ -1318,9 +1318,7 @@ dns_view_findzonecut(dns_view_t *view, const dns_name_t *name, * We found an answer, but the cache may be better. */ zfname = dns_fixedname_name(&zfixedname); - result = dns_name_copy(fname, zfname, NULL); - if (result != ISC_R_SUCCESS) - goto cleanup; + RUNTIME_CHECK(dns_name_copy(fname, zfname, NULL) == ISC_R_SUCCESS); dns_rdataset_clone(rdataset, &zrdataset); dns_rdataset_disassociate(rdataset); if (sigrdataset != NULL && @@ -1361,6 +1359,7 @@ dns_view_findzonecut(dns_view_t *view, const dns_name_t *name, */ try_hints = true; } + result = ISC_R_SUCCESS; } else { /* * Something bad happened. @@ -1377,13 +1376,9 @@ dns_view_findzonecut(dns_view_t *view, const dns_name_t *name, dns_rdataset_isassociated(sigrdataset)) dns_rdataset_disassociate(sigrdataset); } - result = dns_name_copy(zfname, fname, NULL); - if (result != ISC_R_SUCCESS) - goto cleanup; + RUNTIME_CHECK(dns_name_copy(zfname, fname, NULL) == ISC_R_SUCCESS); if (dcname != NULL) { - result = dns_name_copy(zfname, dcname, NULL); - if (result != ISC_R_SUCCESS) - goto cleanup; + RUNTIME_CHECK(dns_name_copy(zfname, dcname, NULL) == ISC_R_SUCCESS); } dns_rdataset_clone(&zrdataset, rdataset); if (sigrdataset != NULL && @@ -2202,9 +2197,7 @@ dns_view_searchdlz(dns_view_t *view, const dns_name_t *name, */ for (i = namelabels; i > minlabels && i > 1; i--) { if (i == namelabels) { - result = dns_name_copy(name, zonename, NULL); - if (result != ISC_R_SUCCESS) - return (result); + RUNTIME_CHECK(dns_name_copy(name, zonename, NULL) == ISC_R_SUCCESS); } else dns_name_split(name, i, NULL, zonename); diff --git a/lib/ns/query.c b/lib/ns/query.c index 0777a7cf5f..2b11f1691e 100644 --- a/lib/ns/query.c +++ b/lib/ns/query.c @@ -6044,13 +6044,7 @@ query_resume(query_ctx_t *qctx) { tname = dns_fixedname_name(&qctx->event->foundname); } - result = dns_name_copy(tname, qctx->fname, NULL); - if (result != ISC_R_SUCCESS) { - CCTRACE(ISC_LOG_ERROR, - "query_resume: dns_name_copy failed"); - QUERY_ERROR(qctx, result); - return (ns_query_done(qctx)); - } + RUNTIME_CHECK(dns_name_copy(tname, qctx->fname, NULL) == ISC_R_SUCCESS); if (qctx->rpz_st != NULL && (qctx->rpz_st->state & DNS_RPZ_RECURSING) != 0) {