diff options
| author | 2015-01-06 18:17:52 +0000 | |
|---|---|---|
| committer | 2015-01-07 11:50:04 +0000 | |
| commit | 152d7282a42cd7130648f373775fe75d319557f2 (patch) | |
| tree | 2e91c545a6446ff54c1fe4fc9fd31734719ed732 | |
| parent | 984823f543b58ff3c064a203762530f972870d64 (diff) | |
Check for OOM in BitmapFactory's getMimeTypeString().
Bug: 18909596
(cherry picked from commit 7ab249a18e08bfefb8c2d60af1fb668c67ba4368)
Change-Id: Ie7be228442876d47faf37e3f664e378253dab6e3
| -rw-r--r-- | core/jni/android/graphics/BitmapFactory.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/core/jni/android/graphics/BitmapFactory.cpp b/core/jni/android/graphics/BitmapFactory.cpp index a578b5db7d91..49577cf7f340 100644 --- a/core/jni/android/graphics/BitmapFactory.cpp +++ b/core/jni/android/graphics/BitmapFactory.cpp @@ -77,8 +77,10 @@ jstring getMimeTypeString(JNIEnv* env, SkImageDecoder::Format format) { } } - jstring jstr = 0; - if (NULL != cstr) { + jstring jstr = NULL; + if (cstr != NULL) { + // NOTE: Caller should env->ExceptionCheck() for OOM + // (can't check for NULL as it's a valid return value) jstr = env->NewStringUTF(cstr); } return jstr; @@ -330,10 +332,13 @@ static jobject doDecode(JNIEnv* env, SkStreamRewindable* stream, jobject padding // update options (if any) if (options != NULL) { + jstring mimeType = getMimeTypeString(env, decoder->getFormat()); + if (env->ExceptionCheck()) { + return nullObjectReturn("OOM in getMimeTypeString()"); + } env->SetIntField(options, gOptions_widthFieldID, scaledWidth); env->SetIntField(options, gOptions_heightFieldID, scaledHeight); - env->SetObjectField(options, gOptions_mimeFieldID, - getMimeTypeString(env, decoder->getFormat())); + env->SetObjectField(options, gOptions_mimeFieldID, mimeType); } // if we're in justBounds mode, return now (skip the java bitmap) |