aboutsummaryrefslogtreecommitdiffstats
path: root/libAACdec
diff options
context:
space:
mode:
authorFraunhofer IIS FDK <audio-fdk@iis.fraunhofer.de>2018-05-23 18:33:57 +0200
committerJean-Michel Trivi <jmtrivi@google.com>2018-05-25 15:38:52 -0700
commitf19e863cce96cc1e5f4ad7ce512810d5a2843ea6 (patch)
tree41c65cebd836ff3f949f1134512985e4a1288593 /libAACdec
parenta4d1f0ad52e2cf6f168d2193216602f52033fc27 (diff)
downloadfdk-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.h18
-rw-r--r--libAACdec/src/aacdecoder_lib.cpp4
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++;
}
}