Commit 8a521d57 authored by Michael Niedermayer's avatar Michael Niedermayer

indeo3dec: Fix end pointer.

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 7e496e15
...@@ -840,13 +840,13 @@ static int decode_plane(Indeo3DecodeContext *ctx, AVCodecContext *avctx, ...@@ -840,13 +840,13 @@ static int decode_plane(Indeo3DecodeContext *ctx, AVCodecContext *avctx,
/* each plane data starts with mc_vector_count field, */ /* each plane data starts with mc_vector_count field, */
/* an optional array of motion vectors followed by the vq data */ /* an optional array of motion vectors followed by the vq data */
num_vectors = bytestream_get_le32(&data); num_vectors = bytestream_get_le32(&data); data_size -= 4;
if (num_vectors > 256) { if (num_vectors > 256) {
av_log(ctx->avctx, AV_LOG_ERROR, av_log(ctx->avctx, AV_LOG_ERROR,
"Read invalid number of motion vectors %d\n", num_vectors); "Read invalid number of motion vectors %d\n", num_vectors);
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
} }
if (num_vectors * 2 >= data_size) if (num_vectors * 2 > data_size)
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
ctx->num_vectors = num_vectors; ctx->num_vectors = num_vectors;
...@@ -857,7 +857,7 @@ static int decode_plane(Indeo3DecodeContext *ctx, AVCodecContext *avctx, ...@@ -857,7 +857,7 @@ static int decode_plane(Indeo3DecodeContext *ctx, AVCodecContext *avctx,
ctx->skip_bits = 0; ctx->skip_bits = 0;
ctx->need_resync = 0; ctx->need_resync = 0;
ctx->last_byte = data + data_size - 1; ctx->last_byte = data + data_size;
/* initialize the 1st cell and set its dimensions to whole plane */ /* initialize the 1st cell and set its dimensions to whole plane */
curr_cell.xpos = curr_cell.ypos = 0; curr_cell.xpos = curr_cell.ypos = 0;
...@@ -894,6 +894,7 @@ static int decode_frame_headers(Indeo3DecodeContext *ctx, AVCodecContext *avctx, ...@@ -894,6 +894,7 @@ static int decode_frame_headers(Indeo3DecodeContext *ctx, AVCodecContext *avctx,
/* parse the bitstream header */ /* parse the bitstream header */
bs_hdr = buf_ptr; bs_hdr = buf_ptr;
buf_size -= 16;
if (bytestream_get_le16(&buf_ptr) != 32) { if (bytestream_get_le16(&buf_ptr) != 32) {
av_log(avctx, AV_LOG_ERROR, "Unsupported codec version!\n"); av_log(avctx, AV_LOG_ERROR, "Unsupported codec version!\n");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment