diff --git a/dap-sdk b/dap-sdk index f2e28810dca3e5cf9575a28109e860bd19fda2be..dbe2fe1f5893776de3cb67ac2eb05e4885fe4332 160000 --- a/dap-sdk +++ b/dap-sdk @@ -1 +1 @@ -Subproject commit f2e28810dca3e5cf9575a28109e860bd19fda2be +Subproject commit dbe2fe1f5893776de3cb67ac2eb05e4885fe4332 diff --git a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c index da0faa4edcb4e6ecf8c4b3ce6bb26ce8d47c4009..cb3b4820924ea9c01b96bfbb508fc244daf20042 100644 --- a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c +++ b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c @@ -1326,6 +1326,10 @@ static int s_cli_srv_stake_order(int a_argc, char **a_argv, int a_arg_index, voi dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't load cert %s", l_cert_str); return -8; } + if (!l_cert->enc_key || !l_cert->enc_key->priv_key_data || !l_cert->enc_key->priv_key_data_size) { + dap_cli_server_cmd_set_reply_text(a_str_reply, "Certificate \"%s\" has no private key", l_cert_str); + return -20; + } // Create the order & put it in GDB char *l_order_hash_str = s_fee_order_create(l_net, &l_value, l_cert->enc_key, a_hash_out_type); if (l_order_hash_str) { @@ -1383,6 +1387,10 @@ static int s_cli_srv_stake_order(int a_argc, char **a_argv, int a_arg_index, voi dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't load cert %s", l_cert_str); return -8; } + if (!l_cert->enc_key || !l_cert->enc_key->priv_key_data || !l_cert->enc_key->priv_key_data_size) { + dap_cli_server_cmd_set_reply_text(a_str_reply, "Certificate \"%s\" has no private key", l_cert_str); + return -20; + } dap_chain_addr_t l_signing_addr; dap_chain_addr_fill_from_key(&l_signing_addr, l_cert->enc_key, l_net->pub.id); dap_chain_node_addr_t l_node_addr = g_node_addr; @@ -1498,6 +1506,10 @@ static int s_cli_srv_stake_order(int a_argc, char **a_argv, int a_arg_index, voi DAP_DELETE(l_tx_hash_str); return -8; } + if (!l_cert->enc_key || !l_cert->enc_key->priv_key_data || !l_cert->enc_key->priv_key_data_size) { + dap_cli_server_cmd_set_reply_text(a_str_reply, "Certificate \"%s\" has no private key", l_cert_str); + return -20; + } DAP_DEL_Z(l_default_cert_str); char *l_order_hash_str = s_staker_order_create(l_net, l_value, &l_tx_hash, l_cert->enc_key, a_hash_out_type); if (!l_order_hash_str) {