From 923ba12ae9d0d4e0e149eb971555b480d28ba281 Mon Sep 17 00:00:00 2001 From: LuChiChick <1084116302@qq.com> Date: Thu, 23 Apr 2026 10:58:12 +0800 Subject: [PATCH] Fixed the issue of incorrect DLT message parsing when payload length is 0 && Fixed potential wild pointers and improper memory free. --- Src/DLT_Utilities.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Src/DLT_Utilities.cpp b/Src/DLT_Utilities.cpp index fd38b3e..52ac622 100644 --- a/Src/DLT_Utilities.cpp +++ b/Src/DLT_Utilities.cpp @@ -35,7 +35,8 @@ void DLT_Log::clear(void) { DLT_Type::DLT_Msg_Node *p_target = this->Msg_List_Head; this->Msg_List_Head = this->Msg_List_Head->p_next; - free(p_target->Msg.payload_buffer); + if (p_target->Msg.payload_buffer != nullptr) + free(p_target->Msg.payload_buffer); free(p_target); } @@ -191,6 +192,12 @@ DLT_Type::DLT_Err DLT_Log::dlt_file_read_payload(FILE *p_file, DLT_Type::DLT_Msg if (Msg == nullptr) return DLT_Type::DLT_ERROR_NULL_POINTER; + if (Msg->payload_length == 0) + { + Msg->payload_buffer = nullptr; + return DLT_Type::DLT_ERROR_NONE; + } + // 读取Payload Msg->payload_buffer = (uint8_t *)malloc(Msg->payload_length); this->mem_use += Msg->payload_length; @@ -225,7 +232,7 @@ DLT_Type::DLT_Err DLT_Log::load_from_file(const char *file_name_str) DLT_Type::DLT_Err err = DLT_Type::DLT_ERROR_NONE; while (1) { - DLT_Type::DLT_Msg Msg; + DLT_Type::DLT_Msg Msg = {0}; err = dlt_file_read_header(p_file, &Msg); if (err != DLT_Type::DLT_ERROR_NONE)