From 7b6c47bc4b39d202866cc1d9e328faaaf50e0a48 Mon Sep 17 00:00:00 2001 From: Roman Khlopkov <roman.khlopkov@demlabs.net> Date: Wed, 12 Jul 2023 12:44:00 +0300 Subject: [PATCH] [*] NULL DB mold with not blank hash segfault fix --- modules/consensus/esbocs/dap_chain_cs_esbocs.c | 4 +++- modules/net/srv/dap_chain_net_srv_order.c | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c index 917b71dabd..a1df8c0551 100644 --- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c +++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c @@ -314,6 +314,8 @@ static void s_session_db_serialize(dap_chain_esbocs_session_t *a_session) a_session->db_serial = l_pkt; if (l_pkt) dap_hash_fast(l_pkt->data, l_pkt->data_size, &a_session->db_hash); + else + a_session->db_hash = (dap_hash_fast_t){}; if (PVT(a_session->esbocs)->debug) { char l_sync_hash_str[DAP_CHAIN_HASH_FAST_STR_SIZE]; dap_chain_hash_fast_to_str(&a_session->db_hash, l_sync_hash_str, DAP_CHAIN_HASH_FAST_STR_SIZE); @@ -1965,7 +1967,7 @@ static void s_session_packet_in(void *a_arg, dap_chain_node_addr_t *a_sender_nod " SYNC message is rejected cause DB hash mismatch", l_session->chain->net_name, l_session->chain->name, l_session->cur_round.id, l_session->cur_round.sync_attempt); - if (!dap_hash_fast_is_blank(&l_session->db_hash)) { + if (l_session->db_serial) { dap_chain_esbocs_validator_t *l_validator = DAP_NEW_Z(dap_chain_esbocs_validator_t); l_validator->node_addr = *dap_chain_net_srv_stake_key_get_node_addr(&l_signing_addr); l_validator->signing_addr = l_signing_addr; diff --git a/modules/net/srv/dap_chain_net_srv_order.c b/modules/net/srv/dap_chain_net_srv_order.c index 4528cd60c6..0f761ac149 100644 --- a/modules/net/srv/dap_chain_net_srv_order.c +++ b/modules/net/srv/dap_chain_net_srv_order.c @@ -72,7 +72,7 @@ static void s_srv_order_check_decree_sign_timer() { uint32_t l_unverified_orders_lifetime = dap_config_get_item_uint32_default(g_config, "srv", "unverified_orders_lifetime", 21600); dap_time_t l_time_cut_off = dap_time_now(); l_time_cut_off -= l_unverified_orders_lifetime; // 6 Hours; - size_t l_net_count = 0; + uint16_t l_net_count = 0; dap_chain_net_t **l_net_list = dap_chain_net_list(&l_net_count); for (uint16_t i = 0; i < l_net_count; i++) { if (dap_chain_net_get_role(l_net_list[i]).enums == NODE_ROLE_MASTER) { -- GitLab