| Index: webrtc/modules/audio_coding/codecs/isac/fix/source/pitch_filter.c
|
| diff --git a/webrtc/modules/audio_coding/codecs/isac/fix/source/pitch_filter.c b/webrtc/modules/audio_coding/codecs/isac/fix/source/pitch_filter.c
|
| index 65d099d36a9bf33c02dcaa58e9a27c4bde8e4449..13c3899c67e991769c038c890b2e8c8a2cf708ba 100644
|
| --- a/webrtc/modules/audio_coding/codecs/isac/fix/source/pitch_filter.c
|
| +++ b/webrtc/modules/audio_coding/codecs/isac/fix/source/pitch_filter.c
|
| @@ -109,6 +109,13 @@ void WebRtcIsacfix_PitchFilter(int16_t* indatQQ, // Q10 if type is 1 or 4,
|
| curGainQ12 += gaindeltaQ12;
|
| curLagQ7 += lagdeltaQ7;
|
| indW32 = CalcLrIntQ(curLagQ7, 7);
|
| + if (indW32 < PITCH_FRACORDER - 2) {
|
| + // WebRtcIsacfix_PitchFilterCore requires indW32 >= PITCH_FRACORDER -
|
| + // 2; otherwise, it will read from entries of ubufQQ that haven't been
|
| + // written yet. (This problem has only been seen in fuzzer tests, not
|
| + // in real life.) See Chromium bug 581901.
|
| + indW32 = PITCH_FRACORDER - 2;
|
| + }
|
| frcQQ = ((indW32 << 7) + 64 - curLagQ7) >> 4;
|
|
|
| if (frcQQ == PITCH_FRACS) {
|
|
|