From 382bf008082678b6ff3514208a66c15ea4ce5328 Mon Sep 17 00:00:00 2001
From: "Constantin P." <papizh.konstantin@demlabs.net>
Date: Thu, 24 Oct 2024 11:49:48 +0000
Subject: [PATCH] Hotfix segv

---
 modules/consensus/esbocs/dap_chain_cs_esbocs.c | 7 ++++---
 modules/net/dap_chain_net.c                    | 5 ++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
index ef958f7506..f51e64e78b 100644
--- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c
+++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
@@ -2761,6 +2761,9 @@ static uint64_t s_get_precached_key_hash(dap_list_t **a_precached_keys_list, dap
         }
     }
     if (l_found) {
+        if (a_result)
+            *a_result = l_key->pkey_hash;
+        uint64_t l_freq = l_key->frequency;
         while (l_cur != *a_precached_keys_list) {
             struct precached_key* l_prev_key = (struct precached_key*)l_cur->prev->data;
             if (l_key->frequency > l_prev_key->frequency) {
@@ -2771,9 +2774,7 @@ static uint64_t s_get_precached_key_hash(dap_list_t **a_precached_keys_list, dap
             } else
                 break;
         }
-        if (a_result)
-            *a_result = l_key->pkey_hash;
-        return l_key->frequency;
+        return l_freq;
     }
     struct precached_key *l_key_new = DAP_NEW_Z_SIZE(struct precached_key,
                                                    sizeof(struct precached_key) + a_source_sign->header.sign_pkey_size);
diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index 79bac37b2c..e2939a9da6 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -553,8 +553,8 @@ int s_link_manager_fill_net_info(dap_link_t *a_link)
             break;
         }
     }
+    dap_chain_node_info_t *l_node_info = NULL;
     if (!l_host || !l_host[0] || !l_port) {
-            dap_chain_node_info_t *l_node_info = NULL;
         for (dap_chain_net_t *net = s_nets_by_name; net; net = net->hh.next) {
             if (( l_node_info = dap_chain_node_info_read(net, &a_link->addr) ))
                 break;
@@ -563,10 +563,9 @@ int s_link_manager_fill_net_info(dap_link_t *a_link)
             return -3;
         l_host = l_node_info->ext_host;
         l_port = l_node_info->ext_port;
-        DAP_DELETE(l_node_info);
     }
     a_link->uplink.ready = !dap_link_manager_link_update(&a_link->addr, l_host, l_port);
-    return 0;
+    return DAP_DELETE(l_node_info), 0;
 }
 
 json_object *s_net_sync_status(dap_chain_net_t *a_net)
-- 
GitLab