Browse Source

mpc8: check output buffer size before decoding

(cherry picked from commit 5674d4b0a3)

Signed-off-by: Anton Khirnov <anton@khirnov.net>
tags/n0.8.11
Justin Ruggles Reinhard Tartler 14 years ago
parent
commit
fc0e151cdc
1 changed files with 8 additions and 2 deletions
  1. +8
    -2
      libavcodec/mpc8.c

+ 8
- 2
libavcodec/mpc8.c View File

@@ -241,10 +241,16 @@ static int mpc8_decode_frame(AVCodecContext * avctx,
GetBitContext gb2, *gb = &gb2;
int i, j, k, ch, cnt, res, t;
Band *bands = c->bands;
int off;
int off, out_size;
int maxband, keyframe;
int last[2];

out_size = MPC_FRAME_SIZE * 2 * avctx->channels;
if (*data_size < out_size) {
av_log(avctx, AV_LOG_ERROR, "Output buffer is too small\n");
return AVERROR(EINVAL);
}

keyframe = c->cur_frame == 0;

if(keyframe){
@@ -400,7 +406,7 @@ static int mpc8_decode_frame(AVCodecContext * avctx,
c->last_bits_used = get_bits_count(gb);
if(c->cur_frame >= c->frames)
c->cur_frame = 0;
*data_size = MPC_FRAME_SIZE * 2 * avctx->channels;
*data_size = out_size;

return c->cur_frame ? c->last_bits_used >> 3 : buf_size;
}


Loading…
Cancel
Save