From 083a606de091e3ee7d0de3d185407f6515ca7353 Mon Sep 17 00:00:00 2001 From: Ahmed Alian Date: Mon, 16 Feb 2026 14:09:58 +0200 Subject: [PATCH] fix: Add syntax check for SCTE 20 marker bit This adds a validation check for the SCTE 20 marker bit in es_userdata.c. If the bit is 0, a debug warning is logged. This prevents potential parsing issues with corrupt streams. --- docs/CHANGES.TXT | 1 + src/lib_ccx/es_userdata.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/CHANGES.TXT b/docs/CHANGES.TXT index 7e28661a4..fa30f219c 100644 --- a/docs/CHANGES.TXT +++ b/docs/CHANGES.TXT @@ -12,6 +12,7 @@ - Fix: Delete empty output files instead of leaving 0-byte files (#1282) - Fix: --mkvlang now supports BCP 47 language tags (e.g., en-US, zh-Hans-CN) and multiple codes - Fix: segmentation fault when using --multiprogram +- Fix: Add syntax check for SCTE 20 marker bit to prevent incorrect parsing of corrupt streams 0.96.5 (2026-01-05) ------------------- diff --git a/src/lib_ccx/es_userdata.c b/src/lib_ccx/es_userdata.c index 87e1cfcef..bc2102f96 100644 --- a/src/lib_ccx/es_userdata.c +++ b/src/lib_ccx/es_userdata.c @@ -161,7 +161,10 @@ int user_data(struct encoder_ctx *enc_ctx, struct lib_cc_decode *dec_ctx, struct skip_bits(ustream, 5); // line_offset - unused cc_data1 = (unsigned int)read_bits(ustream, 8); cc_data2 = (unsigned int)read_bits(ustream, 8); - read_bits(ustream, 1); // TODO: Add syntax check */ + if (read_bits(ustream, 1) == 0) + { + dbg_print(CCX_DMT_VERBOSE, "SCTE 20: Marker bit is 0 (should be 1)\n"); + } if (ustream->bitsleft < 0) fatal(CCX_COMMON_EXIT_BUG_BUG, "In user_data: ustream->bitsleft < 0. Cannot continue.");