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