diff options
author | Chris Craik <ccraik@google.com> | 2014-02-03 12:38:58 -0800 |
---|---|---|
committer | Chris Craik <ccraik@google.com> | 2014-02-03 12:38:58 -0800 |
commit | a3daacb24a430bc3fad7251ef962d7c7b6c47e55 (patch) | |
tree | 1a04392f19cbb3e0235960bc18e3f2a75ede519b /framesequence | |
parent | 7b83246c90d63100bd99edac1b2c31855505c081 (diff) | |
download | android_frameworks_ex-a3daacb24a430bc3fad7251ef962d7c7b6c47e55.tar.gz android_frameworks_ex-a3daacb24a430bc3fad7251ef962d7c7b6c47e55.tar.bz2 android_frameworks_ex-a3daacb24a430bc3fad7251ef962d7c7b6c47e55.zip |
Handle malformed gif streams more gracefully
Change-Id: I2ea934b90d73e1431fb3df9ff793aa8ff2033099
Diffstat (limited to 'framesequence')
-rw-r--r-- | framesequence/jni/FrameSequence.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/framesequence/jni/FrameSequence.cpp b/framesequence/jni/FrameSequence.cpp index 5c34425..efcfefa 100644 --- a/framesequence/jni/FrameSequence.cpp +++ b/framesequence/jni/FrameSequence.cpp @@ -20,5 +20,16 @@ FrameSequence* FrameSequence::create(Stream* stream) { const RegistryEntry* entry = Registry::Find(stream); - return entry ? entry->createFrameSequence(stream) : 0; + + if (!entry) return NULL; + + FrameSequence* frameSequence = entry->createFrameSequence(stream); + if (!frameSequence->getFrameCount() || + !frameSequence->getWidth() || !frameSequence->getHeight()) { + // invalid contents, abort + delete frameSequence; + return NULL; + } + + return frameSequence; } |