Projects
openEuler:22.03:LTS:LoongArch
bind
_service:tar_scm_kernel_repo:backport-Make-isc_...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm_kernel_repo:backport-Make-isc_ht_init-and-isc_ht_iter_create-return-void.patch of Package bind
From ba89da052a025928823055614e3f43fe8f8e3ef8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= <ondrej@isc.org> Date: Tue, 8 Mar 2022 11:22:55 +0100 Subject: [PATCH] Make isc_ht_init() and isc_ht_iter_create() return void Previously, the function(s) in the commit subject could fail for various reasons - mostly allocation failures, or other functions returning different return code than ISC_R_SUCCESS. Now, the aforementioned function(s) cannot ever fail and they would always return ISC_R_SUCCESS. Change the function(s) to return void and remove the extra checks in the code that uses them. Conflict:NA Reference:https://gitlab.isc.org/isc-projects/bind9/-/commit/ba89da052a025928823055614e3f43fe8f8e3ef8.patch (cherry picked from commit 8fa27365ec8ea47b498ea64a9b72553c0b662b6b) --- bin/plugins/filter-aaaa.c | 4 +- lib/dns/catz.c | 82 ++++++++++----------------------------- lib/dns/rpz.c | 29 ++------------ lib/isc/ht.c | 7 +--- lib/isc/include/isc/ht.h | 13 +++---- lib/isc/tests/ht_test.c | 9 ++--- 6 files changed, 35 insertions(+), 109 deletions(-) diff --git a/bin/plugins/filter-aaaa.c b/bin/plugins/filter-aaaa.c index 1db3ca2..c390b45 100644 --- a/bin/plugins/filter-aaaa.c +++ b/bin/plugins/filter-aaaa.c @@ -337,7 +337,7 @@ plugin_register(const char *parameters, const void *cfg, const char *cfg_file, unsigned long cfg_line, isc_mem_t *mctx, isc_log_t *lctx, void *actx, ns_hooktable_t *hooktable, void **instp) { filter_instance_t *inst = NULL; - isc_result_t result; + isc_result_t result = ISC_R_SUCCESS; isc_log_write(lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_HOOKS, ISC_LOG_INFO, @@ -355,7 +355,7 @@ plugin_register(const char *parameters, const void *cfg, const char *cfg_file, } isc_mempool_create(mctx, sizeof(filter_data_t), &inst->datapool); - CHECK(isc_ht_init(&inst->ht, mctx, 16)); + isc_ht_init(&inst->ht, mctx, 16); isc_mutex_init(&inst->hlock); /* diff --git a/lib/dns/catz.c b/lib/dns/catz.c index 77b7a24..fbe13f4 100644 --- a/lib/dns/catz.c +++ b/lib/dns/catz.c @@ -418,39 +418,21 @@ dns_catz_zones_merge(dns_catz_zone_t *target, dns_catz_zone_t *newzone) { dns_name_format(&target->name, czname, DNS_NAME_FORMATSIZE); - result = isc_ht_init(&toadd, target->catzs->mctx, 16); - if (result != ISC_R_SUCCESS) { - goto cleanup; - } + isc_ht_init(&toadd, target->catzs->mctx, 16); - result = isc_ht_init(&tomod, target->catzs->mctx, 16); - if (result != ISC_R_SUCCESS) { - goto cleanup; - } + isc_ht_init(&tomod, target->catzs->mctx, 16); - result = isc_ht_iter_create(newzone->entries, &iter1); - if (result != ISC_R_SUCCESS) { - goto cleanup; - } + isc_ht_iter_create(newzone->entries, &iter1); - result = isc_ht_iter_create(target->entries, &iter2); - if (result != ISC_R_SUCCESS) { - goto cleanup; - } + isc_ht_iter_create(target->entries, &iter2); /* * We can create those iterators now, even though toadd and tomod are * empty */ - result = isc_ht_iter_create(toadd, &iteradd); - if (result != ISC_R_SUCCESS) { - goto cleanup; - } + isc_ht_iter_create(toadd, &iteradd); - result = isc_ht_iter_create(tomod, &itermod); - if (result != ISC_R_SUCCESS) { - goto cleanup; - } + isc_ht_iter_create(tomod, &itermod); /* * First - walk the new zone and find all nodes that are not in the @@ -598,25 +580,11 @@ dns_catz_zones_merge(dns_catz_zone_t *target, dns_catz_zone_t *newzone) { result = ISC_R_SUCCESS; -cleanup: - if (iter1 != NULL) { - isc_ht_iter_destroy(&iter1); - } - if (iter2 != NULL) { - isc_ht_iter_destroy(&iter2); - } - if (iteradd != NULL) { - isc_ht_iter_destroy(&iteradd); - } - if (itermod != NULL) { - isc_ht_iter_destroy(&itermod); - } - if (toadd != NULL) { - isc_ht_destroy(&toadd); - } - if (tomod != NULL) { - isc_ht_destroy(&tomod); - } + isc_ht_iter_destroy(&iteradd); + isc_ht_iter_destroy(&itermod); + isc_ht_destroy(&toadd); + isc_ht_destroy(&tomod); + return (result); } @@ -637,10 +605,7 @@ dns_catz_new_zones(dns_catz_zones_t **catzsp, dns_catz_zonemodmethods_t *zmm, isc_refcount_init(&new_zones->refs, 1); - result = isc_ht_init(&new_zones->zones, mctx, 4); - if (result != ISC_R_SUCCESS) { - goto cleanup_refcount; - } + isc_ht_init(&new_zones->zones, mctx, 4); isc_mem_attach(mctx, &new_zones->mctx); new_zones->zmm = zmm; @@ -658,7 +623,6 @@ dns_catz_new_zones(dns_catz_zones_t **catzsp, dns_catz_zonemodmethods_t *zmm, cleanup_ht: isc_ht_destroy(&new_zones->zones); -cleanup_refcount: isc_refcount_destroy(&new_zones->refs); isc_mutex_destroy(&new_zones->lock); isc_mem_putanddetach(&new_zones->mctx, new_zones, sizeof(*new_zones)); @@ -693,10 +657,7 @@ dns_catz_new_zone(dns_catz_zones_t *catzs, dns_catz_zone_t **zonep, dns_name_init(&new_zone->name, NULL); dns_name_dup(name, catzs->mctx, &new_zone->name); - result = isc_ht_init(&new_zone->entries, catzs->mctx, 4); - if (result != ISC_R_SUCCESS) { - goto cleanup_name; - } + isc_ht_init(&new_zone->entries, catzs->mctx, 4); new_zone->updatetimer = NULL; result = isc_timer_create(catzs->timermgr, isc_timertype_inactive, NULL, @@ -726,7 +687,6 @@ dns_catz_new_zone(dns_catz_zones_t *catzs, dns_catz_zone_t **zonep, cleanup_ht: isc_ht_destroy(&new_zone->entries); -cleanup_name: dns_name_free(&new_zone->name, catzs->mctx); isc_mem_put(catzs->mctx, new_zone, sizeof(*new_zone)); @@ -827,8 +787,7 @@ dns_catz_zone_detach(dns_catz_zone_t **zonep) { if (zone->entries != NULL) { isc_ht_iter_t *iter = NULL; isc_result_t result; - result = isc_ht_iter_create(zone->entries, &iter); - INSIST(result == ISC_R_SUCCESS); + isc_ht_iter_create(zone->entries, &iter); for (result = isc_ht_iter_first(iter); result == ISC_R_SUCCESS; result = isc_ht_iter_delcurrent_next(iter)) @@ -884,8 +843,7 @@ dns_catz_catzs_detach(dns_catz_zones_t **catzsp) { if (catzs->zones != NULL) { isc_ht_iter_t *iter = NULL; isc_result_t result; - result = isc_ht_iter_create(catzs->zones, &iter); - INSIST(result == ISC_R_SUCCESS); + isc_ht_iter_create(catzs->zones, &iter); for (result = isc_ht_iter_first(iter); result == ISC_R_SUCCESS;) { dns_catz_zone_t *zone = NULL; @@ -2060,8 +2018,7 @@ dns_catz_prereconfig(dns_catz_zones_t *catzs) { REQUIRE(DNS_CATZ_ZONES_VALID(catzs)); - result = isc_ht_iter_create(catzs->zones, &iter); - INSIST(result == ISC_R_SUCCESS); + isc_ht_iter_create(catzs->zones, &iter); for (result = isc_ht_iter_first(iter); result == ISC_R_SUCCESS; result = isc_ht_iter_next(iter)) { @@ -2082,8 +2039,7 @@ dns_catz_postreconfig(dns_catz_zones_t *catzs) { REQUIRE(DNS_CATZ_ZONES_VALID(catzs)); LOCK(&catzs->lock); - result = isc_ht_iter_create(catzs->zones, &iter); - INSIST(result == ISC_R_SUCCESS); + isc_ht_iter_create(catzs->zones, &iter); for (result = isc_ht_iter_first(iter); result == ISC_R_SUCCESS;) { dns_catz_zone_t *zone = NULL; @@ -2122,5 +2078,7 @@ dns_catz_postreconfig(dns_catz_zones_t *catzs) { isc_result_t dns_catz_get_iterator(dns_catz_zone_t *catz, isc_ht_iter_t **itp) { REQUIRE(DNS_CATZ_ZONE_VALID(catz)); - return (isc_ht_iter_create(catz->entries, itp)); + isc_ht_iter_create(catz->entries, itp); + + return (ISC_R_SUCCESS); } diff --git a/lib/dns/rpz.c b/lib/dns/rpz.c index 1bdaac9..13cfc85 100644 --- a/lib/dns/rpz.c +++ b/lib/dns/rpz.c @@ -1541,10 +1541,7 @@ dns_rpz_new_zone(dns_rpz_zones_t *rpzs, dns_rpz_zone_t **rpzp) { * simplifies update_from_db */ - result = isc_ht_init(&zone->nodes, rpzs->mctx, 1); - if (result != ISC_R_SUCCESS) { - goto cleanup_ht; - } + isc_ht_init(&zone->nodes, rpzs->mctx, 1); dns_name_init(&zone->origin, NULL); dns_name_init(&zone->client_ip, NULL); @@ -1578,9 +1575,6 @@ dns_rpz_new_zone(dns_rpz_zones_t *rpzs, dns_rpz_zone_t **rpzp) { return (ISC_R_SUCCESS); -cleanup_ht: - isc_timer_detach(&zone->updatetimer); - cleanup_timer: isc_refcount_decrementz(&zone->refs); isc_refcount_destroy(&zone->refs); @@ -1724,14 +1718,7 @@ setup_update(dns_rpz_zone_t *rpz) { ISC_LOG_DEBUG(1), "rpz: %s: using hashtable size %d", domain, hashsize); - result = isc_ht_init(&rpz->newnodes, rpz->rpzs->mctx, hashsize); - if (result != ISC_R_SUCCESS) { - isc_log_write(dns_lctx, DNS_LOGCATEGORY_GENERAL, - DNS_LOGMODULE_MASTER, ISC_LOG_ERROR, - "rpz: %s: failed to initialize hashtable - %s", - domain, isc_result_totext(result)); - goto cleanup; - } + isc_ht_init(&rpz->newnodes, rpz->rpzs->mctx, hashsize); result = dns_db_createiterator(rpz->updb, DNS_DB_NONSEC3, &rpz->updbit); if (result != ISC_R_SUCCESS) { @@ -1838,17 +1825,7 @@ cleanup_quantum(isc_task_t *task, isc_event_t *event) { * Iterate over old ht with existing nodes deleted to * delete deleted nodes from RPZ */ - result = isc_ht_iter_create(rpz->nodes, &iter); - if (result != ISC_R_SUCCESS) { - dns_name_format(&rpz->origin, domain, - DNS_NAME_FORMATSIZE); - isc_log_write(dns_lctx, DNS_LOGCATEGORY_GENERAL, - DNS_LOGMODULE_MASTER, ISC_LOG_ERROR, - "rpz: %s: failed to create HT " - "iterator - %s", - domain, isc_result_totext(result)); - goto cleanup; - } + isc_ht_iter_create(rpz->nodes, &iter); } name = dns_fixedname_initname(&fname); diff --git a/lib/isc/ht.c b/lib/isc/ht.c index 82f8ac8..88e8578 100644 --- a/lib/isc/ht.c +++ b/lib/isc/ht.c @@ -47,7 +47,7 @@ struct isc_ht_iter { isc_ht_node_t *cur; }; -isc_result_t +void isc_ht_init(isc_ht_t **htp, isc_mem_t *mctx, uint8_t bits) { isc_ht_t *ht = NULL; size_t i; @@ -74,7 +74,6 @@ isc_ht_init(isc_ht_t **htp, isc_mem_t *mctx, uint8_t bits) { ht->magic = ISC_HT_MAGIC; *htp = ht; - return (ISC_R_SUCCESS); } void @@ -199,7 +198,7 @@ isc_ht_delete(isc_ht_t *ht, const unsigned char *key, uint32_t keysize) { return (ISC_R_NOTFOUND); } -isc_result_t +void isc_ht_iter_create(isc_ht_t *ht, isc_ht_iter_t **itp) { isc_ht_iter_t *it; @@ -213,8 +212,6 @@ isc_ht_iter_create(isc_ht_t *ht, isc_ht_iter_t **itp) { it->cur = NULL; *itp = it; - - return (ISC_R_SUCCESS); } void diff --git a/lib/isc/include/isc/ht.h b/lib/isc/include/isc/ht.h index 9d5ab82..280ee7e 100644 --- a/lib/isc/include/isc/ht.h +++ b/lib/isc/include/isc/ht.h @@ -31,11 +31,8 @@ typedef struct isc_ht_iter isc_ht_iter_t; *\li 'mctx' is a valid memory context. *\li 'bits' >=1 and 'bits' <=32 * - * Returns: - *\li #ISC_R_NOMEMORY -- not enough memory to create pool - *\li #ISC_R_SUCCESS -- all is well. */ -isc_result_t +void isc_ht_init(isc_ht_t **htp, isc_mem_t *mctx, uint8_t bits); /*% @@ -100,7 +97,7 @@ isc_ht_delete(isc_ht_t *ht, const unsigned char *key, uint32_t keysize); *\li 'ht' is a valid hashtable *\li 'itp' is non NULL and '*itp' is NULL. */ -isc_result_t +void isc_ht_iter_create(isc_ht_t *ht, isc_ht_iter_t **itp); /*% @@ -119,7 +116,7 @@ isc_ht_iter_destroy(isc_ht_iter_t **itp); *\li 'it' is non NULL. * * Returns: - * \li #ISC_R_SUCCESS -- success + * \li #ISC_R_SUCCESS -- success * \li #ISC_R_NOMORE -- no data in the hashtable */ isc_result_t @@ -132,7 +129,7 @@ isc_ht_iter_first(isc_ht_iter_t *it); *\li 'it' is non NULL. * * Returns: - * \li #ISC_R_SUCCESS -- success + * \li #ISC_R_SUCCESS -- success * \li #ISC_R_NOMORE -- end of hashtable reached */ isc_result_t @@ -145,7 +142,7 @@ isc_ht_iter_next(isc_ht_iter_t *it); *\li 'it' is non NULL. * * Returns: - * \li #ISC_R_SUCCESS -- success + * \li #ISC_R_SUCCESS -- success * \li #ISC_R_NOMORE -- end of hashtable reached */ isc_result_t diff --git a/lib/isc/tests/ht_test.c b/lib/isc/tests/ht_test.c index 6a8e319..61b8c3d 100644 --- a/lib/isc/tests/ht_test.c +++ b/lib/isc/tests/ht_test.c @@ -59,8 +59,7 @@ test_ht_full(int bits, uintptr_t count) { isc_result_t result; uintptr_t i; - result = isc_ht_init(&ht, test_mctx, bits); - assert_int_equal(result, ISC_R_SUCCESS); + isc_ht_init(&ht, test_mctx, bits); assert_non_null(ht); for (i = 1; i < count; i++) { @@ -205,8 +204,7 @@ test_ht_iterator() { unsigned char key[16]; size_t tksize; - result = isc_ht_init(&ht, test_mctx, 16); - assert_int_equal(result, ISC_R_SUCCESS); + isc_ht_init(&ht, test_mctx, 16); assert_non_null(ht); for (i = 1; i <= count; i++) { /* @@ -220,8 +218,7 @@ test_ht_iterator() { } walked = 0; - result = isc_ht_iter_create(ht, &iter); - assert_int_equal(result, ISC_R_SUCCESS); + isc_ht_iter_create(ht, &iter); for (result = isc_ht_iter_first(iter); result == ISC_R_SUCCESS; result = isc_ht_iter_next(iter)) -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.