1
0
mirror of https://github.com/mstorsjo/fdk-aac.git synced 2025-02-18 04:00:36 +01:00

Merge changes I7add6dff,I0249f758

* changes:
  Return SpatialDecDecodeFrame() parse error in case extended frame does not match the spatial frame
  Add sanity check in SpatialDecParseSpecificConfig()
This commit is contained in:
Treehugger Robot 2019-01-02 20:33:56 +00:00 committed by Gerrit Code Review
commit b42dfa745b

View File

@ -572,16 +572,18 @@ SACDEC_ERROR SpatialDecParseSpecificConfig(
numHeaderBits = cfgStartPos - (INT)FDKgetValidBits(bitstream);
bitsAvailable -= numHeaderBits;
if (bitsAvailable < 0) {
err = MPS_PARSE_ERROR;
goto bail;
}
pSpatialSpecificConfig->sacExtCnt = 0;
pSpatialSpecificConfig->bResidualCoding = 0;
if ((err == MPS_OK) && (bitsAvailable > 0)) {
err = SpatialDecParseExtensionConfig(
bitstream, pSpatialSpecificConfig, pSpatialSpecificConfig->nOttBoxes,
pSpatialSpecificConfig->nTttBoxes,
pSpatialSpecificConfig->nOutputChannels, bitsAvailable);
}
err = SpatialDecParseExtensionConfig(
bitstream, pSpatialSpecificConfig, pSpatialSpecificConfig->nOttBoxes,
pSpatialSpecificConfig->nTttBoxes,
pSpatialSpecificConfig->nOutputChannels, bitsAvailable);
FDKbyteAlign(
bitstream,
@ -1868,6 +1870,16 @@ SACDEC_ERROR SpatialDecDecodeFrame(spatialDec *self, SPATIAL_BS_FRAME *frame) {
frame->numParameterSets =
fixMin(MAX_PARAMETER_SETS, frame->numParameterSets + 1);
frame->paramSlot[frame->numParameterSets - 1] = self->timeSlots - 1;
for (int p = 0; p < frame->numParameterSets; p++) {
if (frame->paramSlot[p] > self->timeSlots - 1) {
frame->paramSlot[p] = self->timeSlots - 1;
err = MPS_PARSE_ERROR;
}
}
if (err != MPS_OK) {
goto bail;
}
}
bail: