From c6850d38625b731cdf9186f79bc38417736a7572 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Thu, 18 Oct 2012 04:58:20 +0200 Subject: [PATCH] riff: retry reading metadata without padding if it fails with Fixes Ticket1821 Reviewed-by: Paul B Mahol Signed-off-by: Michael Niedermayer (cherry picked from commit d0c27e88d2bb495d61bd32f41769f767a0c2a802) --- libavformat/riff.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libavformat/riff.c b/libavformat/riff.c index c787ec3060..0e63472c86 100644 --- a/libavformat/riff.c +++ b/libavformat/riff.c @@ -735,8 +735,13 @@ int ff_read_riff_info(AVFormatContext *s, int64_t size) chunk_code = avio_rl32(pb); chunk_size = avio_rl32(pb); if (chunk_size > end || end - chunk_size < cur || chunk_size == UINT_MAX) { - av_log(s, AV_LOG_ERROR, "too big INFO subchunk\n"); - return AVERROR_INVALIDDATA; + avio_seek(pb, -9, SEEK_CUR); + chunk_code = avio_rl32(pb); + chunk_size = avio_rl32(pb); + if (chunk_size > end || end - chunk_size < cur || chunk_size == UINT_MAX) { + av_log(s, AV_LOG_ERROR, "too big INFO subchunk\n"); + return AVERROR_INVALIDDATA; + } } chunk_size += (chunk_size & 1);