Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1361)

Unified Diff: webrtc/common_audio/signal_processing/cross_correlation.c

Issue 1908623002: Avoiding overflow in cross correlation in NetEq. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: on comments Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/common_audio/signal_processing/cross_correlation.c
diff --git a/webrtc/common_audio/signal_processing/cross_correlation.c b/webrtc/common_audio/signal_processing/cross_correlation.c
index d7c9f2b9afede2a0a86d20bf33c082626de2eade..82a42c71b76225ae041c12aa4947190c1a7bdc58 100644
--- a/webrtc/common_audio/signal_processing/cross_correlation.c
+++ b/webrtc/common_audio/signal_processing/cross_correlation.c
@@ -10,6 +10,8 @@
#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
+#include <assert.h>
+
/* C version of WebRtcSpl_CrossCorrelation() for generic platforms. */
void WebRtcSpl_CrossCorrelationC(int32_t* cross_correlation,
const int16_t* seq1,
@@ -22,8 +24,12 @@ void WebRtcSpl_CrossCorrelationC(int32_t* cross_correlation,
for (i = 0; i < dim_cross_correlation; i++) {
int32_t corr = 0;
- for (j = 0; j < dim_seq; j++)
- corr += (seq1[j] * seq2[j]) >> right_shifts;
+ for (j = 0; j < dim_seq; j++) {
+ int32_t old = corr;
+ int32_t add = seq1[j] * seq2[j];
+ corr += add >> right_shifts;
+ assert((add >= 0 && corr >= old) || (add < 0 && corr < old));
+ }
seq2 += step_seq2;
*cross_correlation++ = corr;
}
« no previous file with comments | « no previous file | webrtc/modules/audio_coding/neteq/expand.h » ('j') | webrtc/modules/audio_coding/neteq/expand.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698