From 3e0c78bac63c213649c3e8c2fa49e9f3c9848d5a Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 27 Sep 2013 22:53:24 +0200 Subject: avcodec/imc: Check flcoeffs5 Fixes infinite loop Fixes Ticket2996 Signed-off-by: Michael Niedermayer --- libavcodec/imc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libavcodec/imc.c b/libavcodec/imc.c index f4469c4964..a72a6dfed1 100644 --- a/libavcodec/imc.c +++ b/libavcodec/imc.c @@ -451,8 +451,13 @@ static int bit_allocation(IMCContext *q, IMCChannel *chctx, for (i = 0; i < BANDS; i++) highest = FFMAX(highest, chctx->flcoeffs1[i]); - for (i = 0; i < BANDS - 1; i++) + for (i = 0; i < BANDS - 1; i++) { + if (chctx->flcoeffs5[i] <= 0) { + av_log(NULL, AV_LOG_ERROR, "flcoeffs5 %f invalid\n", chctx->flcoeffs5[i]); + return AVERROR_INVALIDDATA; + } chctx->flcoeffs4[i] = chctx->flcoeffs3[i] - log2f(chctx->flcoeffs5[i]); + } chctx->flcoeffs4[BANDS - 1] = limit; highest = highest * 0.25; -- cgit v1.2.3