diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index f7fbe15d6246b270f855e45e44cc41736d4b1fbc..977631d9189df51a330ba24ac7195f23c788c54b 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -2081,11 +2081,11 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; dap_string_free(l_string_ret, true); return dap_cli_server_cmd_set_reply_text(a_str_reply, "Wallet name option <-w> not defined"), -EINVAL; } - if( !l_pass_str && cmd_num != CMD_WALLET_NEW) { + if( cmd_num != CMD_WALLET_DEACTIVATE && !l_pass_str && cmd_num != CMD_WALLET_NEW) { dap_string_free(l_string_ret, true); return dap_cli_server_cmd_set_reply_text(a_str_reply, "Wallet password option <-password> not defined"), -EINVAL; } - if ( l_pass_str && DAP_WALLET$SZ_PASS < strnlen(l_pass_str, DAP_WALLET$SZ_PASS + 1) ) { + if ( cmd_num != CMD_WALLET_DEACTIVATE && l_pass_str && DAP_WALLET$SZ_PASS < strnlen(l_pass_str, DAP_WALLET$SZ_PASS + 1) ) { dap_cli_server_cmd_set_reply_text(a_str_reply, "Wallet's password is too long ( > %d)", DAP_WALLET$SZ_PASS); log_it(L_ERROR, "Wallet's password is too long ( > %d)", DAP_WALLET$SZ_PASS); dap_string_free(l_string_ret, true); @@ -2100,7 +2100,7 @@ int l_arg_index = 1, l_rc, cmd_num = CMD_NONE; l_rc = cmd_num == CMD_WALLET_ACTIVATE ? dap_chain_wallet_activate(l_wallet_name, strlen(l_wallet_name), l_pass_str, strlen(l_pass_str), l_rc) - : dap_chain_wallet_deactivate (l_wallet_name, strlen(l_wallet_name), l_pass_str, strlen(l_pass_str)); + : dap_chain_wallet_deactivate (l_wallet_name, strlen(l_wallet_name)); switch (l_rc) { case 0: diff --git a/modules/wallet/dap_chain_wallet.c b/modules/wallet/dap_chain_wallet.c index b6d6e01f8814d273b97fc3c2aac7e581450beb8f..9316c4eed5614ed5de8f780a68820bdc60a533cf 100644 --- a/modules/wallet/dap_chain_wallet.c +++ b/modules/wallet/dap_chain_wallet.c @@ -251,12 +251,7 @@ struct timespec l_now; * 0 - Success * <0 - <errno> */ -int dap_chain_wallet_deactivate ( - const char *a_name, - ssize_t a_name_len, - const char *a_pass, - ssize_t a_pass_len - ) +int dap_chain_wallet_deactivate (const char *a_name, ssize_t a_name_len) { int l_rc, l_rc2; dap_chain_wallet_n_pass_t *l_prec; @@ -271,16 +266,12 @@ dap_chain_wallet_n_pass_t *l_prec; HASH_FIND_STR(s_wallet_n_pass, a_name, l_prec); /* Check for existen record */ - if ( l_prec ) - { - if ( !l_prec->pass_len ) /* Password is zero - has been reset probably */ - l_rc = -EBUSY, log_it(L_WARNING, "The Wallet %.*s is not active", (int) a_name_len, a_name); - - else if ( (l_prec->pass_len != a_pass_len) /* Check that passwords is equivalent */ - || memcmp(l_prec->pass, a_pass, l_prec->pass_len) ) - l_rc = -EAGAIN, log_it(L_ERROR, "Wallet's password does not match"); - - else l_rc = 0, memset(l_prec->pass, l_prec->pass_len = 0, sizeof(l_prec->pass)); + if (!l_prec || !l_prec->pass_len) { /* Password is zero - has been reset probably */ + l_rc = -EBUSY; + log_it(L_WARNING, "The Wallet %.*s is not active", (int) a_name_len, a_name); + } else { + l_rc = 0; + memset(l_prec->pass, l_prec->pass_len = 0, sizeof(l_prec->pass)); } if ( (l_rc2 = pthread_rwlock_unlock(&s_wallet_n_pass_lock)) ) /* Release lock */ diff --git a/modules/wallet/include/dap_chain_wallet.h b/modules/wallet/include/dap_chain_wallet.h index 281bf63702f865a3d03562520feb93886b7795be..5dbb185789cf547b2d9c0f92546ee45c36cc900a 100644 --- a/modules/wallet/include/dap_chain_wallet.h +++ b/modules/wallet/include/dap_chain_wallet.h @@ -84,7 +84,7 @@ uint256_t dap_chain_wallet_get_balance(dap_chain_wallet_t *a_wallet, dap_chain_n int dap_chain_wallet_save_file( dap_chain_wallet_t * a_wallet); -int dap_chain_wallet_activate (const char *a_name, ssize_t a_name_len, const char *a_pass, ssize_t a_pass_len, unsigned a_ttl); -int dap_chain_wallet_deactivate (const char *a_name, ssize_t a_name_len, const char *a_pass, ssize_t a_pass_len); +int dap_chain_wallet_activate (const char *a_name, ssize_t a_name_len, const char *a_pass, ssize_t a_pass_len, unsigned a_ttl); +int dap_chain_wallet_deactivate (const char *a_name, ssize_t a_name_len); const char* dap_chain_wallet_check_sign(dap_chain_wallet_t *a_wallet); \ No newline at end of file