diff options
author | Chris Craik <ccraik@google.com> | 2018-02-08 15:58:34 -0800 |
---|---|---|
committer | Moritz Horstmann <dev@peterzweg.at> | 2018-04-06 16:46:45 +0200 |
commit | 563f1c3a129be46c13eccc4cab7bd049d2c8f687 (patch) | |
tree | 7df7caed5057fbeab822683980940132a144f586 | |
parent | 61e42c38dea46a171d5c782e8a9875a607e83748 (diff) | |
download | android_frameworks_ex-cm-14.1.tar.gz android_frameworks_ex-cm-14.1.tar.bz2 android_frameworks_ex-cm-14.1.zip |
Add bounds checking for transparency lookupcm-14.1
Bug: 71361451
Test: manual test with sample app
Change-Id: Icaa626cfc93115fe1cc2f42040b396c2318bb6e4
(cherry picked from commit 53f97a2dd69b5b74e0fae2108ebab9276760aa47)
(cherry picked from commit ebd849ed8aa77c0e1dad7a08df4a55845a067b76)
-rw-r--r-- | framesequence/jni/FrameSequence_gif.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/framesequence/jni/FrameSequence_gif.cpp b/framesequence/jni/FrameSequence_gif.cpp index 3ba09dc..ed47834 100644 --- a/framesequence/jni/FrameSequence_gif.cpp +++ b/framesequence/jni/FrameSequence_gif.cpp @@ -111,12 +111,14 @@ FrameSequence_gif::FrameSequence_gif(Stream* stream) : } #endif - if (mGif->SColorMap) { + const ColorMapObject* cmap = mGif->SColorMap; + if (cmap) { // calculate bg color GraphicsControlBlock gcb; DGifSavedExtensionToGCB(mGif, 0, &gcb); - if (gcb.TransparentColor == NO_TRANSPARENT_COLOR) { - mBgColor = gifColorToColor8888(mGif->SColorMap->Colors[mGif->SBackGroundColor]); + if (gcb.TransparentColor == NO_TRANSPARENT_COLOR + && mGif->SBackGroundColor < cmap->ColorCount) { + mBgColor = gifColorToColor8888(cmap->Colors[mGif->SBackGroundColor]); } } } @@ -358,4 +360,3 @@ static RegistryEntry gEntry = { acceptsBuffers, }; static Registry gRegister(gEntry); - |