diff --git a/modules/service/stake_lock/dap_chain_net_srv_stake_lock.c b/modules/service/stake_lock/dap_chain_net_srv_stake_lock.c index 94348508531782a6ed09c88e5324953d6c260e34..c2ac258af9e84d522f163bcd7181f00f973e768b 100644 --- a/modules/service/stake_lock/dap_chain_net_srv_stake_lock.c +++ b/modules/service/stake_lock/dap_chain_net_srv_stake_lock.c @@ -314,6 +314,22 @@ static enum error_code s_cli_hold(int a_argc, char **a_argv, int a_arg_index, da || NULL == l_time_staking_str) return TIME_ERROR; + if (dap_strlen(l_time_staking_str) != 6) + return TIME_ERROR; + + char *l_time_staking_day_str = dap_strdup_printf("%c%c", l_time_staking_str[4], l_time_staking_str[5]); + int l_time_staking_day = atoi(l_time_staking_day_str); + char *l_time_staking_month_str = dap_strdup_printf("%c%c", l_time_staking_str[2], l_time_staking_str[3]); + int l_time_staking_month = atoi(l_time_staking_month_str); + DAP_DELETE(l_time_staking_day_str); + DAP_DELETE(l_time_staking_month_str); + if (l_time_staking_month < 1 || l_time_staking_month > 12) + return TIME_ERROR; + + if (l_time_staking_day < 1 || l_time_staking_day > 31) + return TIME_ERROR; + + l_time_staking = dap_time_from_str_simplified(l_time_staking_str); if (0 == l_time_staking) return TIME_ERROR;