From 41d1851616ab440ab883d4067eb33acb70b8ee07 Mon Sep 17 00:00:00 2001
From: "Dmitriy A. Gerasimov" <dmitriy.gerasimov@demlabs.net>
Date: Sat, 28 Nov 2020 14:50:49 +0700
Subject: [PATCH] [*] Check for null unpacked data

---
 CMakeLists.txt                              |  2 +-
 modules/channel/chain/dap_stream_ch_chain.c | 16 ++++++++++++----
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1773cbe222..f6e662eb8c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,7 @@ project(cellframe-sdk C)
 cmake_minimum_required(VERSION 2.8)
 
 set(CMAKE_C_STANDARD 11)
-set(CELLFRAME_SDK_NATIVE_VERSION "2.6-64")
+set(CELLFRAME_SDK_NATIVE_VERSION "2.6-65")
 add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"")
 
 set(DAPSDK_MODULES "")
diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c
index 14f8cc211c..dafe084527 100644
--- a/modules/channel/chain/dap_stream_ch_chain.c
+++ b/modules/channel/chain/dap_stream_ch_chain.c
@@ -352,8 +352,14 @@ bool s_gdb_pkt_callback(dap_proc_thread_t *a_thread, void *a_arg)
         size_t l_data_obj_count = 0;
         // deserialize data & Parse data from dap_db_log_pack()
         dap_store_obj_t *l_store_obj = dap_db_log_unpack(l_pkt_copy->pkt_data, l_pkt_copy->pkt_data_size, &l_data_obj_count);
-        if (s_debug_chain_sync)
-            log_it(L_INFO, "In: l_data_obj_count = %d", l_data_obj_count );
+        if (s_debug_chain_sync){
+            if (l_data_obj_count)
+                log_it(L_INFO, "In: l_data_obj_count = %d", l_data_obj_count );
+            else if (l_pkt_copy->pkt_data)
+                log_it(L_WARNING, "In: No data objs after unpack", l_data_obj_count );
+            else
+                 log_it(L_WARNING, "In: packet in list with NULL data");
+        }
 
         for(size_t i = 0; i < l_data_obj_count; i++) {
             // timestamp for exist obj
@@ -439,8 +445,10 @@ bool s_gdb_pkt_callback(dap_proc_thread_t *a_thread, void *a_arg)
         }
         if(l_store_obj)
             dap_store_obj_free(l_store_obj, l_data_obj_count);
-        DAP_DELETE(l_pkt_copy);
-        DAP_DELETE(l_pkt_copy_list);
+        if (l_pkt_copy)
+            DAP_DELETE(l_pkt_copy);
+        if (l_pkt_copy_list)
+            DAP_DELETE(l_pkt_copy_list);
     } else {
         log_it(L_WARNING, "In proc thread got GDB stream ch packet with zero data");
     }
-- 
GitLab