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;