From e60a10a2028eb4e9fd65d23a7cd70c779189a73a Mon Sep 17 00:00:00 2001
From: "alexey.stratulat" <alexey.stratulat@demlabs.net>
Date: Thu, 6 Apr 2023 13:27:54 +0000
Subject: [PATCH] Bugfix 8451

---
 .../stake_lock/dap_chain_net_srv_stake_lock.c    | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

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 9434850853..c2ac258af9 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;
-- 
GitLab