From a2bea0df0e4a9d242b2d577d407e1a9d504ec02e Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 29 Mar 2013 20:58:42 +0100 Subject: [PATCH] aacps: correct opdipd code to match spec This fixes out of array reads Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer (cherry picked from commit 66e9716a36105f69b9f076b0fec3ec2551c7e3b7) Signed-off-by: Michael Niedermayer --- libavcodec/aacps.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavcodec/aacps.c b/libavcodec/aacps.c index b82001e967..9abc296cc7 100644 --- a/libavcodec/aacps.c +++ b/libavcodec/aacps.c @@ -823,7 +823,8 @@ static void stereo_processing(PSContext *ps, float (*l)[32][2], float (*r)[32][2 h12 = H_LUT[iid_mapped[e][b] + 7 + 23 * ps->iid_quant][icc_mapped[e][b]][1]; h21 = H_LUT[iid_mapped[e][b] + 7 + 23 * ps->iid_quant][icc_mapped[e][b]][2]; h22 = H_LUT[iid_mapped[e][b] + 7 + 23 * ps->iid_quant][icc_mapped[e][b]][3]; - if (!PS_BASELINE && ps->enable_ipdopd && b < ps->nr_ipdopd_par) { + + if (!PS_BASELINE && ps->enable_ipdopd && 2*b <= NR_PAR_BANDS[is34]) { //The spec say says to only run this smoother when enable_ipdopd //is set but the reference decoder appears to run it constantly float h11i, h12i, h21i, h22i;