summaryrefslogtreecommitdiffstats
path: root/libAACdec/src/aacdec_drc.cpp
diff options
context:
space:
mode:
authorJean-Michel Trivi <jmtrivi@google.com>2016-03-22 02:44:32 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-03-22 02:44:32 +0000
commit118fc75eee6cc763a3105d6e963b77d76d114a2e (patch)
tree573cc0762e9d4ee1a5de7e7fc5de12e90463a935 /libAACdec/src/aacdec_drc.cpp
parent9f42dfb7990a107da23454669459bb5e28d90726 (diff)
parent47739cd9d8d7842436b90ef14207c935b0a799fe (diff)
downloadfdk-aac-118fc75eee6cc763a3105d6e963b77d76d114a2e.tar.gz
fdk-aac-118fc75eee6cc763a3105d6e963b77d76d114a2e.tar.bz2
fdk-aac-118fc75eee6cc763a3105d6e963b77d76d114a2e.zip
Fix stack corruption happening in aacDecoder_drcExtractAndMap() am: a06d1c2
am: 47739cd * commit '47739cd9d8d7842436b90ef14207c935b0a799fe': Fix stack corruption happening in aacDecoder_drcExtractAndMap()
Diffstat (limited to 'libAACdec/src/aacdec_drc.cpp')
-rw-r--r--libAACdec/src/aacdec_drc.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/libAACdec/src/aacdec_drc.cpp b/libAACdec/src/aacdec_drc.cpp
index 0c33a2b..9cfc5d5 100644
--- a/libAACdec/src/aacdec_drc.cpp
+++ b/libAACdec/src/aacdec_drc.cpp
@@ -2,7 +2,7 @@
/* -----------------------------------------------------------------------------------------------------------
Software License for The Fraunhofer FDK AAC Codec Library for Android
-© Copyright 1995 - 2013 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V.
+© Copyright 1995 - 2013 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V.
All rights reserved.
1. INTRODUCTION
@@ -705,6 +705,10 @@ static int aacDecoder_drcExtractAndMap (
}
self->numPayloads = 0;
+ if (self->numThreads >= MAX_DRC_THREADS) {
+ self->numThreads = MAX_DRC_THREADS - 1;
+ }
+
if (self->dvbAncDataAvailable)
{ /* Append a DVB heavy compression payload thread if available. */
int bitsParsed;
@@ -731,6 +735,10 @@ static int aacDecoder_drcExtractAndMap (
/* coupling channels not supported */
+ if (self->numThreads >= MAX_DRC_THREADS) {
+ self->numThreads = MAX_DRC_THREADS - 1;
+ }
+
/* check for valid threads */
for (thread = 0; thread < self->numThreads; thread++) {
CDrcPayload *pThreadBs = &threadBs[thread];