diff options
| author | Xin Li <delphij@google.com> | 2019-09-04 13:33:32 -0700 |
|---|---|---|
| committer | Xin Li <delphij@google.com> | 2019-09-04 13:33:32 -0700 |
| commit | a209adb315f970aa97044a82551a6f5617d61ded (patch) | |
| tree | fa62c4f58bc140ba5c0a27e2c913d3ea0a5bfe98 /libDRCdec/src/drcDec_reader.cpp | |
| parent | c2eb64586d6dfc0f067ea66631b38d1922a106ed (diff) | |
| parent | 62661035192a7f66b3722d8a1fd365391a35f292 (diff) | |
| download | fdk-aac-a209adb315f970aa97044a82551a6f5617d61ded.tar.gz fdk-aac-a209adb315f970aa97044a82551a6f5617d61ded.tar.bz2 fdk-aac-a209adb315f970aa97044a82551a6f5617d61ded.zip | |
DO NOT MERGE - Merge Android 10 into master
Bug: 139893257
Change-Id: I7e02014b30f1ae5d19dbb7126ebb2a69c411fe5c
Diffstat (limited to 'libDRCdec/src/drcDec_reader.cpp')
| -rw-r--r-- | libDRCdec/src/drcDec_reader.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/libDRCdec/src/drcDec_reader.cpp b/libDRCdec/src/drcDec_reader.cpp index 6fe7a04..a784457 100644 --- a/libDRCdec/src/drcDec_reader.cpp +++ b/libDRCdec/src/drcDec_reader.cpp @@ -185,10 +185,18 @@ drcDec_readUniDrc(HANDLE_FDK_BITSTREAM hBs, HANDLE_UNI_DRC_CONFIG hUniDrcConfig, uniDrcConfigPresent = FDKreadBits(hBs, 1); if (uniDrcConfigPresent) { err = drcDec_readUniDrcConfig(hBs, hUniDrcConfig); - if (err) return err; + if (err) { + /* clear config, if parsing error occured */ + FDKmemclear(hUniDrcConfig, sizeof(UNI_DRC_CONFIG)); + hUniDrcConfig->diff = 1; + } } err = drcDec_readLoudnessInfoSet(hBs, hLoudnessInfoSet); - if (err) return err; + if (err) { + /* clear config, if parsing error occured */ + FDKmemclear(hLoudnessInfoSet, sizeof(LOUDNESS_INFO_SET)); + hLoudnessInfoSet->diff = 1; + } } if (hUniDrcGain != NULL) { @@ -1130,7 +1138,7 @@ static DRC_ERROR _readDrcCoefficientsUniDrc(HANDLE_FDK_BITSTREAM hBs, drcCharacteristicLeftPresent = FDKreadBits(hBs, 1); if (drcCharacteristicLeftPresent) { pCoef->characteristicLeftCount = FDKreadBits(hBs, 4); - if ((pCoef->characteristicLeftCount + 1) > 8) return DE_MEMORY_ERROR; + if ((pCoef->characteristicLeftCount + 1) > 16) return DE_MEMORY_ERROR; for (i = 0; i < pCoef->characteristicLeftCount; i++) { err = _readCustomDrcCharacteristic( hBs, CS_LEFT, &(pCoef->characteristicLeftFormat[i + 1]), @@ -1141,7 +1149,7 @@ static DRC_ERROR _readDrcCoefficientsUniDrc(HANDLE_FDK_BITSTREAM hBs, drcCharacteristicRightPresent = FDKreadBits(hBs, 1); if (drcCharacteristicRightPresent) { pCoef->characteristicRightCount = FDKreadBits(hBs, 4); - if ((pCoef->characteristicRightCount + 1) > 8) return DE_MEMORY_ERROR; + if ((pCoef->characteristicRightCount + 1) > 16) return DE_MEMORY_ERROR; for (i = 0; i < pCoef->characteristicRightCount; i++) { err = _readCustomDrcCharacteristic( hBs, CS_RIGHT, &(pCoef->characteristicRightFormat[i + 1]), |
