New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 747202 link

Starred by 1 user

Issue metadata

Status: Verified
Owner:
Closed: Jul 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug



Sign in to add a comment

Integer-overflow in webrtc::LowCutFilter::BiquadFilter::Process

Project Member Reported by ClusterFuzz, Jul 21 2017

Issue description

Detailed report: https://clusterfuzz.com/testcase?key=5967468140167168

Fuzzer: libFuzzer_audio_processing_fuzzer
Job Type: libfuzzer_chrome_ubsan
Platform Id: linux

Crash Type: Integer-overflow
Crash Address: 
Crash State:
  webrtc::LowCutFilter::BiquadFilter::Process
  webrtc::LowCutFilter::Process
  webrtc::AudioProcessingImpl::ProcessCaptureStreamLocked
  
Sanitizer: undefined (UBSAN)

Regressed: https://clusterfuzz.com/revisions?job=libfuzzer_chrome_ubsan&range=481133:481204

Reproducer Testcase: https://clusterfuzz.com/download?testcase_id=5967468140167168


Issue filed automatically.

See https://chromium.googlesource.com/chromium/src/+/master/testing/libfuzzer/reproducing.md for more information.
 
Cc: msrchandra@chromium.org
Components: Blink>WebRTC
Labels: M-61 Test-Predator-Wrong-CLs
Owner: aleloi@chromium.org
Status: Assigned (was: Untriaged)
Predator and CL did not provide any possible suspects.
Using Code Search for the file, "low_cut_filter.cc" assigning to concern owner.

Suspecting Commit#
https://chromium.googlesource.com/external/webrtc/trunk/webrtc.git/+/41561a3942b24d500ce8b7d1531eecc0873bed14

@aleloi -- Could you please look into the issue, kindly re-assign if this is not related to your changes.
Thank You.
Project Member

Comment 2 by bugdroid1@chromium.org, Jul 24 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/external/webrtc.git/+/e029d99f19dbb13c962d6fe4ceadf6f461aeaccf

commit e029d99f19dbb13c962d6fe4ceadf6f461aeaccf
Author: Alex Loiko <aleloi@webrtc.org>
Date: Mon Jul 24 11:03:46 2017

Integer overflow bug in low_cut_filter.

A multiplication result doesn't fit in an int32_t type. This change
rewrites the code to avoid the overflowing multiplication.

Here y[0], y[1] are int16 numbers containing the (truncated) topmost
18 and (scaled Q2 to use the full int16) the least significant 13
bits of a 32-bit value. The change makes y[1] to be calculated 
directly instead of using y[0] as an intermediate value. 

TESTED=this change passes the bit exactness tests, and has also been 
running on the audio_processing fuzzer with a CHECK comparing the
old and new value.

Bug:  chromium:747202 
Change-Id: Iafc69eb7391d494afdadf65f5b7f399a57bbe9a8
Reviewed-on: https://chromium-review.googlesource.com/580907
Reviewed-by: Minyue Li <minyue@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#19120}
[modify] https://crrev.com/e029d99f19dbb13c962d6fe4ceadf6f461aeaccf/webrtc/modules/audio_processing/low_cut_filter.cc

Comment 3 by aleloi@chromium.org, Jul 26 2017

Status: Fixed (was: Assigned)
Project Member

Comment 4 by ClusterFuzz, Aug 2 2017

Labels: Needs-Feedback
ClusterFuzz testcase 5967468140167168 is still reproducing on tip-of-tree build (trunk).

Please re-test your fix against this testcase and if the fix was incorrect or incomplete, please re-open the bug. Otherwise, ignore this notification and add ClusterFuzz-Wrong label.
Project Member

Comment 5 by ClusterFuzz, Aug 4 2017

ClusterFuzz has detected this issue as fixed in range 491697:491738.

Detailed report: https://clusterfuzz.com/testcase?key=5967468140167168

Fuzzer: libFuzzer_audio_processing_fuzzer
Job Type: libfuzzer_chrome_ubsan
Platform Id: linux

Crash Type: Integer-overflow
Crash Address: 
Crash State:
  webrtc::LowCutFilter::BiquadFilter::Process
  webrtc::LowCutFilter::Process
  webrtc::AudioProcessingImpl::ProcessCaptureStreamLocked
  
Sanitizer: undefined (UBSAN)

Regressed: https://clusterfuzz.com/revisions?job=libfuzzer_chrome_ubsan&range=481133:481204
Fixed: https://clusterfuzz.com/revisions?job=libfuzzer_chrome_ubsan&range=491697:491738

Reproducer Testcase: https://clusterfuzz.com/download?testcase_id=5967468140167168


See https://chromium.googlesource.com/chromium/src/+/master/testing/libfuzzer/reproducing.md for more information.

If you suspect that the result above is incorrect, try re-doing that job on the test case report page.
Project Member

Comment 6 by ClusterFuzz, Aug 4 2017

Labels: ClusterFuzz-Verified
Status: Verified (was: Fixed)
ClusterFuzz testcase 5967468140167168 is verified as fixed, so closing issue as verified.

If this is incorrect, please add ClusterFuzz-Wrong label and re-open the issue.
Labels: -Needs-Feedback

Sign in to add a comment