avformat/iff: check for possible overflow in 2nd argument of av_new_packet
authorPaul B Mahol <onemda@gmail.com>
Fri, 25 Sep 2015 19:21:24 +0000 (21:21 +0200)
committerPaul B Mahol <onemda@gmail.com>
Fri, 25 Sep 2015 19:25:08 +0000 (21:25 +0200)
Signed-off-by: Paul B Mahol <onemda@gmail.com>
libavformat/iff.c

index 8ea3b38..5973cde 100644 (file)
@@ -721,11 +721,15 @@ static int iff_read_packet(AVFormatContext *s,
         if (st->codec->codec_tag == ID_DSD || st->codec->codec_tag == ID_MAUD) {
             ret = av_get_packet(pb, pkt, FFMIN(iff->body_end - pos, 1024 * st->codec->block_align));
         } else {
+            if (iff->body_size > INT_MAX)
+                return AVERROR_INVALIDDATA;
             ret = av_get_packet(pb, pkt, iff->body_size);
         }
     } else if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
         uint8_t *buf;
 
+        if (iff->body_size > INT_MAX - 2)
+            return AVERROR_INVALIDDATA;
         if (av_new_packet(pkt, iff->body_size + 2) < 0) {
             return AVERROR(ENOMEM);
         }