mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/g729_parser: Check channels
Fixes: signed integer overflow: 10 * 808464428 cannot be represented in type 'int' Fixes: assertion failure Fixes: ticket9651 Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
ec8ff659f5
commit
757da974b2
|
@ -48,6 +48,9 @@ static int g729_parse(AVCodecParserContext *s1, AVCodecContext *avctx,
|
||||||
s->block_size = (avctx->bit_rate < 8000) ? G729D_6K4_BLOCK_SIZE : G729_8K_BLOCK_SIZE;
|
s->block_size = (avctx->bit_rate < 8000) ? G729D_6K4_BLOCK_SIZE : G729_8K_BLOCK_SIZE;
|
||||||
if (avctx->codec_id == AV_CODEC_ID_ACELP_KELVIN)
|
if (avctx->codec_id == AV_CODEC_ID_ACELP_KELVIN)
|
||||||
s->block_size++;
|
s->block_size++;
|
||||||
|
// channels > 2 is invalid, we pass the packet on unchanged
|
||||||
|
if (avctx->channels > 2)
|
||||||
|
s->block_size = 0;
|
||||||
s->block_size *= avctx->channels;
|
s->block_size *= avctx->channels;
|
||||||
s->duration = avctx->frame_size;
|
s->duration = avctx->frame_size;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue