Browse Source

vqavideo: return error if image size is not a multiple of block size

The decoder assumes in various places that the image size
is a multiple of the block size, and there is no obvious
way to support odd sizes.  Bailing out early if the header
specifies a bad size avoids various errors later on.

Fixes CVE-2012-0947.

Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 58b2e0f0f2)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
(cherry picked from commit d5207e2af8)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
tags/n0.7.13
Mans Rullgard Reinhard Tartler 14 years ago
parent
commit
c71c77e56f
1 changed files with 6 additions and 0 deletions
  1. +6
    -0
      libavcodec/vqavideo.c

+ 6
- 0
libavcodec/vqavideo.c View File

@@ -155,6 +155,12 @@ static av_cold int vqa_decode_init(AVCodecContext *avctx)
return -1;
}

if (s->width & (s->vector_width - 1) ||
s->height & (s->vector_height - 1)) {
av_log(avctx, AV_LOG_ERROR, "Image size not multiple of block size\n");
return AVERROR_INVALIDDATA;
}

/* allocate codebooks */
s->codebook_size = MAX_CODEBOOK_SIZE;
s->codebook = av_malloc(s->codebook_size);


Loading…
Cancel
Save