diff options
author | Fraunhofer IIS FDK <audio-fdk@iis.fraunhofer.de> | 2018-05-23 18:33:57 +0200 |
---|---|---|
committer | Jean-Michel Trivi <jmtrivi@google.com> | 2018-05-25 15:38:52 -0700 |
commit | f19e863cce96cc1e5f4ad7ce512810d5a2843ea6 (patch) | |
tree | 41c65cebd836ff3f949f1134512985e4a1288593 /libAACdec | |
parent | a4d1f0ad52e2cf6f168d2193216602f52033fc27 (diff) | |
download | fdk-aac-f19e863cce96cc1e5f4ad7ce512810d5a2843ea6.tar.gz fdk-aac-f19e863cce96cc1e5f4ad7ce512810d5a2843ea6.tar.bz2 fdk-aac-f19e863cce96cc1e5f4ad7ce512810d5a2843ea6.zip |
Fix unsigned integer overflow in aacDecoder_UpdateBitStreamCounters()
Bug: 80314771
Test: play AAC content over 2GB
Change-Id: If791305bf95680b945971f9dc5f58495cbf6c8cd
Diffstat (limited to 'libAACdec')
-rw-r--r-- | libAACdec/include/aacdecoder_lib.h | 18 | ||||
-rw-r--r-- | libAACdec/src/aacdecoder_lib.cpp | 4 |
2 files changed, 12 insertions, 10 deletions
diff --git a/libAACdec/include/aacdecoder_lib.h b/libAACdec/include/aacdecoder_lib.h index e811d04..3a9b910 100644 --- a/libAACdec/include/aacdecoder_lib.h +++ b/libAACdec/include/aacdecoder_lib.h @@ -861,14 +861,16 @@ typedef struct { returns AAC_DEC_TRANSPORT_SYNC_ERROR. It will be < 0 if the estimation failed. */ - UINT numTotalBytes; /*!< This is the number of total bytes that have passed - through the decoder. */ - UINT numBadBytes; /*!< This is the number of total bytes that were considered - with errors from numTotalBytes. */ - UINT numTotalAccessUnits; /*!< This is the number of total access units that - have passed through the decoder. */ - UINT numBadAccessUnits; /*!< This is the number of total access units that - were considered with errors from numTotalBytes. */ + INT64 numTotalBytes; /*!< This is the number of total bytes that have passed + through the decoder. */ + INT64 + numBadBytes; /*!< This is the number of total bytes that were considered + with errors from numTotalBytes. */ + INT64 + numTotalAccessUnits; /*!< This is the number of total access units that + have passed through the decoder. */ + INT64 numBadAccessUnits; /*!< This is the number of total access units that + were considered with errors from numTotalBytes. */ /* Metadata */ SCHAR drcProgRefLev; /*!< DRC program reference level. Defines the reference diff --git a/libAACdec/src/aacdecoder_lib.cpp b/libAACdec/src/aacdecoder_lib.cpp index cd112b6..d98cf5a 100644 --- a/libAACdec/src/aacdecoder_lib.cpp +++ b/libAACdec/src/aacdecoder_lib.cpp @@ -1085,12 +1085,12 @@ static void aacDecoder_UpdateBitStreamCounters(CStreamInfo *pSi, INT nBytes; nBytes = nBits >> 3; - pSi->numTotalBytes = (UINT)((INT)pSi->numTotalBytes + nBytes); + pSi->numTotalBytes += nBytes; if (IS_OUTPUT_VALID(ErrorStatus)) { pSi->numTotalAccessUnits++; } if (IS_DECODE_ERROR(ErrorStatus)) { - pSi->numBadBytes = (UINT)((INT)pSi->numBadBytes + nBytes); + pSi->numBadBytes += nBytes; pSi->numBadAccessUnits++; } } |