diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-10-18 04:58:20 +0200 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2012-12-10 00:36:41 +0100 |
commit | 15526ac69f14baef857c8bcf84f1f5790548e6dd (patch) | |
tree | 32b3666f6cde737849f85f82a0e7f8eebaa15da9 | |
parent | 9929991da7b843e7d80154fcacc4e80579b86a2d (diff) | |
download | ffmpeg-15526ac69f14baef857c8bcf84f1f5790548e6dd.tar.gz |
riff: retry reading metadata without padding if it fails with
Fixes Ticket1821
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit d0c27e88d2bb495d61bd32f41769f767a0c2a802)
-rw-r--r-- | libavformat/riff.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/libavformat/riff.c b/libavformat/riff.c index 1c3411220e..06e69c49be 100644 --- a/libavformat/riff.c +++ b/libavformat/riff.c @@ -771,8 +771,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); |