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}
This commit is contained in:

committed by
Commit Bot

parent
75bc75ccef
commit
184da528a7
@ -1015,7 +1015,7 @@ const int16_t WebRtcIsacfix_kCodeLenGainQ11[392] = {
|
|||||||
, 30720, 30720
|
, 30720, 30720
|
||||||
};
|
};
|
||||||
|
|
||||||
const int16_t WebRtcIsacfix_kCodeLenShapeQ11[577] = {
|
const int16_t WebRtcIsacfix_kCodeLenShapeQ11[578] = {
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 28672
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 28672
|
||||||
, 0, 26624, 1, 23773, 22819, 4, 20982, 18598, 10, 19282
|
, 0, 26624, 1, 23773, 22819, 4, 20982, 18598, 10, 19282
|
||||||
, 16587, 22, 16442, 26624, 13126, 60, 14245, 26624, 26624, 12736
|
, 16587, 22, 16442, 26624, 13126, 60, 14245, 26624, 26624, 12736
|
||||||
@ -1073,7 +1073,8 @@ const int16_t WebRtcIsacfix_kCodeLenShapeQ11[577] = {
|
|||||||
, 16983, 16431, 16162, 15021, 15178, 13751, 12142, 10895, 10193, 9632
|
, 16983, 16431, 16162, 15021, 15178, 13751, 12142, 10895, 10193, 9632
|
||||||
, 9086, 8896, 8823, 8735, 8591, 8754, 8649, 8361, 8329, 8522
|
, 9086, 8896, 8823, 8735, 8591, 8754, 8649, 8361, 8329, 8522
|
||||||
, 8373, 8739, 8993, 9657, 10454, 11279, 11899, 12614, 14024, 14273
|
, 8373, 8739, 8993, 9657, 10454, 11279, 11899, 12614, 14024, 14273
|
||||||
, 15477, 15240, 16649, 17866, 18697, 21151, 22099
|
, 15477, 15240, 16649, 17866, 18697, 21151, 22099, 0
|
||||||
|
// The final 0 was added due to http://bugs.webrtc.org/10584.
|
||||||
};
|
};
|
||||||
|
|
||||||
/* left KLT transforms */
|
/* left KLT transforms */
|
||||||
|
@ -77,7 +77,7 @@ extern const uint16_t* WebRtcIsacfix_kCdfShapePtr[KLT_NUM_MODELS][108];
|
|||||||
/* code length for all coefficients using different models */
|
/* code length for all coefficients using different models */
|
||||||
extern const int16_t WebRtcIsacfix_kCodeLenGainQ11[392];
|
extern const int16_t WebRtcIsacfix_kCodeLenGainQ11[392];
|
||||||
|
|
||||||
extern const int16_t WebRtcIsacfix_kCodeLenShapeQ11[577];
|
extern const int16_t WebRtcIsacfix_kCodeLenShapeQ11[578];
|
||||||
|
|
||||||
/* left KLT transforms */
|
/* left KLT transforms */
|
||||||
extern const int16_t WebRtcIsacfix_kT1GainQ15[KLT_NUM_MODELS][4];
|
extern const int16_t WebRtcIsacfix_kT1GainQ15[KLT_NUM_MODELS][4];
|
||||||
|
Reference in New Issue
Block a user