This fix ensures that the loop stops early on EOF. The issue occurs because mov_read_infe() performs a version check and skips unsupported versions. The problem is that seeking within the stream clears the EOF flag, causing avio_feof() to not function as expected. This is resolved by moving the EOF check after reading the size and type after seek, ensuring the EOF flag is set when necessary.
Signed-off-by: Kacper Michajłow <kaspe...@gmail.com> --- libavformat/mov.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index 2c8be51063..9a388bf723 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -8868,12 +8868,12 @@ static int mov_read_iinf(MOVContext *c, AVIOContext *pb, MOVAtom atom) for (i = 0; i < entry_count; i++) { MOVAtom infe; + infe.size = avio_rb32(pb) - 8; + infe.type = avio_rl32(pb); if (avio_feof(pb)) { ret = AVERROR_INVALIDDATA; goto fail; } - infe.size = avio_rb32(pb) - 8; - infe.type = avio_rl32(pb); ret = mov_read_infe(c, pb, infe, i); if (ret < 0) goto fail; -- 2.45.1 _______________________________________________ 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".