diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2021-05-05 00:48:05 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-05-05 00:48:05 +0000 |
commit | 826719dee47c93b1e895ddcd4d89e97feee5520e (patch) | |
tree | 238f457a4e04cad87c5b5287e4c6a54555052433 /libSBRdec/src/sbrdec_freq_sca.cpp | |
parent | 2a3cde815736135991bd0e077489ae35b51f14a9 (diff) | |
parent | 27c3a2bd1cc08b0096813474410c667468077d6e (diff) | |
download | fdk-aac-826719dee47c93b1e895ddcd4d89e97feee5520e.tar.gz fdk-aac-826719dee47c93b1e895ddcd4d89e97feee5520e.tar.bz2 fdk-aac-826719dee47c93b1e895ddcd4d89e97feee5520e.zip |
Merge changes I42956a9f,I92f7c559,I5af62590 into sc-dev
* changes:
Check the number of available escapes in rvlcDecodeBackward() to avoid out-of-bounds access.
Sbr syncstate may only be set to upsampling if the sbr decoder was sucessfully initialized.
Perform parameter check before parameter assignment to avoid incorrect initialization in resetFreqBandTables().
Diffstat (limited to 'libSBRdec/src/sbrdec_freq_sca.cpp')
-rw-r--r-- | libSBRdec/src/sbrdec_freq_sca.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/libSBRdec/src/sbrdec_freq_sca.cpp b/libSBRdec/src/sbrdec_freq_sca.cpp index e187656..daa3554 100644 --- a/libSBRdec/src/sbrdec_freq_sca.cpp +++ b/libSBRdec/src/sbrdec_freq_sca.cpp @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------------- Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright 1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright 1995 - 2021 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. All rights reserved. 1. INTRODUCTION @@ -765,9 +765,6 @@ resetFreqBandTables(HANDLE_SBR_HEADER_DATA hHeaderData, const UINT flags) { sbrdecUpdateLoRes(hFreq->freqBandTable[0], &nBandsLo, hFreq->freqBandTable[1], nBandsHi); - hFreq->nSfb[0] = nBandsLo; - hFreq->nSfb[1] = nBandsHi; - /* Check index to freqBandTable[0] */ if (!(nBandsLo > 0) || (nBandsLo > (((hHeaderData->numberOfAnalysisBands == 16) @@ -777,6 +774,9 @@ resetFreqBandTables(HANDLE_SBR_HEADER_DATA hHeaderData, const UINT flags) { return SBRDEC_UNSUPPORTED_CONFIG; } + hFreq->nSfb[0] = nBandsLo; + hFreq->nSfb[1] = nBandsHi; + lsb = hFreq->freqBandTable[0][0]; usb = hFreq->freqBandTable[0][nBandsLo]; @@ -814,15 +814,15 @@ resetFreqBandTables(HANDLE_SBR_HEADER_DATA hHeaderData, const UINT flags) { if (intTemp == 0) intTemp = 1; + if (intTemp > MAX_NOISE_COEFFS) { + return SBRDEC_UNSUPPORTED_CONFIG; + } + hFreq->nNfb = intTemp; } hFreq->nInvfBands = hFreq->nNfb; - if (hFreq->nNfb > MAX_NOISE_COEFFS) { - return SBRDEC_UNSUPPORTED_CONFIG; - } - /* Get noise bands */ sbrdecDownSampleLoRes(hFreq->freqBandTableNoise, hFreq->nNfb, hFreq->freqBandTable[0], nBandsLo); |