mirror of https://github.com/mstorsjo/fdk-aac.git
Fix heap buffer overflow in sbrDecoder_AssignQmfChannels2SbrChannels(). am: bb8f983bf3
am: f007f6a4bc
am: a5a3ef611c
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/aac/+/12087395 Change-Id: I19cbfb6b908a878ce59e8c6869ba9c5957d10075
This commit is contained in:
commit
11b611293f
|
@ -1,7 +1,7 @@
|
|||
/* -----------------------------------------------------------------------------
|
||||
Software License for The Fraunhofer FDK AAC Codec Library for Android
|
||||
|
||||
© Copyright 1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
||||
© Copyright 1995 - 2020 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
||||
Forschung e.V. All rights reserved.
|
||||
|
||||
1. INTRODUCTION
|
||||
|
@ -617,10 +617,6 @@ SBR_ERROR sbrDecoder_InitElement(
|
|||
self->numSbrChannels -= self->pSbrElement[elementIndex]->nChannels;
|
||||
}
|
||||
|
||||
/* Save element ID for sanity checks and to have a fallback for concealment.
|
||||
*/
|
||||
self->pSbrElement[elementIndex]->elementID = elementID;
|
||||
|
||||
/* Determine amount of channels for this element */
|
||||
switch (elementID) {
|
||||
case ID_NONE:
|
||||
|
@ -653,12 +649,16 @@ SBR_ERROR sbrDecoder_InitElement(
|
|||
}
|
||||
|
||||
/* Sanity check to avoid memory leaks */
|
||||
if (elChannels < self->pSbrElement[elementIndex]->nChannels) {
|
||||
if (elChannels < self->pSbrElement[elementIndex]->nChannels ||
|
||||
(self->numSbrChannels + elChannels) > (8) + (1)) {
|
||||
self->numSbrChannels += self->pSbrElement[elementIndex]->nChannels;
|
||||
sbrError = SBRDEC_PARSE_ERROR;
|
||||
goto bail;
|
||||
}
|
||||
|
||||
/* Save element ID for sanity checks and to have a fallback for concealment.
|
||||
*/
|
||||
self->pSbrElement[elementIndex]->elementID = elementID;
|
||||
self->pSbrElement[elementIndex]->nChannels = elChannels;
|
||||
|
||||
for (ch = 0; ch < elChannels; ch++) {
|
||||
|
|
Loading…
Reference in New Issue