avcodec/eatgv: use av_reallocp_array() and check return value
authorPaul B Mahol <onemda@gmail.com>
Mon, 9 Sep 2013 12:23:56 +0000 (12:23 +0000)
committerPaul B Mahol <onemda@gmail.com>
Mon, 9 Sep 2013 12:26:05 +0000 (12:26 +0000)
Fixes #2949.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
libavcodec/eatgv.c

index 54074b3..deda86e 100644 (file)
@@ -169,12 +169,18 @@ static int tgv_decode_inter(TgvContext *s, AVFrame *frame,
 
     /* allocate codebook buffers as necessary */
     if (num_mvs > s->num_mvs) {
-        s->mv_codebook = av_realloc(s->mv_codebook, num_mvs*2*sizeof(int));
+        if (av_reallocp_array(&s->mv_codebook, num_mvs, sizeof(*s->mv_codebook))) {
+            s->num_mvs = 0;
+            return AVERROR(ENOMEM);
+        }
         s->num_mvs = num_mvs;
     }
 
     if (num_blocks_packed > s->num_blocks_packed) {
-        s->block_codebook = av_realloc(s->block_codebook, num_blocks_packed*16);
+        if (av_reallocp_array(&s->block_codebook, num_blocks_packed, sizeof(*s->block_codebook))) {
+            s->num_blocks_packed = 0;
+            return AVERROR(ENOMEM);
+        }
         s->num_blocks_packed = num_blocks_packed;
     }