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

Side by Side Diff: webrtc/modules/audio_processing/aec/aec_core.c

Issue 1338993003: Added boundary check for array access as a short-term way of fixing the bug of out-of-bounds reads … (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Moved boundary check and removed the extra spaces Created 5 years, 3 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 802 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 for (i = 0; i < kHistorySizeBlocks; i++) { 813 for (i = 0; i < kHistorySizeBlocks; i++) {
814 l1_norm += abs(i - median) * self->delay_histogram[i]; 814 l1_norm += abs(i - median) * self->delay_histogram[i];
815 } 815 }
816 self->delay_std = (int)((l1_norm + self->num_delay_values / 2) / 816 self->delay_std = (int)((l1_norm + self->num_delay_values / 2) /
817 self->num_delay_values) * kMsPerBlock; 817 self->num_delay_values) * kMsPerBlock;
818 818
819 // Determine fraction of delays that are out of bounds, that is, either 819 // Determine fraction of delays that are out of bounds, that is, either
820 // negative (anti-causal system) or larger than the AEC filter length. 820 // negative (anti-causal system) or larger than the AEC filter length.
821 { 821 {
822 int num_delays_out_of_bounds = self->num_delay_values; 822 int num_delays_out_of_bounds = self->num_delay_values;
823 for (i = lookahead; i < lookahead + self->num_partitions; ++i) { 823 const int histogram_length = sizeof(self->delay_histogram) /
824 num_delays_out_of_bounds -= self->delay_histogram[i]; 824 sizeof(self->delay_histogram[0]);
825 for (i = lookahead;
826 ((i < lookahead + self->num_partitions) && (i < histogram_length));
hlundin-webrtc 2015/09/14 07:34:48 You don't need the outer parentheses, and I don't
peah-webrtc 2015/09/14 07:56:07 Acknowledged.
827 ++i) {
828 num_delays_out_of_bounds -= self->delay_histogram[i];
825 } 829 }
826 self->fraction_poor_delays = (float)num_delays_out_of_bounds / 830 self->fraction_poor_delays = (float)num_delays_out_of_bounds /
827 self->num_delay_values; 831 self->num_delay_values;
828 } 832 }
829 833
830 // Reset histogram. 834 // Reset histogram.
831 memset(self->delay_histogram, 0, sizeof(self->delay_histogram)); 835 memset(self->delay_histogram, 0, sizeof(self->delay_histogram));
832 self->num_delay_values = 0; 836 self->num_delay_values = 0;
833 837
834 return; 838 return;
(...skipping 1082 matching lines...) Expand 10 before | Expand all | Expand 10 after
1917 int WebRtcAec_extended_filter_enabled(AecCore* self) { 1921 int WebRtcAec_extended_filter_enabled(AecCore* self) {
1918 return self->extended_filter_enabled; 1922 return self->extended_filter_enabled;
1919 } 1923 }
1920 1924
1921 int WebRtcAec_system_delay(AecCore* self) { return self->system_delay; } 1925 int WebRtcAec_system_delay(AecCore* self) { return self->system_delay; }
1922 1926
1923 void WebRtcAec_SetSystemDelay(AecCore* self, int delay) { 1927 void WebRtcAec_SetSystemDelay(AecCore* self, int delay) {
1924 assert(delay >= 0); 1928 assert(delay >= 0);
1925 self->system_delay = delay; 1929 self->system_delay = delay;
1926 } 1930 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698