From 2152ae1a5ef0511e0b38a981745eb910f2af9bca Mon Sep 17 00:00:00 2001
From: Fraunhofer IIS FDK <audio-fdk@iis.fraunhofer.de>
Date: Fri, 20 Sep 2019 14:03:40 +0200
Subject: Suppress integer overflow in lsf_weight_2st() by using 64 bit
 multiplication with explicit 32 bit integer result.

Bug: 131430997
Test: atest DecoderTestXheAac ; atest DecoderTestAacDrc
Change-Id: I82ce4858688e90abee0c44c4ada34a9a7b08342f
---
 libAACdec/src/usacdec_lpc.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

(limited to 'libAACdec/src')

diff --git a/libAACdec/src/usacdec_lpc.cpp b/libAACdec/src/usacdec_lpc.cpp
index d726798..88601b7 100644
--- a/libAACdec/src/usacdec_lpc.cpp
+++ b/libAACdec/src/usacdec_lpc.cpp
@@ -565,7 +565,8 @@ static void lsf_weight_2st(FIXP_LPC *lsfq, FIXP_DBL *xq, int nk_mode) {
   /* add non-weighted residual LSF vector to LSF1st */
   for (i = 0; i < M_LP_FILTER_ORDER; i++) {
     w = (LONG)fMultDiv2(factor, sqrtFixp(fMult(d[i], d[i + 1])));
-    lsfq[i] = fAddSaturate(lsfq[i], FX_DBL2FX_LPC((FIXP_DBL)(w * (LONG)xq[i])));
+    lsfq[i] = fAddSaturate(lsfq[i],
+                           FX_DBL2FX_LPC((FIXP_DBL)((INT64)w * (LONG)xq[i])));
   }
 
   return;
-- 
cgit v1.2.3