Browse Source

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>
tags/n1.1
Michael Niedermayer 13 years ago
parent
commit
d0c27e88d2
1 changed files with 7 additions and 2 deletions
  1. +7
    -2
      libavformat/riff.c

+ 7
- 2
libavformat/riff.c View File

@@ -771,8 +771,13 @@ int ff_read_riff_info(AVFormatContext *s, int64_t size)
chunk_code = avio_rl32(pb); chunk_code = avio_rl32(pb);
chunk_size = avio_rl32(pb); chunk_size = avio_rl32(pb);
if (chunk_size > end || end - chunk_size < cur || chunk_size == UINT_MAX) { 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); chunk_size += (chunk_size & 1);


Loading…
Cancel
Save