webrtc/modules/audio_coding/codecs
Sam Zackrisson 184da528a7 Fix ASAN bug in iSAC codec
There is a value missing in an array, causing indexing to sometimes be off by one.
The result is never used anyway, so the "solution" is to insert an extra zero at the end.

Details:

In an old refactoring CL, the corresponding array in the floating point version of iSAC is declared with 578 elements, the fixed point version has 577.
See WebRtcIsac_kQKltCodeLenShape:
https://webrtc-codereview.appspot.com/548004/patch/10002/11005
Perhaps the entire array was not carried over to fixed point.

However, the floating point version does not actually have 578 elements in its definition, it has 568. The remaining 10 elements are initialized to 0. So there is no value to use from there, and using a zero instead will mimic the behavior of the floating point code.


Use of the value:
WebRtcIsacfix_kCodeLenShapeQ11 is only accessed in one place [0].
The value sumQQ is set to is only used to compute the BitsQQ,
which is only used to populate the sizeQ11 param of EstCodeLpcCoef,
which is never used anywhere. Not within EstCodeLpcCoef, not within the calling function WebRtcIsacfix_EncodeLpc [1], not in the calling function's calling function [2]. Then it falls out of scope.

[0] https://cs.chromium.org/chromium/src/third_party/webrtc/modules/audio_coding/codecs/isac/fix/source/entropy_coding.c?l=1223&rcl=3c4fda2ed8140a330634c0a2704a3cf0311a89de
[1] https://cs.chromium.org/chromium/src/third_party/webrtc/modules/audio_coding/codecs/isac/fix/source/entropy_coding.c?l=1468&rcl=3c4fda2ed8140a330634c0a2704a3cf0311a89de
[2] https://cs.chromium.org/chromium/src/third_party/webrtc/modules/audio_coding/codecs/isac/fix/source/encode.c?l=214&rcl=3c4fda2ed8140a330634c0a2704a3cf0311a89de

Tested: Instructions in linked bug. No longer repro after applying this CL.
Bug: webrtc:10584
Change-Id: I87a90e8cf58d82f615217e05ea401d3259887769
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161942
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30065}
2019-12-11 15:59:14 +00:00
..
cng Add ability to disable detailed error message in RTC_CHECKs 2019-11-28 17:51:00 +00:00
g711 Format almost everything. 2019-07-08 13:45:15 +00:00
g722 Format almost everything. 2019-07-08 13:45:15 +00:00
ilbc Guard against clang-format wrong behavior. 2019-07-16 12:18:32 +00:00
isac Fix ASAN bug in iSAC codec 2019-12-11 15:59:14 +00:00
opus Adding GetInDtx to WebRTC Opus Interface. 2019-11-19 14:14:06 +00:00
pcm16b Format almost everything. 2019-07-08 13:45:15 +00:00
red Add ability to disable detailed error message in RTC_CHECKs 2019-11-28 17:51:00 +00:00
tools Add RTC_ prefix to non-standard format specifier macro "PRIdNS" 2019-08-07 13:36:05 +00:00
audio_decoder.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
audio_encoder.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
builtin_audio_decoder_factory_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
builtin_audio_encoder_factory_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
legacy_encoded_audio_frame.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
legacy_encoded_audio_frame.h Format almost everything. 2019-07-08 13:45:15 +00:00
legacy_encoded_audio_frame_unittest.cc Stop using Googletest legacy APIs. 2019-01-31 13:23:33 +00:00