From fe784a186d2ff9d29dde8e9fa0a91efb70612bd2 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] avformat/cafdec: fix negative index use in read_seek av_index_search_timestamp() returns a negative value when a seek target cannot be resolved from the stream index. Bail out before using that result as an index into sti->index_entries to avoid out-of-bounds reads. Fixes: Buffer underflow Fixes: DFVULN-608 *Vulnerability reported by Zhenpeng (Leo) Lin at depthfirst* *Patch validated by Zheng Yu at depthfirst* (cherry picked from commit 5408059eb7f2ff628ba25db7ff8714e707467c49) Signed-off-by: Michael Niedermayer --- libavformat/cafdec.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavformat/cafdec.c b/libavformat/cafdec.c index 70724a03c2..2198acaa7b 100644 --- a/libavformat/cafdec.c +++ b/libavformat/cafdec.c @@ -505,6 +505,8 @@ static int read_seek(AVFormatContext *s, int stream_index, frame_cnt = caf->frames_per_packet * packet_cnt; } else if (sti->nb_index_entries) { packet_cnt = av_index_search_timestamp(st, timestamp, flags); + if (packet_cnt < 0) + return -1; frame_cnt = sti->index_entries[packet_cnt].timestamp; pos = sti->index_entries[packet_cnt].pos; } else {