From 946e7e534c151a5d05ebc5e025029dd5733e52a4 Mon Sep 17 00:00:00 2001 From: Evgeniy Kramsakov <evgeniy.kramsakov@demlabs.net> Date: Tue, 5 Apr 2022 11:42:01 +0000 Subject: [PATCH] bug-5964 --- 3rdparty/json-c-darwin/json_tokener.c | 2 +- dap-sdk/crypto/src/dap_enc_ringct20.c | 7 ++----- dap-sdk/crypto/src/dap_sign.c | 1 + dap-sdk/crypto/src/sig_bliss/bliss_b_signatures.c | 4 ++-- dap-sdk/crypto/src/sig_picnic/picnic_impl.c | 4 ++-- dap-sdk/crypto/src/sig_tesla/sample.c | 4 ++-- dap-sdk/crypto/src/sig_tesla/sign.c | 14 +++++++------- dap-sdk/crypto/src/sig_tesla/tesla_params.c | 2 +- dap-sdk/net/server/enc_server/dap_enc_ks.c | 1 + dap-sdk/net/server/http_server/dap_http.c | 1 + dap-sdk/net/stream/session/dap_stream_session.c | 1 + modules/chain/dap_chain_ledger.c | 9 +++++++++ .../channel/chain-net/dap_stream_ch_chain_net.c | 1 + .../chain-voting/dap_stream_ch_chain_voting.c | 1 + modules/channel/chain/dap_stream_ch_chain.c | 10 ++++++++-- .../consensus/block-poa/dap_chain_cs_block_poa.c | 1 + .../consensus/block-ton/dap_chain_cs_block_ton.c | 1 + modules/consensus/dag-poa/dap_chain_cs_dag_poa.c | 2 ++ modules/global-db/dap_chain_global_db_driver_cdb.c | 2 +- modules/net/dap_chain_node_cli_cmd.c | 12 ++++++------ modules/net/dap_chain_node_client.c | 1 + modules/net/dap_chain_node_dns_server.c | 1 + modules/net/dap_chain_node_ping.c | 2 +- modules/net/srv/dap_chain_net_srv.c | 1 + modules/service/stake/dap_chain_net_srv_stake.c | 1 + .../service/xchange/dap_chain_net_srv_xchange.c | 1 + modules/type/blocks/dap_chain_block.c | 4 +++- modules/type/blocks/dap_chain_block_chunk.c | 3 +++ modules/type/dag/dap_chain_cs_dag.c | 1 + 29 files changed, 64 insertions(+), 31 deletions(-) diff --git a/3rdparty/json-c-darwin/json_tokener.c b/3rdparty/json-c-darwin/json_tokener.c index aad463a0d2..b6f9295939 100644 --- a/3rdparty/json-c-darwin/json_tokener.c +++ b/3rdparty/json-c-darwin/json_tokener.c @@ -136,8 +136,8 @@ struct json_tokener *json_tokener_new_ex(int depth) tok->pb = printbuf_new(); if (!tok->pb) { + free(tok->stack); free(tok); - free(tok->stack); return NULL; } tok->max_depth = depth; diff --git a/dap-sdk/crypto/src/dap_enc_ringct20.c b/dap-sdk/crypto/src/dap_enc_ringct20.c index a0815efcd3..8b89dec35d 100644 --- a/dap-sdk/crypto/src/dap_enc_ringct20.c +++ b/dap-sdk/crypto/src/dap_enc_ringct20.c @@ -534,18 +534,15 @@ int32_t ringct20_private_and_public_keys_init(ringct20_private_key_t *private_ke unsigned char *f = NULL, *g = NULL; - f = calloc(p->RINGCT20_PBK_SIZE, sizeof(char)); + f = calloc(p->RINGCT20_PBK_SIZE, sizeof(unsigned char)); if (f == NULL) { - free(f); return -1; } public_key->kind = p->kind; public_key->data = f; - g = calloc(p->RINGCT20_PRK_SIZE, sizeof(char)); + g = calloc(p->RINGCT20_PRK_SIZE, sizeof(unsigned char)); if (g == NULL) { - free(f); - free(g); return -1; } diff --git a/dap-sdk/crypto/src/dap_sign.c b/dap-sdk/crypto/src/dap_sign.c index 0e9b6708d1..642ddf78e5 100755 --- a/dap-sdk/crypto/src/dap_sign.c +++ b/dap-sdk/crypto/src/dap_sign.c @@ -655,6 +655,7 @@ void dap_multi_sign_params_delete(dap_multi_sign_params_t *a_params) */ bool dap_multi_sign_hash_data(dap_multi_sign_t *a_sign, const void *a_data, const size_t a_data_size, dap_chain_hash_fast_t *a_hash) { + //types missunderstanding? uint8_t *l_concatenated_hash = DAP_NEW_SIZE(uint8_t, 3 * sizeof(dap_chain_hash_fast_t)); if (!dap_hash_fast(a_data, a_data_size, a_hash)) { DAP_DELETE(l_concatenated_hash); diff --git a/dap-sdk/crypto/src/sig_bliss/bliss_b_signatures.c b/dap-sdk/crypto/src/sig_bliss/bliss_b_signatures.c index 173fa49675..6b26ef9e76 100755 --- a/dap-sdk/crypto/src/sig_bliss/bliss_b_signatures.c +++ b/dap-sdk/crypto/src/sig_bliss/bliss_b_signatures.c @@ -492,7 +492,7 @@ int32_t bliss_b_sign(bliss_signature_t *signature, const bliss_private_key_t *p return BLISS_B_NO_MEM; } - indices = calloc(kappa, sizeof(int32_t)); + indices = calloc(kappa, sizeof(uint32_t)); if(indices == NULL){ free(hash); secure_free(&z1, n); @@ -847,7 +847,7 @@ int32_t bliss_b_verify(const bliss_signature_t *signature, const bliss_public_k return retval; } - indices = calloc(kappa, sizeof(int32_t)); + indices = calloc(kappa, sizeof(uint32_t)); if(indices == NULL){ retval = BLISS_B_NO_MEM; delete_ntt_state(state); diff --git a/dap-sdk/crypto/src/sig_picnic/picnic_impl.c b/dap-sdk/crypto/src/sig_picnic/picnic_impl.c index 4e9b1a329b..27b4b4c977 100755 --- a/dap-sdk/crypto/src/sig_picnic/picnic_impl.c +++ b/dap-sdk/crypto/src/sig_picnic/picnic_impl.c @@ -306,7 +306,7 @@ void H3(const uint32_t* circuitOutput, const uint32_t* plaintext, uint32_t** vie /* Hash the output share from each view */ uint32_t i; int j; - for (i = 0; i < params->numZKBRounds; i++) { + for (i = 0; i < params->numZKBRounds; i++) { //params->numZKBRounds should never be 0 for (j = 0; j < 3; j++) { HashUpdate(&ctx, (uint8_t*)VIEW_OUTPUTS(i, j), params->stateSizeBytes); } @@ -826,7 +826,7 @@ int sign(uint32_t* privateKey, uint32_t* pubKey, uint32_t* plaintext, const uint uint32_t** viewOutputs = malloc(params->numZKBRounds * 3 * sizeof(uint32_t*)); size_t ii, jj; - for (ii = 0; ii < params->numZKBRounds; ii++) + for (ii = 0; ii < params->numZKBRounds; ii++) //params->numZKBRounds should never be 0 for (jj = 0; jj < 3; jj++) VIEW_OUTPUTS(ii, jj) = views[ii][jj].outputShare; diff --git a/dap-sdk/crypto/src/sig_tesla/sample.c b/dap-sdk/crypto/src/sig_tesla/sample.c index 67da29b779..c15647aaf2 100755 --- a/dap-sdk/crypto/src/sig_tesla/sample.c +++ b/dap-sdk/crypto/src/sig_tesla/sample.c @@ -654,7 +654,7 @@ static uint32_t Bernoulli(int64_t r, int64_t t, tesla_param_t *p) { // Sample a void sample_gauss_poly(int64_t *x, const unsigned char *seed, int nonce, tesla_param_t *p) { // Gaussian sampler - unsigned char *seed_ex = malloc(p->PARAM_N * 8 * sizeof(char)); + unsigned char *seed_ex = malloc(p->PARAM_N * 8 * sizeof(unsigned char)); int64_t i, j = 0, x_ind; int64_t *buf = (int64_t *) seed_ex; int64_t sign, k, bitsremained, rbits, y, z; @@ -865,7 +865,7 @@ void encode_c(uint32_t *pos_list, int16_t *sign_list, unsigned char *c_bin, tesl int pos, cnt = 0; int16_t *c = malloc(p->PARAM_N * sizeof(int16_t)); const int RLENGTH = SHAKE128_RATE; - unsigned char *r = malloc(RLENGTH * sizeof(char)); + unsigned char *r = malloc(RLENGTH * sizeof(unsigned char)); uint16_t dmsp = 0; // Use the hash value as key to generate some randomness diff --git a/dap-sdk/crypto/src/sig_tesla/sign.c b/dap-sdk/crypto/src/sig_tesla/sign.c index 7069424936..391ef4f033 100755 --- a/dap-sdk/crypto/src/sig_tesla/sign.c +++ b/dap-sdk/crypto/src/sig_tesla/sign.c @@ -368,7 +368,7 @@ static void decode_sig(unsigned char *c, poly *z, const unsigned char *sm, tesla void hash_vm(unsigned char *c_bin, poly_k *v, const unsigned char *m, unsigned long long mlen, tesla_param_t *p) { // Hash to generate c' - unsigned char *t = malloc((p->PARAM_K * p->PARAM_N + mlen) * sizeof(char)); + unsigned char *t = malloc((p->PARAM_K * p->PARAM_N + mlen) * sizeof(unsigned char)); int64_t mask, cL, temp; unsigned int i, k, index; @@ -621,7 +621,7 @@ static int32_t tesla_private_and_public_keys_init(tesla_private_key_t *private_k unsigned char *f = NULL, *g = NULL; - f = calloc(p->CRYPTO_PUBLICKEYBYTES, sizeof(char)); + f = calloc(p->CRYPTO_PUBLICKEYBYTES, sizeof(unsigned char)); if (f == NULL) { free(f); free(g); @@ -630,7 +630,7 @@ static int32_t tesla_private_and_public_keys_init(tesla_private_key_t *private_k public_key->kind = p->kind; public_key->data = f; - g = calloc(p->CRYPTO_SECRETKEYBYTES, sizeof(char)); + g = calloc(p->CRYPTO_SECRETKEYBYTES, sizeof(unsigned char)); if (g == NULL) { free(f); free(g); @@ -662,8 +662,8 @@ int tesla_crypto_sign_keypair(tesla_public_key_t *public_key, tesla_private_key_ if(tesla_private_and_public_keys_init( private_key, public_key, p) != 0) return -1; - unsigned char *randomness = malloc(CRYPTO_RANDOMBYTES * sizeof(char)); - unsigned char *randomness_extended = malloc((p->PARAM_K + 3) * CRYPTO_SEEDBYTES * sizeof(char)); + unsigned char *randomness = malloc(CRYPTO_RANDOMBYTES * sizeof(unsigned char)); + unsigned char *randomness_extended = malloc((p->PARAM_K + 3) * CRYPTO_SEEDBYTES * sizeof(unsigned char)); // Get randomness_extended <- seed_e, seed_s, seed_a, seed_y if(seed && seed_size>0){ @@ -900,8 +900,8 @@ int tesla_crypto_sign_open( tesla_signature_t *sig, const unsigned char *m, unsi unsigned char *c_sig = malloc(CRYPTO_C_BYTES); unsigned char *seed = malloc(CRYPTO_SEEDBYTES); uint32_t *pos_list = malloc(p->PARAM_W * sizeof(uint32_t)); - int16_t *sign_list = malloc(p->PARAM_W * sizeof(uint16_t)); - int32_t *pk_t = malloc(p->PARAM_N * p->PARAM_K * sizeof(uint32_t)); + int16_t *sign_list = malloc(p->PARAM_W * sizeof(int16_t)); + int32_t *pk_t = malloc(p->PARAM_N * p->PARAM_K * sizeof(int32_t)); unsigned int k; poly_k *w = malloc(p->PARAM_K * p->PARAM_N * sizeof(int64_t)); poly_k *a = malloc(p->PARAM_K * p->PARAM_N * sizeof(int64_t)); diff --git a/dap-sdk/crypto/src/sig_tesla/tesla_params.c b/dap-sdk/crypto/src/sig_tesla/tesla_params.c index 5ed1f42de4..6397d5242d 100755 --- a/dap-sdk/crypto/src/sig_tesla/tesla_params.c +++ b/dap-sdk/crypto/src/sig_tesla/tesla_params.c @@ -331,7 +331,7 @@ void poly_uniform(poly_k *a, const unsigned char *seed, tesla_param_t *p) { unsigned int pos = 0, i = 0, nbytes = (p->PARAM_Q_LOG + 7) / 8; unsigned int nblocks = p->PARAM_GEN_A; uint32_t val1, val2, val3, val4, mask = (uint32_t)(1 << p->PARAM_Q_LOG) - 1; - unsigned char *buf = malloc(SHAKE128_RATE * nblocks * sizeof(char)); + unsigned char *buf = malloc(SHAKE128_RATE * nblocks * sizeof(unsigned char)); uint16_t dmsp = 0; cshake128_simple( buf, SHAKE128_RATE * nblocks, dmsp++, seed, CRYPTO_RANDOMBYTES); diff --git a/dap-sdk/net/server/enc_server/dap_enc_ks.c b/dap-sdk/net/server/enc_server/dap_enc_ks.c index 32810ccbfb..626c1ec662 100644 --- a/dap-sdk/net/server/enc_server/dap_enc_ks.c +++ b/dap-sdk/net/server/enc_server/dap_enc_ks.c @@ -52,6 +52,7 @@ void dap_enc_ks_deinit() if (_ks) { dap_enc_ks_key_t *cur_item, *tmp; HASH_ITER(hh, _ks, cur_item, tmp) { + // Clang bug at this, cur_item should change at every loop cycle HASH_DEL(_ks, cur_item); _enc_key_free(&cur_item); } diff --git a/dap-sdk/net/server/http_server/dap_http.c b/dap-sdk/net/server/http_server/dap_http.c index 7af054d9ea..c47c46642f 100644 --- a/dap-sdk/net/server/http_server/dap_http.c +++ b/dap-sdk/net/server/http_server/dap_http.c @@ -121,6 +121,7 @@ void dap_http_delete( dap_server_t *a_server, void * a_arg ) dap_http_url_proc_t *l_url_proc, *l_tmp; HASH_ITER( hh, l_http->url_proc ,l_url_proc, l_tmp ) { + // Clang bug at this, l_url_proc should change at every loop cycle HASH_DEL(l_http->url_proc, l_url_proc); if( l_url_proc->_inheritor ) DAP_DELETE(l_url_proc->_inheritor ); diff --git a/dap-sdk/net/stream/session/dap_stream_session.c b/dap-sdk/net/stream/session/dap_stream_session.c index 5bf946de7d..8543f776e3 100644 --- a/dap-sdk/net/stream/session/dap_stream_session.c +++ b/dap-sdk/net/stream/session/dap_stream_session.c @@ -54,6 +54,7 @@ void dap_stream_session_deinit() log_it(L_INFO,"Destroy all the sessions"); pthread_mutex_lock(&sessions_mutex); HASH_ITER(hh, sessions, current, tmp) { + // Clang bug at this, current should change at every loop cycle HASH_DEL(sessions,current); if (current->callback_delete) current->callback_delete(current, NULL); diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c index 519e66bfb4..c82dc2d980 100644 --- a/modules/chain/dap_chain_ledger.c +++ b/modules/chain/dap_chain_ledger.c @@ -568,6 +568,7 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite } a_token_item->auth_signs_total--; if(a_token_item->auth_signs_total){ + // Type sizeof's misunderstanding in realloc? a_token_item->auth_signs = DAP_REALLOC(a_token_item->auth_signs,a_token_item->auth_signs_total*sizeof (void*) ); a_token_item->auth_signs_pkey_hash = DAP_REALLOC(a_token_item->auth_signs_pkey_hash,a_token_item->auth_signs_total*sizeof (void*) ); }else{ @@ -584,6 +585,7 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SIGNS_ADD:{ if(l_tsd->size == sizeof (dap_hash_fast_t) ){ a_token_item->auth_signs_total++; + // Type sizeof's misunderstanding in realloc? a_token_item->auth_signs = DAP_REALLOC(a_token_item->auth_signs,a_token_item->auth_signs_total*sizeof (void*) ); a_token_item->auth_signs_pkey_hash = DAP_REALLOC(a_token_item->auth_signs_pkey_hash,a_token_item->auth_signs_total*sizeof (void*) ); a_token_item->auth_signs[a_token_item->auth_signs_total-1] = NULL; @@ -2959,6 +2961,7 @@ void dap_chain_ledger_purge(dap_ledger_t *a_ledger, bool a_preserve_db) dap_chain_ledger_tx_item_t *l_item_current, *l_item_tmp; char *l_gdb_group; HASH_ITER(hh, l_ledger_priv->ledger_items , l_item_current, l_item_tmp) { + // Clang bug at this, l_item_current should change at every loop cycle HASH_DEL(l_ledger_priv->ledger_items, l_item_current); DAP_DELETE(l_item_current->tx); DAP_DELETE(l_item_current); @@ -2972,6 +2975,7 @@ void dap_chain_ledger_purge(dap_ledger_t *a_ledger, bool a_preserve_db) // delete spent transactions dap_chain_ledger_tx_spent_item_t *l_spent_item_current, *l_spent_item_tmp; HASH_ITER(hh, l_ledger_priv->spent_items, l_spent_item_current, l_spent_item_tmp) { + // Clang bug at this, l_item_current should change at every loop cycle HASH_DEL(l_ledger_priv->spent_items, l_spent_item_current); DAP_DELETE(l_item_current); } @@ -2984,6 +2988,7 @@ void dap_chain_ledger_purge(dap_ledger_t *a_ledger, bool a_preserve_db) // delete balances dap_ledger_wallet_balance_t *l_balance_current, *l_balance_tmp; HASH_ITER(hh, l_ledger_priv->balance_accounts, l_balance_current, l_balance_tmp) { + // Clang bug at this, l_balance_current should change at every loop cycle HASH_DEL(l_ledger_priv->balance_accounts, l_balance_current); DAP_DELETE(l_balance_current); } @@ -2998,9 +3003,11 @@ void dap_chain_ledger_purge(dap_ledger_t *a_ledger, bool a_preserve_db) dap_chain_ledger_token_emission_item_t *l_emission_current, *l_emission_tmp; HASH_ITER(hh, l_ledger_priv->tokens, l_token_current, l_token_tmp) { HASH_DEL(l_ledger_priv->tokens, l_token_current); + // Clang bug at this, l_token_current should change at every loop cycle pthread_rwlock_wrlock(&l_token_current->token_emissions_rwlock); HASH_ITER(hh, l_token_current->token_emissions, l_emission_current, l_emission_tmp) { HASH_DEL(l_token_current->token_emissions, l_emission_current); + // Clang bug at this, l_emission_current should change at every loop cycle DAP_DELETE(l_emission_current->datum_token_emission); DAP_DELETE(l_emission_current); } @@ -3023,12 +3030,14 @@ void dap_chain_ledger_purge(dap_ledger_t *a_ledger, bool a_preserve_db) // delete threshold emissions HASH_ITER(hh, l_ledger_priv->threshold_emissions, l_emission_current, l_emission_tmp) { HASH_DEL(l_ledger_priv->threshold_emissions, l_emission_current); + // Clang bug at this, l_emission_current should change at every loop cycle DAP_DELETE(l_emission_current->datum_token_emission); DAP_DELETE(l_emission_current); } // delete threshold transactions HASH_ITER(hh, l_ledger_priv->threshold_txs, l_item_current, l_item_tmp) { HASH_DEL(l_ledger_priv->threshold_txs, l_item_current); + // Clang bug at this, l_item_current should change at every loop cycle DAP_DELETE(l_item_current->tx); DAP_DELETE(l_item_current); } diff --git a/modules/channel/chain-net/dap_stream_ch_chain_net.c b/modules/channel/chain-net/dap_stream_ch_chain_net.c index ff6ba4a25c..ce6a10d514 100644 --- a/modules/channel/chain-net/dap_stream_ch_chain_net.c +++ b/modules/channel/chain-net/dap_stream_ch_chain_net.c @@ -90,6 +90,7 @@ static void session_data_del(unsigned int a_id) pthread_mutex_lock(&s_hash_mutex); HASH_FIND_INT(s_chain_net_data, &a_id, l_sdata); if(l_sdata) { + // Clang bug at this, l_sdata should change at every loop cycle HASH_DEL(s_chain_net_data, l_sdata); DAP_DELETE(l_sdata); } diff --git a/modules/channel/chain-voting/dap_stream_ch_chain_voting.c b/modules/channel/chain-voting/dap_stream_ch_chain_voting.c index d389fa1cb0..e04d165d6f 100644 --- a/modules/channel/chain-voting/dap_stream_ch_chain_voting.c +++ b/modules/channel/chain-voting/dap_stream_ch_chain_voting.c @@ -285,6 +285,7 @@ static void s_callback_send_all_unsafe(dap_client_t *a_client, void *a_arg){ void dap_stream_ch_chain_voting_deinit() { voting_node_client_list_t *l_node_info_item=NULL, *l_node_info_tmp=NULL; HASH_ITER(hh, s_node_client_list, l_node_info_item, l_node_info_tmp) { + // Clang bug at this, l_node_info_item should change at every loop cycle HASH_DEL(s_node_client_list, l_node_info_item); DAP_DELETE(l_node_info_item->node_client); DAP_DELETE(l_node_info_item); diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c index 07e7979b1c..3f3d372b74 100644 --- a/modules/channel/chain/dap_stream_ch_chain.c +++ b/modules/channel/chain/dap_stream_ch_chain.c @@ -162,8 +162,12 @@ void s_stream_ch_new(dap_stream_ch_t* a_ch, void* a_arg) */ static void s_sync_request_delete(struct sync_request * a_sync_request) { + if (!a_sync_request) { + //already NULL'ed + return; + } if (a_sync_request->pkt.pkt_data) { - DAP_DELETE(a_sync_request->pkt.pkt_data); + DAP_DEL_Z(a_sync_request->pkt.pkt_data); } if (a_sync_request->gdb.db_iter) { @@ -171,7 +175,7 @@ static void s_sync_request_delete(struct sync_request * a_sync_request) dap_list_free_full( a_sync_request->gdb.db_iter, free); a_sync_request->gdb.db_iter = NULL; } - DAP_DELETE(a_sync_request); + DAP_DEL_Z(a_sync_request); } /** @@ -1462,6 +1466,7 @@ static void s_free_log_list_gdb ( dap_stream_ch_chain_t * a_ch_chain) a_ch_chain->request_db_log = NULL; dap_stream_ch_chain_hash_item_t *l_hash_item = NULL, *l_tmp = NULL; HASH_ITER(hh, a_ch_chain->remote_gdbs, l_hash_item, l_tmp) { + // Clang bug at this, l_hash_item should change at every loop cycle HASH_DEL(a_ch_chain->remote_gdbs, l_hash_item); DAP_DELETE(l_hash_item); } @@ -1496,6 +1501,7 @@ void dap_stream_ch_chain_go_idle ( dap_stream_ch_chain_t * a_ch_chain) dap_stream_ch_chain_hash_item_t *l_hash_item = NULL, *l_tmp = NULL; HASH_ITER(hh, a_ch_chain->remote_atoms, l_hash_item, l_tmp) { + // Clang bug at this, l_hash_item should change at every loop cycle HASH_DEL(a_ch_chain->remote_atoms, l_hash_item); DAP_DELETE(l_hash_item); } diff --git a/modules/consensus/block-poa/dap_chain_cs_block_poa.c b/modules/consensus/block-poa/dap_chain_cs_block_poa.c index 3ee2f2763a..3c9424f31c 100644 --- a/modules/consensus/block-poa/dap_chain_cs_block_poa.c +++ b/modules/consensus/block-poa/dap_chain_cs_block_poa.c @@ -187,6 +187,7 @@ static int s_callback_new(dap_chain_t * a_chain, dap_config_t * a_chain_cfg) l_poa_pvt->auth_certs_count_verify = dap_config_get_item_uint16_default(a_chain_cfg,"block-poa","auth_certs_number_verify",0); l_poa_pvt->auth_certs_prefix = strdup ( dap_config_get_item_str(a_chain_cfg,"block-poa","auth_certs_prefix") ); if (l_poa_pvt->auth_certs_count && l_poa_pvt->auth_certs_count_verify ) { + // Type sizeof's misunderstanding in malloc? l_poa_pvt->auth_certs = DAP_NEW_Z_SIZE ( dap_cert_t *, l_poa_pvt->auth_certs_count * sizeof(dap_cert_t)); char l_cert_name[512]; for (size_t i = 0; i < l_poa_pvt->auth_certs_count ; i++ ){ diff --git a/modules/consensus/block-ton/dap_chain_cs_block_ton.c b/modules/consensus/block-ton/dap_chain_cs_block_ton.c index 0e4b243d91..298f03a2f8 100644 --- a/modules/consensus/block-ton/dap_chain_cs_block_ton.c +++ b/modules/consensus/block-ton/dap_chain_cs_block_ton.c @@ -782,6 +782,7 @@ static bool s_session_round_finish(dap_chain_cs_block_ton_items_t *a_session) { dap_chain_cs_block_ton_message_item_t *l_message_item=NULL, *l_message_tmp=NULL; HASH_ITER(hh, a_session->old_round.messages_items, l_message_item, l_message_tmp) { + // Clang bug at this, l_message_item should change at every loop cycle HASH_DEL(a_session->old_round.messages_items, l_message_item); DAP_DELETE(l_message_item->message); DAP_DELETE(l_message_item); diff --git a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c index 60ebc253d5..0fc6584bf9 100644 --- a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c +++ b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c @@ -222,6 +222,7 @@ static int s_cli_dag_poa(int argc, char ** argv, char **a_str_reply) if (!l_event_hash_hex_str) { DAP_DELETE(l_event_hash_base58_str); dap_chain_node_cli_set_reply_text(a_str_reply, "Invalid base58 hash format"); + return -6; } DAP_DELETE(l_event_hash_hex_str); @@ -358,6 +359,7 @@ static int s_callback_new(dap_chain_t * a_chain, dap_config_t * a_chain_cfg) l_poa_pvt->wait_sync_before_complete = dap_config_get_item_uint32_default(a_chain_cfg,"dag-poa","wait_sync_before_complete",180); l_poa_pvt->auth_certs_prefix = strdup ( dap_config_get_item_str(a_chain_cfg,"dag-poa","auth_certs_prefix") ); if (l_poa_pvt->auth_certs_count && l_poa_pvt->auth_certs_count_verify ) { + // Type sizeof's misunderstanding in malloc? l_poa_pvt->auth_certs = DAP_NEW_Z_SIZE ( dap_cert_t *, l_poa_pvt->auth_certs_count * sizeof(dap_cert_t)); char l_cert_name[512]; for (size_t i = 0; i < l_poa_pvt->auth_certs_count ; i++ ){ diff --git a/modules/global-db/dap_chain_global_db_driver_cdb.c b/modules/global-db/dap_chain_global_db_driver_cdb.c index 4e1d0fd37d..a3c3670895 100644 --- a/modules/global-db/dap_chain_global_db_driver_cdb.c +++ b/modules/global-db/dap_chain_global_db_driver_cdb.c @@ -227,7 +227,7 @@ pcdb_instance dap_cdb_init_group(const char *a_group, int a_flags) { DAP_DELETE(l_cdb_i->local_group); cdb_destroy(l_cdb_i->cdb); HASH_DEL(s_cdb, l_cdb_i); - DAP_DELETE(l_cdb_i); + DAP_DEL_Z(l_cdb_i); } FIN: diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index 5a6dfbec62..8689075ae2 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -3240,9 +3240,9 @@ int com_token_decl(int a_argc, char ** a_argv, char ** a_str_reply) dap_chain_node_cli_set_reply_text(a_str_reply, "Datum %s with 256bit token %s is%s placed in datum pool", l_key_str_out, l_ticker, l_placed ? "" : " not"); if (l_key_str_out != l_key_str) - DAP_DELETE(l_key_str); - DAP_DELETE(l_key_str); - DAP_DELETE(l_datum); + DAP_DEL_Z(l_key_str); + DAP_DEL_Z(l_key_str); + DAP_DEL_Z(l_datum); if (!l_placed) { l_ret = -2; } @@ -3462,12 +3462,12 @@ int com_token_emit(int a_argc, char ** a_argv, char ** a_str_reply) dap_chain_node_cli_set_reply_text(a_str_reply, "%s\nDatum %s with 256bit TX is%s placed in datum pool", str_reply_tmp, l_tx_hash_str, l_placed ? "" : " not"); DAP_DEL_Z(l_tx_hash_str); -//@RRL DAP_DELETE(str_reply_tmp); + DAP_DEL_Z(str_reply_tmp); } else{ // if transaction was not specified when emission was added we need output only emission result dap_chain_node_cli_set_reply_text(a_str_reply, str_reply_tmp); } - DAP_DELETE(str_reply_tmp); - DAP_DELETE(l_addr); + DAP_DEL_Z(str_reply_tmp); + DAP_DEL_Z(l_addr); DAP_DEL_Z(l_certs); return 0; } diff --git a/modules/net/dap_chain_node_client.c b/modules/net/dap_chain_node_client.c index 9b95cbbdac..4024d028d4 100644 --- a/modules/net/dap_chain_node_client.c +++ b/modules/net/dap_chain_node_client.c @@ -115,6 +115,7 @@ void dap_chain_node_client_deinit() { dap_chain_node_client_handle_t *l_client = NULL, *l_tmp = NULL; HASH_ITER(hh, s_clients,l_client, l_tmp){ + // Clang bug at this, l_client should change at every loop cycle HASH_DEL(s_clients,l_client); DAP_DELETE(l_client); } diff --git a/modules/net/dap_chain_node_dns_server.c b/modules/net/dap_chain_node_dns_server.c index 3f933f7d7b..27d0ec5674 100644 --- a/modules/net/dap_chain_node_dns_server.c +++ b/modules/net/dap_chain_node_dns_server.c @@ -276,6 +276,7 @@ void dap_dns_server_stop() { dap_dns_zone_hash_t *current_zone, *tmp; HASH_ITER(hh, s_dns_server->hash_table, current_zone, tmp) { + // Clang bug at this, current_zone should change at every loop cycle HASH_DEL(s_dns_server->hash_table, current_zone); DAP_DELETE(current_zone->zone); DAP_DELETE(current_zone); diff --git a/modules/net/dap_chain_node_ping.c b/modules/net/dap_chain_node_ping.c index f9237097f5..c99f76238d 100644 --- a/modules/net/dap_chain_node_ping.c +++ b/modules/net/dap_chain_node_ping.c @@ -204,7 +204,7 @@ static void* node_ping_background_proc(void *a_arg) // select the nearest node from the list unsigned int l_nodes_count = dap_list_length(l_node_list); unsigned int l_thread_id = 0; - pthread_t *l_threads = DAP_NEW_Z_SIZE(pthread_t, sizeof(pthread_t) * l_nodes_count); + pthread_t *l_threads = DAP_NEW_Z_SIZE(pthread_t, sizeof(pthread_t) * l_nodes_count); //Need to check for NULL uint64_t *l_nodes_addr = DAP_NEW_Z_SIZE(uint64_t, sizeof(uint64_t) * l_nodes_count); dap_list_t *l_node_list0 = l_node_list; diff --git a/modules/net/srv/dap_chain_net_srv.c b/modules/net/srv/dap_chain_net_srv.c index f6ab77a56c..64a9bc7e57 100644 --- a/modules/net/srv/dap_chain_net_srv.c +++ b/modules/net/srv/dap_chain_net_srv.c @@ -856,6 +856,7 @@ void dap_chain_net_srv_del_all(void) pthread_mutex_lock(&s_srv_list_mutex); HASH_ITER(hh, s_srv_list , l_sdata, l_sdata_tmp) { + // Clang bug at this, l_sdata should change at every loop cycle HASH_DEL(s_srv_list, l_sdata); pthread_mutex_destroy(&l_sdata->srv->banlist_mutex); DAP_DELETE(l_sdata->srv); diff --git a/modules/service/stake/dap_chain_net_srv_stake.c b/modules/service/stake/dap_chain_net_srv_stake.c index b0cdb80a5b..ffa24ad6fb 100644 --- a/modules/service/stake/dap_chain_net_srv_stake.c +++ b/modules/service/stake/dap_chain_net_srv_stake.c @@ -142,6 +142,7 @@ void dap_chain_net_srv_stake_deinit() { dap_chain_net_srv_stake_item_t *l_stake = NULL, *l_tmp; HASH_ITER(hh, s_srv_stake->itemlist, l_stake, l_tmp) { + // Clang bug at this, l_stake should change at every loop cycle HASH_DEL(s_srv_stake->itemlist, l_stake); DAP_DELETE(l_stake); } diff --git a/modules/service/xchange/dap_chain_net_srv_xchange.c b/modules/service/xchange/dap_chain_net_srv_xchange.c index f3fa4ae7e6..02a8147423 100644 --- a/modules/service/xchange/dap_chain_net_srv_xchange.c +++ b/modules/service/xchange/dap_chain_net_srv_xchange.c @@ -93,6 +93,7 @@ void dap_chain_net_srv_xchange_deinit() return; dap_chain_net_srv_xchange_price_t *l_price = NULL, *l_tmp; HASH_ITER(hh, s_srv_xchange->pricelist, l_price, l_tmp) { + // Clang bug at this, l_price should change at every loop cycle HASH_DEL(s_srv_xchange->pricelist, l_price); DAP_DELETE(l_price->wallet_str); DAP_DELETE(l_price->key_ptr); diff --git a/modules/type/blocks/dap_chain_block.c b/modules/type/blocks/dap_chain_block.c index 0cd60f4859..0c36a15ecc 100644 --- a/modules/type/blocks/dap_chain_block.c +++ b/modules/type/blocks/dap_chain_block.c @@ -60,7 +60,8 @@ void dap_chain_block_deinit() */ dap_chain_block_t *dap_chain_block_new(dap_chain_hash_fast_t *a_prev_block, size_t *a_block_size) { - dap_chain_block_t * l_block = DAP_NEW_Z_SIZE(dap_chain_block_t,sizeof(l_block->hdr)); + // Type sizeof's misunderstanding in malloc? + dap_chain_block_t * l_block = DAP_NEW_Z_SIZE (dap_chain_block_t,sizeof(l_block->hdr)); if( l_block == NULL){ log_it(L_CRITICAL, "Can't allocate memory for the new block"); return NULL; @@ -556,6 +557,7 @@ void dap_chain_block_meta_extract(dap_chain_block_meta_t ** a_meta, size_t a_met case DAP_CHAIN_BLOCK_META_LINK: if ( a_block_links && a_block_links_count){ if ( *a_block_links_count == 0 ){ + // Type sizeof's misunderstanding in malloc? *a_block_links = DAP_NEW_Z_SIZE(dap_chain_hash_fast_t, sizeof (dap_chain_hash_fast_t *) *l_links_count_max); *a_block_links_count = 0; }else if ( *a_block_links_count == l_links_count_max ){ diff --git a/modules/type/blocks/dap_chain_block_chunk.c b/modules/type/blocks/dap_chain_block_chunk.c index 89386ed06b..80f143f2aa 100644 --- a/modules/type/blocks/dap_chain_block_chunk.c +++ b/modules/type/blocks/dap_chain_block_chunk.c @@ -62,12 +62,14 @@ void dap_chain_block_chunks_delete(dap_chain_block_chunks_t * a_chunks) while(l_chunk){ dap_chain_block_cache_hash_t* l_block_cache_hash = NULL, *l_tmp = NULL; HASH_ITER(hh, l_chunk->block_cache_hash , l_block_cache_hash, l_tmp){ + // Clang bug at this, l_block_cache_hash should change at every loop cycle HASH_DEL(l_chunk->block_cache_hash, l_block_cache_hash); DAP_DELETE(l_block_cache_hash); } } dap_chain_block_cache_t* l_block_cache = NULL, *l_tmp = NULL; HASH_ITER(hh, a_chunks->cache , l_block_cache, l_tmp){ + // Clang bug at this, l_block_cache should change at every loop cycle HASH_DEL(a_chunks->cache, l_block_cache); dap_chain_block_cache_delete(l_block_cache); } @@ -177,6 +179,7 @@ void dap_chain_block_chunk_delete( dap_chain_block_chunk_t * a_chunk) { dap_chain_block_cache_hash_t * l_cache_hash = NULL, *l_tmp = NULL; HASH_ITER(hh, a_chunk->block_cache_hash, l_cache_hash, l_tmp){ + // Clang bug at this, l_cache_hash should change at every loop cycle HASH_DEL(a_chunk->block_cache_hash, l_cache_hash); DAP_DELETE(l_cache_hash); } diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c index ee7c676a2d..c3800041c2 100644 --- a/modules/type/dag/dap_chain_cs_dag.c +++ b/modules/type/dag/dap_chain_cs_dag.c @@ -294,6 +294,7 @@ static void s_dap_chain_cs_dag_purge(dap_chain_t *a_chain) dap_chain_cs_dag_pvt_t *l_dag_pvt = PVT(DAP_CHAIN_CS_DAG(a_chain)); pthread_rwlock_wrlock(&l_dag_pvt->events_rwlock); dap_chain_cs_dag_event_item_t *l_event_current, *l_event_tmp; + // Clang bug at this, l_event_current should change at every loop cycle HASH_ITER(hh, l_dag_pvt->events, l_event_current, l_event_tmp) { HASH_DEL(l_dag_pvt->events, l_event_current); DAP_DELETE(l_event_current); -- GitLab