diff --git a/docs/CHANGES.TXT b/docs/CHANGES.TXT index ebe2a4fc7..2dd1a8f5d 100644 --- a/docs/CHANGES.TXT +++ b/docs/CHANGES.TXT @@ -20,6 +20,8 @@ - Fix: Correct progress time display for multi-program Transport Streams - 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 - Fix: Segmentation fault when using --multiprogram - Fix: Dangling pointers in decoder context copy causing potential crashes on cleanup - Fix: 16 MB memory leak per file in Rust/C FFI demuxer layer 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.");