commit | c531af77c3e02332047fcaea2eccec945fdfbab5 | [log] [tgz] |
---|---|---|
author | Alex Loiko <aleloi@webrtc.org> | Tue Oct 24 10:41:48 2017 +0200 |
committer | Commit Bot <commit-bot@chromium.org> | Tue Oct 24 09:56:08 2017 +0000 |
tree | 4662441dca61350606a38ee8195eea93a99eb2f9 | |
parent | 330bf4076e2f3e97162b5dc0fe6ffe33cf8a2f2c [diff] |
Fix 'Left shift cannot be represented in int32_t'. In the legacy C part of AGC, an audio level 'cur_level' is represented as (1+frac) * 2^(31 - zeros) The 'zeros' exponent part is used for looking up a gain value in a table, and 'frac' is used for interpolating between two nearby table values. Code snippet below: zeros = WebRtcSpl_NormU32((uint32_t)cur_level); tmp32 = (cur_level << zeros) & 0x7FFFFFFF; frac = (int16_t)(tmp32 >> 19); In the second line, 'cur_level' is shifted upwards so that the leading bit is '1', after which the leading bit is cleared. The result is 'frac' in Q31. The compiler type of 'cur_level << zeros' is 'int32_t'. This is a fuzzer error 'Left shift cannot be represented in int32_t', because the leading sign bit is 1. This CL changes the compiler type to uint32_t. Bug: chromium:776286 Change-Id: Ie29552b75e690057bd76fc88e747841b531e3802 Reviewed-on: https://webrtc-review.googlesource.com/14841 Reviewed-by: Alessio Bazzica <alessiob@webrtc.org> Commit-Queue: Alex Loiko <aleloi@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20405}
WebRTC is a free, open software project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.
Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.
The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others.
See http://www.webrtc.org/native-code/development for instructions on how to get started developing with the native code.