CCExtractor / CCExtractor/ccextractor
[BUG] Memory leak in free_sub_track(): blockaddition and message buffer never freed for WebVTT tracks
- 主要语言
- C
- 星标
- 903
- 派生
- 589
- 平均合并
- 3 天 2 小时
- 30 天内合并 PR
- 10
描述
## Description
In `src/lib_ccx/matroska.c`, the function `free_sub_track()`
iterates over all sentences and frees `sentence->text` and
the sentence itself, but never frees `sentence->blockaddition`
or the backing `message` buffer that was allocated in
`parse_segment_cluster_block_group_block_additions()`.
## Affected Code
`src/lib_ccx/matroska.c` — function `free_sub_track()`
## Root Cause
In `parse_segment_cluster_block_group_block_additions()`,
a `message` buffer is allocated via `read_bytes_signed()`
and a `block_addition` struct is allocated via `calloc()`.
The fields `cue_settings_list`, `cue_identifier`, and
`comment` are pointers into that `message` buffer.
In `free_sub_track()`, neither the `block_addition` struct
nor the `message` buffer are ever freed, causing a memory
leak on every WebVTT subtitle that contains BlockAdditions.
## Steps to Reproduce
Process any `.mkv` file containing WebVTT subtitle tracks
with BlockAdditions (cue settings, identifiers, or comments).
Run with a memory checker such as Valgrind — leaks will be
reported for every such subtitle block.
## Expected Behavior
All allocated memory should be freed when a subtitle track
is released.
## Fix
Free `sentence->blockaddition->cue_settings_list` (the
backing message buffer) and `sentence->blockaddition`
inside the loop in `free_sub_track()`.
贡献指南
评估
这个 Issue 还没有评估数据。