From 5f9238a34af6936879a8a05cbe14ca9c8b08d669 Mon Sep 17 00:00:00 2001
From: "roman.khlopkov" <roman.khlopkov@demlabs.net>
Date: Tue, 13 Aug 2024 11:03:06 +0300
Subject: [PATCH] [*] Validator segfaults fix

---
 dap-sdk                                                      | 2 +-
 modules/net/dap_chain_net.c                                  | 4 ++++
 modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c | 4 ++--
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/dap-sdk b/dap-sdk
index ee3f92f794..0d12538f93 160000
--- a/dap-sdk
+++ b/dap-sdk
@@ -1 +1 @@
-Subproject commit ee3f92f794bd9d2ec426d0022430a23aa11de696
+Subproject commit 0d12538f93d71775dbcece9c65a2fdb65702b595
diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index 9643e24a94..268a2b416f 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -2480,6 +2480,10 @@ static void s_ch_in_pkt_callback(dap_stream_ch_t *a_ch, uint8_t a_type, const vo
                                              DAP_CHAIN_CH_ERROR_INCORRECT_SYNC_SEQUENCE);
             return;
         }
+        if (!l_net_pvt->sync_context.cur_chain) {
+            assert(false);  // Strange bug here, stop and investigate it
+            return;
+        }
         dap_chain_atom_iter_t *l_iter = l_net_pvt->sync_context.cur_chain->callback_atom_iter_create(
                                                                             l_net_pvt->sync_context.cur_chain,
                                                                             l_net_pvt->sync_context.cur_cell
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 1b3329981a..9f8277375d 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
@@ -502,11 +502,11 @@ dap_list_t *dap_chain_net_srv_stake_get_validators(dap_chain_net_id_t a_net_id,
             l_ret = dap_list_append(l_ret, l_data);
         }
         if (!l_stake->is_active && a_excluded_list) {
-            *a_excluded_list[l_arr_idx++] = l_list_idx;
+            (*a_excluded_list)[l_arr_idx++] = l_list_idx;
             if (l_arr_idx == l_arr_size) {
                 l_arr_size += l_arr_resize_step;
                 void *l_new_arr = DAP_REALLOC(*a_excluded_list, l_arr_size * sizeof(uint16_t));
-                if (l_new_arr)
+                if (!l_new_arr)
                     goto fail_ret;
                 else
                     *a_excluded_list = l_new_arr;
-- 
GitLab