From ec0001cd438751d19894d3269880275b944da62e Mon Sep 17 00:00:00 2001 From: "pavel.uhanov" <pavel.uhanov@demlabs.net> Date: Fri, 4 Aug 2023 13:33:35 +0000 Subject: [PATCH] hotfix-9253 --- dap-sdk | 2 +- .../block-poa/dap_chain_cs_block_poa.c | 18 ++++++++++++++---- .../consensus/dag-poa/dap_chain_cs_dag_poa.c | 9 +++++++++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/dap-sdk b/dap-sdk index 94a7061f5e..3e4943ec9c 160000 --- a/dap-sdk +++ b/dap-sdk @@ -1 +1 @@ -Subproject commit 94a7061f5e9d6332a3de7ddfa70b0b7d6b86abbf +Subproject commit 3e4943ec9c543a883f19cec7fdebb4a66c09ead4 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 fe61bc1563..990985c152 100644 --- a/modules/consensus/block-poa/dap_chain_cs_block_poa.c +++ b/modules/consensus/block-poa/dap_chain_cs_block_poa.c @@ -114,9 +114,19 @@ static int s_cli_block_poa(int argc, char ** argv, char **a_str_reply) return -1; } - dap_chain_node_cli_cmd_values_parse_net_chain(&arg_index,argc,argv,a_str_reply,&l_chain,&l_chain_net); + if (dap_chain_node_cli_cmd_values_parse_net_chain(&arg_index,argc,argv,a_str_reply,&l_chain,&l_chain_net)){ + return -3; + } + + const char *l_chain_type = dap_chain_net_get_type(l_chain); + if (strcmp(l_chain_type, "block_poa")){ + dap_cli_server_cmd_set_reply_text(a_str_reply, + "Type of chain %s is not block_poa. This chain with type %s is not supported by this command", + l_chain->name, l_chain_type); + return -42; + } - dap_chain_cs_blocks_t * l_blocks = DAP_CHAIN_CS_BLOCKS(l_chain); + dap_chain_cs_blocks_t *l_blocks = DAP_CHAIN_CS_BLOCKS(l_chain); dap_chain_cs_block_poa_pvt_t * l_poa_pvt = PVT ( DAP_CHAIN_CS_BLOCK_POA( l_blocks ) ); const char * l_block_new_cmd_str = NULL; @@ -127,12 +137,12 @@ static int s_cli_block_poa(int argc, char ** argv, char **a_str_reply) dap_cli_server_cmd_find_option_val(argv, arg_index, argc, "-block", &l_block_hash_str); dap_cli_server_cmd_find_option_val(argv, arg_index, argc, "-cert", &l_cert_str); - dap_enc_key_t *l_sign_key; + dap_enc_key_t *l_sign_key = NULL; // Load cert to sign if its present if (l_cert_str) { dap_cert_t *l_cert = dap_cert_find_by_name( l_cert_str); l_sign_key = l_cert->enc_key; - } else { + } else if (l_poa_pvt) { l_sign_key = l_poa_pvt->sign_key; } if (!l_sign_key || !l_sign_key->priv_key_data) { 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 fc07881cdd..2b461a101c 100644 --- a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c +++ b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c @@ -195,6 +195,15 @@ static int s_cli_dag_poa(int argc, char ** argv, char **a_str_reply) return -3; } + const char *l_chain_type = dap_chain_net_get_type(l_chain); + + if (strcmp(l_chain_type, "dag_poa")){ + dap_cli_server_cmd_set_reply_text(a_str_reply, + "Type of chain %s is not dag_poa. This chain with type %s is not supported by this command", + l_chain->name, l_chain_type); + return -42; + } + dap_chain_cs_dag_t * l_dag = DAP_CHAIN_CS_DAG(l_chain); dap_chain_cs_dag_poa_pvt_t * l_poa_pvt = PVT ( DAP_CHAIN_CS_DAG_POA( l_dag ) ); -- GitLab