diff options
author | Jean-Michel Trivi <jmtrivi@google.com> | 2016-03-22 02:44:32 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2016-03-22 02:44:32 +0000 |
commit | 118fc75eee6cc763a3105d6e963b77d76d114a2e (patch) | |
tree | 573cc0762e9d4ee1a5de7e7fc5de12e90463a935 /libAACdec/src/aacdec_drc.cpp | |
parent | 9f42dfb7990a107da23454669459bb5e28d90726 (diff) | |
parent | 47739cd9d8d7842436b90ef14207c935b0a799fe (diff) | |
download | fdk-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.cpp | 10 |
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]; |