From 266cf258cc9377fa46acf78dfcb354b4cb12ef6f Mon Sep 17 00:00:00 2001 From: Andreas Cadhalpun Date: Sun, 30 Oct 2016 21:41:11 +0100 Subject: [PATCH] interplayacm: validate number of channels The number of channels is used as divisor in decode_frame, so it must not be zero to avoid SIGFPE crashes. Reviewed-by: Paul B Mahol Signed-off-by: Andreas Cadhalpun (cherry picked from commit 5540d6c1343e6d1e06d6601b7d35884761711e3e) Signed-off-by: Andreas Cadhalpun --- libavcodec/interplayacm.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libavcodec/interplayacm.c b/libavcodec/interplayacm.c index 0486e00b1e..032053103a 100644 --- a/libavcodec/interplayacm.c +++ b/libavcodec/interplayacm.c @@ -62,6 +62,11 @@ static av_cold int decode_init(AVCodecContext *avctx) if (avctx->extradata_size < 14) return AVERROR_INVALIDDATA; + if (avctx->channels <= 0) { + av_log(avctx, AV_LOG_ERROR, "Invalid number of channels: %d\n", avctx->channels); + return AVERROR_INVALIDDATA; + } + s->level = AV_RL16(avctx->extradata + 12) & 0xf; s->rows = AV_RL16(avctx->extradata + 12) >> 4; s->cols = 1 << s->level;