From a48e1b6bc3d26dfc70748f05112617e8fddb32fa Mon Sep 17 00:00:00 2001 From: ivoc Date: Thu, 9 Feb 2017 03:05:59 -0800 Subject: [PATCH] Fix for left shift of potentially negative value. Left shifting of negative integers is undefined behavior, and should be prevented. This CL fixes one such instance in the Levinson Durbin function. BUG=chromium:681377 Review-Url: https://codereview.webrtc.org/2680973005 Cr-Commit-Position: refs/heads/master@{#16507} --- webrtc/common_audio/signal_processing/levinson_durbin.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webrtc/common_audio/signal_processing/levinson_durbin.c b/webrtc/common_audio/signal_processing/levinson_durbin.c index 61f3721977..c8e58ba455 100644 --- a/webrtc/common_audio/signal_processing/levinson_durbin.c +++ b/webrtc/common_audio/signal_processing/levinson_durbin.c @@ -75,7 +75,7 @@ int16_t WebRtcSpl_LevinsonDurbin(const int32_t* R, int16_t* A, int16_t* K, // Alpha = R[0] * (1-K^2) - temp1W32 = ((K_hi * K_low >> 14) + K_hi * K_hi) << 1; // = k^2 in Q31 + temp1W32 = ((K_hi * K_low >> 14) + K_hi * K_hi) * 2; // = k^2 in Q31 temp1W32 = WEBRTC_SPL_ABS_W32(temp1W32); // Guard against <0 temp1W32 = (int32_t)0x7fffffffL - temp1W32; // temp1W32 = (1 - K[0]*K[0]) in Q31