diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c index 860d925b45a00d152c835a27c2ab7fb10239d8b4..ce4aae755ca60170c9fc9441e10ae636251be9e5 100644 --- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c +++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c @@ -339,7 +339,12 @@ static void s_check_db_collect_callback(dap_global_db_instance_t UNUSED_ARG *a_d dap_global_db_obj_t *l_objs = dap_global_db_get_all_sync(a_group, &l_objs_count); if (l_objs_count >= 10) { for (size_t i = 0; i < l_objs_count; i++) { - SUM_256_256(l_value_total, *(uint256_t*)l_objs[i].value, &l_value_total); + if (l_objs[i].value_len != sizeof(uint256_t)) { + log_it(L_ERROR, "Autocollect record %s is corrupt, len %zu clear it", l_objs[i].key, l_objs[i].value_len); + dap_global_db_del_sync(a_group, l_objs[i].key); + continue; + } + SUM_256_256(l_value_total, *(uint256_t *)l_objs[i].value, &l_value_total); if (compare256(l_value_total, l_block_collect_params->collecting_level) >= 0) { l_level_reached = true; break; diff --git a/modules/type/blocks/dap_chain_cs_blocks.c b/modules/type/blocks/dap_chain_cs_blocks.c index 1caca8b14032589117f2e10b2bc5485182049710..13c5384906c35c4bf84b2ad87e511f1a8cd697e1 100644 --- a/modules/type/blocks/dap_chain_cs_blocks.c +++ b/modules/type/blocks/dap_chain_cs_blocks.c @@ -1242,17 +1242,14 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply) .block_sign_pkey = l_pub_key, .collecting_addr = l_addr }; - //Cleare gdb - size_t l_objs_fee_count = 0; - size_t l_objs_rew_count = 0; + //Clear gdb char *l_group_fee = dap_chain_cs_blocks_get_fee_group(l_net->pub.name); - char *l_group_rew = dap_chain_cs_blocks_get_reward_group(l_net->pub.name); - dap_global_db_obj_t *l_objs_fee = dap_global_db_get_all_sync(l_group_fee, &l_objs_fee_count); - dap_global_db_obj_t *l_objs_rew = dap_global_db_get_all_sync(l_group_rew, &l_objs_rew_count); - if(l_objs_fee_count)dap_global_db_objs_delete(l_objs_fee,l_objs_fee_count); - if(l_objs_rew_count)dap_global_db_objs_delete(l_objs_rew,l_objs_rew_count); + dap_global_db_del_sync(l_group_fee, NULL); DAP_DELETE(l_group_fee); - DAP_DELETE(l_group_rew); + char *l_group_reward = dap_chain_cs_blocks_get_reward_group(l_net->pub.name); + dap_global_db_del_sync(l_group_reward, NULL); + DAP_DELETE(l_group_reward); + json_object* json_arr_bl_out = json_object_new_array(); for (dap_chain_block_cache_t *l_block_cache = PVT(l_blocks)->blocks; l_block_cache; l_block_cache = l_block_cache->hh.next) {