From 80fd348bb7d9ee55c3100da87795f3a5bcbdfb32 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Thu, 14 Jan 2016 23:20:58 +0100 Subject: avformat/rmdec: Check size in ivr_read_packet() before use Fixes out of array access Fixes: asan_heap-oob_445b39_1741_d00eb645ab48eb2203b4a04a5b997103.ivr Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer --- libavformat/rmdec.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'libavformat') diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c index 4e46a3d6e6..ad919e87d1 100644 --- a/libavformat/rmdec.c +++ b/libavformat/rmdec.c @@ -1357,6 +1357,11 @@ static int ivr_read_packet(AVFormatContext *s, AVPacket *pkt) size = avio_rb32(pb); avio_skip(pb, 4); + if (size < 1 || size > INT_MAX/4) { + av_log(s, AV_LOG_ERROR, "size %d is invalid\n"); + return AVERROR_INVALIDDATA; + } + st = s->streams[index]; ret = ff_rm_parse_packet(s, pb, st, st->priv_data, size, pkt, &seq, 0, pts); -- cgit v1.2.3