Fixed the issue of incorrect DLT message parsing when payload length is 0 && Fixed potential wild pointers and improper memory free.
This commit is contained in:
parent
ce6f9646c4
commit
923ba12ae9
@ -35,6 +35,7 @@ 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;
|
||||
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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user