From 3c370f5abc55739a261534b9f9bdc739cedbbbb9 Mon Sep 17 00:00:00 2001 From: Justin Ruggles <justin.ruggles@gmail.com> Date: Sun, 25 Nov 2012 12:38:58 -0500 Subject: [PATCH] riff: only warn on a bad INFO chunk code size instead of failing fixes Bug 392 --- libavformat/riff.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libavformat/riff.c b/libavformat/riff.c index 11e2a6438f0..731309201a1 100644 --- a/libavformat/riff.c +++ b/libavformat/riff.c @@ -726,9 +726,10 @@ 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; + av_log(s, AV_LOG_WARNING, "too big INFO subchunk\n"); + break; } chunk_size += (chunk_size & 1); @@ -743,8 +744,8 @@ int ff_read_riff_info(AVFormatContext *s, int64_t size) if (avio_read(pb, value, chunk_size) != chunk_size) { av_free(value); - av_log(s, AV_LOG_ERROR, "premature end of file while reading INFO tag\n"); - return AVERROR_INVALIDDATA; + av_log(s, AV_LOG_WARNING, "premature end of file while reading INFO tag\n"); + break; } value[chunk_size] = 0; -- GitLab