From 83a95f748f8e65f66ddd5e1ac02f1ae0cf115ca6 Mon Sep 17 00:00:00 2001 From: Mirko Bonadei Date: Tue, 29 Aug 2023 14:21:54 +0200 Subject: [PATCH] Avoid integer overflow detected by the compiler. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Trying to calculate std::abs(min_int) results in an int overflow. Original author: asmok@. Bug: None Change-Id: I984e9ba4f48411a583a55cc3f9c66c9a1cc8dc92 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/318120 Reviewed-by: Per Ã…hgren Commit-Queue: Mirko Bonadei Cr-Commit-Position: refs/heads/main@{#40660} --- common_audio/signal_processing/min_max_operations.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/common_audio/signal_processing/min_max_operations.c b/common_audio/signal_processing/min_max_operations.c index 1b9542e7ef..6acf88287b 100644 --- a/common_audio/signal_processing/min_max_operations.c +++ b/common_audio/signal_processing/min_max_operations.c @@ -25,6 +25,7 @@ */ #include +#include #include "rtc_base/checks.h" #include "common_audio/signal_processing/include/signal_processing_library.h" @@ -67,7 +68,8 @@ int32_t WebRtcSpl_MaxAbsValueW32C(const int32_t* vector, size_t length) { RTC_DCHECK_GT(length, 0); for (i = 0; i < length; i++) { - absolute = abs((int)vector[i]); + absolute = + (vector[i] != INT_MIN) ? abs((int)vector[i]) : INT_MAX + (uint32_t)1; if (absolute > maximum) { maximum = absolute; }