Fix unsigned integer overflow in aacDecoder_UpdateBitStreamCounters()

am: f19e863cce

Change-Id: I0e8a97a690f959840fbb3a249e41b260ac87d922
This commit is contained in:
Fraunhofer IIS FDK 2018-05-25 19:06:33 -07:00 committed by android-build-merger
commit 1f93990cfc
2 changed files with 12 additions and 10 deletions

View File

@ -861,14 +861,16 @@ typedef struct {
returns AAC_DEC_TRANSPORT_SYNC_ERROR. It will be returns AAC_DEC_TRANSPORT_SYNC_ERROR. It will be
< 0 if the estimation failed. */ < 0 if the estimation failed. */
UINT numTotalBytes; /*!< This is the number of total bytes that have passed INT64 numTotalBytes; /*!< This is the number of total bytes that have passed
through the decoder. */ through the decoder. */
UINT numBadBytes; /*!< This is the number of total bytes that were considered INT64
with errors from numTotalBytes. */ numBadBytes; /*!< This is the number of total bytes that were considered
UINT numTotalAccessUnits; /*!< This is the number of total access units that with errors from numTotalBytes. */
have passed through the decoder. */ INT64
UINT numBadAccessUnits; /*!< This is the number of total access units that numTotalAccessUnits; /*!< This is the number of total access units that
were considered with errors from numTotalBytes. */ have passed through the decoder. */
INT64 numBadAccessUnits; /*!< This is the number of total access units that
were considered with errors from numTotalBytes. */
/* Metadata */ /* Metadata */
SCHAR drcProgRefLev; /*!< DRC program reference level. Defines the reference SCHAR drcProgRefLev; /*!< DRC program reference level. Defines the reference

View File

@ -1085,12 +1085,12 @@ static void aacDecoder_UpdateBitStreamCounters(CStreamInfo *pSi,
INT nBytes; INT nBytes;
nBytes = nBits >> 3; nBytes = nBits >> 3;
pSi->numTotalBytes = (UINT)((INT)pSi->numTotalBytes + nBytes); pSi->numTotalBytes += nBytes;
if (IS_OUTPUT_VALID(ErrorStatus)) { if (IS_OUTPUT_VALID(ErrorStatus)) {
pSi->numTotalAccessUnits++; pSi->numTotalAccessUnits++;
} }
if (IS_DECODE_ERROR(ErrorStatus)) { if (IS_DECODE_ERROR(ErrorStatus)) {
pSi->numBadBytes = (UINT)((INT)pSi->numBadBytes + nBytes); pSi->numBadBytes += nBytes;
pSi->numBadAccessUnits++; pSi->numBadAccessUnits++;
} }
} }