summaryrefslogtreecommitdiffstats
path: root/framesequence
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2014-02-03 12:38:58 -0800
committerChris Craik <ccraik@google.com>2014-02-03 12:38:58 -0800
commita3daacb24a430bc3fad7251ef962d7c7b6c47e55 (patch)
tree1a04392f19cbb3e0235960bc18e3f2a75ede519b /framesequence
parent7b83246c90d63100bd99edac1b2c31855505c081 (diff)
downloadandroid_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.cpp13
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;
}