mirror of
https://github.com/mstorsjo/fdk-aac.git
synced 2025-02-16 19:30:34 +01:00
Unsigned Integer Overflow in transportDec_readHeader().
Bug: 112662270 Test: atest DecoderTestXheAac ; atest DecoderTestAacDrc Change-Id: I0beedab38175fc57e5bd9eb5700a3850ef2bebf7
This commit is contained in:
parent
c75797cfaa
commit
81933bc6eb
@ -871,7 +871,7 @@ static TRANSPORTDEC_ERROR transportDec_readHeader(
|
|||||||
int fConfigFound = (pfConfigFound != NULL) ? *pfConfigFound : 0;
|
int fConfigFound = (pfConfigFound != NULL) ? *pfConfigFound : 0;
|
||||||
int startPos;
|
int startPos;
|
||||||
|
|
||||||
startPos = FDKgetValidBits(hBs);
|
startPos = (INT)FDKgetValidBits(hBs);
|
||||||
|
|
||||||
switch (hTp->transportFmt) {
|
switch (hTp->transportFmt) {
|
||||||
case TT_MP4_ADTS:
|
case TT_MP4_ADTS:
|
||||||
@ -941,7 +941,7 @@ static TRANSPORTDEC_ERROR transportDec_readHeader(
|
|||||||
fTraverseMoreFrames = 0;
|
fTraverseMoreFrames = 0;
|
||||||
}
|
}
|
||||||
syncLayerFrameBits = (hTp->parser.adts.bs.frame_length << 3) -
|
syncLayerFrameBits = (hTp->parser.adts.bs.frame_length << 3) -
|
||||||
((INT)startPos - (INT)FDKgetValidBits(hBs)) -
|
(startPos - (INT)FDKgetValidBits(hBs)) -
|
||||||
syncLength;
|
syncLength;
|
||||||
if (syncLayerFrameBits <= 0) {
|
if (syncLayerFrameBits <= 0) {
|
||||||
err = TRANSPORTDEC_SYNC_ERROR;
|
err = TRANSPORTDEC_SYNC_ERROR;
|
||||||
@ -952,7 +952,7 @@ static TRANSPORTDEC_ERROR transportDec_readHeader(
|
|||||||
break;
|
break;
|
||||||
case TT_MP4_LOAS:
|
case TT_MP4_LOAS:
|
||||||
if (hTp->numberOfRawDataBlocks <= 0) {
|
if (hTp->numberOfRawDataBlocks <= 0) {
|
||||||
syncLayerFrameBits = FDKreadBits(hBs, 13);
|
syncLayerFrameBits = (INT)FDKreadBits(hBs, 13);
|
||||||
hTp->parser.latm.m_audioMuxLengthBytes = syncLayerFrameBits;
|
hTp->parser.latm.m_audioMuxLengthBytes = syncLayerFrameBits;
|
||||||
syncLayerFrameBits <<= 3;
|
syncLayerFrameBits <<= 3;
|
||||||
}
|
}
|
||||||
@ -974,7 +974,7 @@ static TRANSPORTDEC_ERROR transportDec_readHeader(
|
|||||||
hTp->numberOfRawDataBlocks =
|
hTp->numberOfRawDataBlocks =
|
||||||
CLatmDemux_GetNrOfSubFrames(&hTp->parser.latm);
|
CLatmDemux_GetNrOfSubFrames(&hTp->parser.latm);
|
||||||
if (hTp->transportFmt == TT_MP4_LOAS) {
|
if (hTp->transportFmt == TT_MP4_LOAS) {
|
||||||
syncLayerFrameBits -= startPos - FDKgetValidBits(hBs) - (13);
|
syncLayerFrameBits -= startPos - (INT)FDKgetValidBits(hBs) - (13);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user