From 7e0fac3cbcbed301449f47740da79f56c427e379 Mon Sep 17 00:00:00 2001 From: "depthfirst-dev[bot]" <1012587+depthfirst-dev[bot]@users.noreply.github.com> Date: Thu, 23 Apr 2026 02:47:11 +0000 Subject: [PATCH] fftools/ffmpeg_opt: validate stream index in negative map handling Negative -map processing iterates previously parsed stream map entries and dereferences input_files[m->file_index]->ctx->streams[m->stream_index] without validating that stream_index is in range. A malformed earlier map can leave m->stream_index negative, which causes an out-of-bounds read when a later negative map walks existing entries. Check that stream_index is non-negative and below nb_streams before calling stream_specifier_match(). *Vulnerability reported by Zhenpeng (Leo) Lin at depthfirst* *Patch validated by Zheng Yu at depthfirst* Fixes: DFVULN-695 (cherry picked from commit 25a98586cc651bcf0419fcb2453b51ffa8f2fb86) Signed-off-by: Michael Niedermayer --- fftools/ffmpeg_opt.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index eccfe106a5..53a05eabe5 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -414,6 +414,8 @@ static int opt_map(void *optctx, const char *opt, const char *arg) for (i = 0; i < o->nb_stream_maps; i++) { m = &o->stream_maps[i]; if (file_idx == m->file_index && + m->stream_index >= 0 && + m->stream_index < input_files[m->file_index]->nb_streams && check_stream_specifier(input_files[m->file_index]->ctx, input_files[m->file_index]->ctx->streams[m->stream_index], *p == ':' ? p + 1 : p) > 0)