summaryrefslogtreecommitdiffstats
path: root/libAACdec/src/rvlcbit.cpp
diff options
context:
space:
mode:
authorFraunhofer IIS FDK <audio-fdk@iis.fraunhofer.de>2018-06-08 18:03:16 +0200
committerWolf-Dieter Enders <grzwolf1@gmail.com>2018-11-18 22:07:46 +0100
commitac21d11767b75a2aa34d92d5f384d6e4b26ef683 (patch)
treecb1cc91f62d182b702bcfe9146d68cc925add6dc /libAACdec/src/rvlcbit.cpp
parent70d7432d80779dfd5b61d0b6b6c45c18a2701066 (diff)
downloadandroid_external_aac-ac21d11767b75a2aa34d92d5f384d6e4b26ef683.tar.gz
android_external_aac-ac21d11767b75a2aa34d92d5f384d6e4b26ef683.tar.bz2
android_external_aac-ac21d11767b75a2aa34d92d5f384d6e4b26ef683.zip
Prevent bit buffer counter overflow.
While long-term test we discovered a bit counter overflow in the bit buffer. The bit buffer state was only used by HCR and RVLC tool and can easily be substituted with FDKgetValidBits() call. The following patch completely removes the bit counter and all its obsolete functions. Bug: 112662184 Test: atest DecoderTestXheAac ; atest DecoderTestAacDrc Change-Id: Icee0519d26a2aa62367d2dece59cd3d60ffcade7 (cherry picked from commit 15292f7e9620caf9e8df26a62efc2a2891ea822e)
Diffstat (limited to 'libAACdec/src/rvlcbit.cpp')
-rw-r--r--libAACdec/src/rvlcbit.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/libAACdec/src/rvlcbit.cpp b/libAACdec/src/rvlcbit.cpp
index 6efbb93..28cc76b 100644
--- a/libAACdec/src/rvlcbit.cpp
+++ b/libAACdec/src/rvlcbit.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
@@ -104,11 +104,12 @@ amm-info@iis.fraunhofer.de
-------------------------------------------------------------------------------------------- */
UCHAR rvlcReadBitFromBitstream (HANDLE_FDK_BITSTREAM bs,
+ const INT bsAnchor,
USHORT *pPosition,
UCHAR readDirection)
{
UINT bit;
- INT readBitOffset = *pPosition-FDKgetBitCnt(bs);
+ INT readBitOffset = (INT)FDKgetValidBits(bs) - bsAnchor + *pPosition;
if( readBitOffset ) {
FDKpushBiDirectional(bs, readBitOffset);