From 0180b37554a916573be934507afd09e381fa5e78 Mon Sep 17 00:00:00 2001
From: Roman Khlopkov <roman.khlopkov@demlabs.net>
Date: Fri, 10 Sep 2021 07:50:25 +0300
Subject: [PATCH] [*] A little bugfixes

---
 modules/channel/chain/dap_stream_ch_chain.c  | 6 ++++--
 modules/common/dap_chain_datum_tx_items.c    | 6 +-----
 modules/global-db/dap_chain_global_db_hist.c | 6 +++---
 modules/net/dap_chain_net.c                  | 2 +-
 modules/net/dap_chain_node_cli_cmd.c         | 2 +-
 5 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c
index 830f391af1..96fecb6129 100644
--- a/modules/channel/chain/dap_stream_ch_chain.c
+++ b/modules/channel/chain/dap_stream_ch_chain.c
@@ -574,7 +574,7 @@ static void s_gdb_in_pkt_error_worker_callback(dap_worker_t *a_worker, void *a_a
     dap_stream_ch_t *l_ch = dap_stream_ch_find_by_uuid_unsafe(DAP_STREAM_WORKER(a_worker), l_sync_request->ch_uuid);
     if( l_ch == NULL ){
         log_it(L_INFO,"Client disconnected before we sent the reply");
-        s_sync_request_delete(l_sync_request);
+        DAP_DELETE(l_sync_request);
         return;
     }
 
@@ -653,8 +653,10 @@ static bool s_gdb_in_pkt_proc_callback(dap_proc_thread_t *a_thread, void *a_arg)
             }
             // save data to global_db
             if(!dap_chain_global_db_obj_save(l_obj, 1)) {
+                struct sync_request *l_sync_req_err = DAP_NEW_Z(struct sync_request);
+                memcpy(l_sync_req_err, l_sync_request, sizeof(struct sync_request));
                 dap_proc_thread_worker_exec_callback(a_thread, l_sync_request->worker->id,
-                                                     s_gdb_in_pkt_error_worker_callback, l_sync_request);
+                                                  s_gdb_in_pkt_error_worker_callback, l_sync_req_err);
             } else {
                 if (s_debug_more)
                     log_it(L_DEBUG, "Added new GLOBAL_DB synchronization record");
diff --git a/modules/common/dap_chain_datum_tx_items.c b/modules/common/dap_chain_datum_tx_items.c
index 57556863a5..96f0ae56df 100644
--- a/modules/common/dap_chain_datum_tx_items.c
+++ b/modules/common/dap_chain_datum_tx_items.c
@@ -152,14 +152,10 @@ dap_chain_tx_token_t* dap_chain_datum_tx_item_token_create(dap_chain_hash_fast_t
 {
     if(!a_ticker)
         return NULL;
-    size_t a_ticker_len = strlen(a_ticker);
     dap_chain_tx_token_t *l_item = DAP_NEW_Z(dap_chain_tx_token_t);
     l_item->header.type = TX_ITEM_TYPE_TOKEN;
     memcpy (& l_item->header.token_emission_hash, a_datum_token_hash, sizeof ( *a_datum_token_hash ) );
-    if(a_ticker_len >= sizeof(l_item->header.ticker))
-        a_ticker_len = sizeof(l_item->header.ticker) - 1;
-    strncpy(l_item->header.ticker, a_ticker, a_ticker_len);
-
+    strncpy(l_item->header.ticker, a_ticker, sizeof(l_item->header.ticker) - 1);
     return l_item;
 }
 
diff --git a/modules/global-db/dap_chain_global_db_hist.c b/modules/global-db/dap_chain_global_db_hist.c
index c68958a5fb..2fea00e1c0 100644
--- a/modules/global-db/dap_chain_global_db_hist.c
+++ b/modules/global-db/dap_chain_global_db_hist.c
@@ -158,7 +158,7 @@ static void *s_list_thread_proc(void *arg)
             l_obj_type = 'd';
             size_t l_del_name_len = strlen(l_group_cur->name) - 4; //strlen(".del");
             l_del_group_name_replace = DAP_NEW_SIZE(char, l_del_name_len + 1);
-            strncpy(l_del_group_name_replace, l_group_cur->name, l_del_name_len);
+            memcpy(l_del_group_name_replace, l_group_cur->name, l_del_name_len);
             l_del_group_name_replace[l_del_name_len] = '\0';
         } else {
             l_obj_type = 'a';
@@ -192,8 +192,6 @@ static void *s_list_thread_proc(void *arg)
                 if (!l_dap_db_log_list->is_process)
                     break;
             }
-            if (l_del_group_name_replace)
-                DAP_DELETE(l_del_group_name_replace);
             dap_store_obj_free(l_objs, l_item_count);
             pthread_mutex_lock(&l_dap_db_log_list->list_mutex);
             // add l_list to list_write
@@ -203,6 +201,8 @@ static void *s_list_thread_proc(void *arg)
                 l_dap_db_log_list->list_read = l_list;
             pthread_mutex_unlock(&l_dap_db_log_list->list_mutex);
         }
+        if (l_del_group_name_replace)
+            DAP_DELETE(l_del_group_name_replace);
     }
 
     pthread_mutex_lock(&l_dap_db_log_list->list_mutex);
diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index 1d26565b6d..3e8f226f55 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -296,7 +296,7 @@ int dap_chain_net_state_go_to(dap_chain_net_t * a_net, dap_chain_net_state_t a_n
     pthread_mutex_lock( &PVT(a_net)->state_mutex_cond); // Preventing call of state_go_to before wait cond will be armed
     // set flag for sync
     PVT(a_net)->flags |= F_DAP_CHAIN_NET_GO_SYNC;
-    //PVT(a_net)->flags |= F_DAP_CHAIN_NET_SYNC_FROM_ZERO;
+    PVT(a_net)->flags |= F_DAP_CHAIN_NET_SYNC_FROM_ZERO;
 #ifndef _WIN32
     pthread_cond_signal( &PVT(a_net)->state_proc_cond );
 #else
diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c
index e7da6ab2f7..bdb5a2e59d 100644
--- a/modules/net/dap_chain_node_cli_cmd.c
+++ b/modules/net/dap_chain_node_cli_cmd.c
@@ -3250,7 +3250,7 @@ int com_token_emit(int a_argc, char ** a_argv, void *a_arg_func, char ** a_str_r
                 sizeof(l_emission->data.type_auth.signs_count);
 
         l_emission = DAP_NEW_Z_SIZE(dap_chain_datum_token_emission_t, l_emission_size);
-        strncpy(l_emission->hdr.ticker, l_ticker, sizeof(l_emission->hdr.ticker));
+        strncpy(l_emission->hdr.ticker, l_ticker, sizeof(l_emission->hdr.ticker) - 1);
         l_emission->hdr.value = l_emission_value;
         l_emission->hdr.type = DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_AUTH;
         memcpy(&l_emission->hdr.address, l_addr, sizeof(l_emission->hdr.address));
-- 
GitLab