Skip to content

Commit

Permalink
fixes a use-of-uninitialized-value in light_pcapng.c (#1669)
Browse files Browse the repository at this point in the history
  • Loading branch information
Shivam7-1 authored Jan 3, 2025
1 parent 4a38f9a commit 7898a5d
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions 3rdParty/LightPcapNg/LightPcapNg/src/light_pcapng.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,12 +90,12 @@ void parse_by_block_type(struct _light_pcapng *current, const uint32_t *local_da
switch (current->block_type)
{
case LIGHT_SECTION_HEADER_BLOCK:
{
{ // PCPP patch
DPRINT_HERE(LIGHT_SECTION_HEADER_BLOCK);
struct _light_section_header *shb = calloc(1, sizeof(struct _light_section_header));
struct _light_option *opt = NULL;
uint32_t version;
int32_t local_offset;
uint32_t version = 0;
int32_t local_offset = 0;

shb->byteorder_magic = *local_data++;
// TODO check byte order.
Expand All @@ -108,30 +108,34 @@ void parse_by_block_type(struct _light_pcapng *current, const uint32_t *local_da
current->block_body = (uint32_t*)shb;
local_offset = (size_t)local_data - (size_t)block_start;
opt = __parse_options((uint32_t **)&local_data, current->block_total_length - local_offset - sizeof(current->block_total_length));
if (opt == NULL)
opt = calloc(1, sizeof(struct _light_option));
current->options = opt;
}
break;

case LIGHT_INTERFACE_BLOCK:
{
{ // PCPP patch
DPRINT_HERE(LIGHT_INTERFACE_BLOCK);
struct _light_interface_description_block *idb = calloc(1, sizeof(struct _light_interface_description_block));
struct _light_option *opt = NULL;
uint32_t link_reserved = *local_data++;
int32_t local_offset;
int32_t local_offset = 0;

idb->link_type = link_reserved & 0xFFFF;
idb->reserved = (link_reserved >> 16) & 0xFFFF;
idb->snapshot_length = *local_data++;
current->block_body = (uint32_t*)idb;
local_offset = (size_t)local_data - (size_t)block_start;
opt = __parse_options((uint32_t **)&local_data, current->block_total_length - local_offset - sizeof(current->block_total_length));
if (opt == NULL)
opt = calloc(1, sizeof(struct _light_option));
current->options = opt;
}
break;

case LIGHT_ENHANCED_PACKET_BLOCK:
{
{ // PCPP Patch
DPRINT_HERE(LIGHT_ENHANCED_PACKET_BLOCK);
struct _light_enhanced_packet_block *epb = NULL;
struct _light_option *opt = NULL;
Expand All @@ -157,6 +161,8 @@ void parse_by_block_type(struct _light_pcapng *current, const uint32_t *local_da
current->block_body = (uint32_t*)epb;
local_offset = (size_t)local_data - (size_t)block_start;
opt = __parse_options((uint32_t **)&local_data, current->block_total_length - local_offset - sizeof(current->block_total_length));
if (opt == NULL)
opt = calloc(1, sizeof(struct _light_option));
current->options = opt;
}
break;
Expand Down Expand Up @@ -200,6 +206,8 @@ void parse_by_block_type(struct _light_pcapng *current, const uint32_t *local_da
current->block_body = (uint32_t*)cnb;
local_offset = (size_t)local_data - (size_t)block_start;
opt = __parse_options((uint32_t **)&local_data, current->block_total_length - local_offset - sizeof(current->block_total_length));
if (opt == NULL)
opt = calloc(1, sizeof(struct _light_option));
current->options = opt;
}
break;
Expand Down

0 comments on commit 7898a5d

Please sign in to comment.