diff options
author | Martin Storsjo <martin@martin.st> | 2019-10-08 14:53:07 +0300 |
---|---|---|
committer | Martin Storsjo <martin@martin.st> | 2019-10-08 14:53:07 +0300 |
commit | e365f4f27802954f0cf65d3e2eac88b7fdebc83c (patch) | |
tree | d0ef656126c0ad2758164a0cf04136efccfe14c1 /libDRCdec/src/drcDec_reader.cpp | |
parent | d387d3b6ed79ff9a82c60440bdd86e6e5e324bec (diff) | |
parent | d929f68a05f5cbdd812dca287c8115a39439acf1 (diff) | |
download | fdk-aac-e365f4f27802954f0cf65d3e2eac88b7fdebc83c.tar.gz fdk-aac-e365f4f27802954f0cf65d3e2eac88b7fdebc83c.tar.bz2 fdk-aac-e365f4f27802954f0cf65d3e2eac88b7fdebc83c.zip |
Merge remote-tracking branch 'aosp/master'
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]), |