From cbdca14d284dc938a17813b9ddeb1418253d557a Mon Sep 17 00:00:00 2001 From: Navdeepkaur-11 Date: Sun, 15 Mar 2026 01:09:17 +0530 Subject: [PATCH 1/3] fix(general_loop): Add NULL checks for fopen() and alloc_demuxer_data() in process_hex() --- src/lib_ccx/general_loop.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/lib_ccx/general_loop.c b/src/lib_ccx/general_loop.c index ef9057e11..06cb11bb9 100644 --- a/src/lib_ccx/general_loop.c +++ b/src/lib_ccx/general_loop.c @@ -368,10 +368,19 @@ void process_hex(struct lib_ccx_ctx *ctx, char *filename) } /* const char *mpeg_header="00 00 01 b2 43 43 01 f8 "; // Always present */ FILE *fr = fopen(filename, "rt"); + if (!fr) + { + fatal(CCX_COMMON_EXIT_FILE_CREATION_FAILED, "In process_hex: Unable to open file %s for reading.", filename); + } unsigned char *bytes = NULL; unsigned byte_count = 0; int warning_shown = 0; struct demuxer_data *data = alloc_demuxer_data(); + if (!data) + { + fclose(fr); + fatal(EXIT_NOT_ENOUGH_MEMORY, "In process_hex: Out of memory allocating demuxer data."); + } while (fgets(line, max - 1, fr) != NULL) { char *c1, *c2 = NULL; // Positions for first and second colons From 53d30c344d948c46be90d5c54a30c3e037cb89e5 Mon Sep 17 00:00:00 2001 From: Navdeepkaur-11 Date: Sun, 15 Mar 2026 01:13:33 +0530 Subject: [PATCH 2/3] docs: update changelog for process_hex NULL checks fix --- docs/CHANGES.TXT | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/CHANGES.TXT b/docs/CHANGES.TXT index ad8c0995f..2d5f4030e 100644 --- a/docs/CHANGES.TXT +++ b/docs/CHANGES.TXT @@ -1,3 +1,4 @@ +- Fix(general_loop): Add NULL checks for fopen() and alloc_demuxer_data() return values in process_hex() 0.96.7 (unreleased) ------------------- - Fix: Prevent crash in Rust timing module when logging out-of-range PTS/FTS timestamps from malformed streams. From 1972d303f948b3a113e5cc30d99ab94a01c1858d Mon Sep 17 00:00:00 2001 From: Navdeepkaur-11 Date: Mon, 16 Mar 2026 21:31:39 +0530 Subject: [PATCH 3/3] fix: use EXIT_READ_ERROR for fopen failure and remove CHANGES.TXT entry --- docs/CHANGES.TXT | 1 - src/lib_ccx/general_loop.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/CHANGES.TXT b/docs/CHANGES.TXT index 2d5f4030e..ad8c0995f 100644 --- a/docs/CHANGES.TXT +++ b/docs/CHANGES.TXT @@ -1,4 +1,3 @@ -- Fix(general_loop): Add NULL checks for fopen() and alloc_demuxer_data() return values in process_hex() 0.96.7 (unreleased) ------------------- - Fix: Prevent crash in Rust timing module when logging out-of-range PTS/FTS timestamps from malformed streams. diff --git a/src/lib_ccx/general_loop.c b/src/lib_ccx/general_loop.c index 06cb11bb9..85b2e7cbc 100644 --- a/src/lib_ccx/general_loop.c +++ b/src/lib_ccx/general_loop.c @@ -370,7 +370,7 @@ void process_hex(struct lib_ccx_ctx *ctx, char *filename) FILE *fr = fopen(filename, "rt"); if (!fr) { - fatal(CCX_COMMON_EXIT_FILE_CREATION_FAILED, "In process_hex: Unable to open file %s for reading.", filename); + fatal(EXIT_READ_ERROR, "In process_hex: Unable to open file %s for reading.", filename); } unsigned char *bytes = NULL; unsigned byte_count = 0;