On 7/13/2025 3:10 AM, Michael Niedermayer wrote:
Fixes: Infinite loop
Fixes:
427538726/clusterfuzz-testcase-minimized-ffmpeg_dem_FLV_fuzzer-6582567304495104
Found-by: continuous fuzzing process
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc>
---
libavformat/flvdec.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index ac681954cb7..a4fa0157512 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -1715,6 +1715,9 @@ retry_duration:
av_log(s, AV_LOG_DEBUG, "Set channel data from MultiChannel info.\n");
+ if (avio_feof(s->pb))
+ return AVERROR_EOF;
+
goto next_track;
}
} else if (stream_type == FLV_STREAM_TYPE_VIDEO) {
I don't think just returning from here is correct.
The goto next_track right after it already checks for EOF.
I do not see how between here and the eof check there there'd be any way
to infinite loop.
It returns FFERROR_REDO there, which is important to drain queued up
packages.
The next time a call hits flv_read_packet will then immediately return
AVERROR_EOF, since it's one of the first things the function checks.
So just throwing in a random AVERROR_EOF there seems incorrect to me,
and is only hiding an actual issue elsewhere, if there is one.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".