summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2015-01-06 18:17:52 +0000
committer Vladimir Marko <vmarko@google.com> 2015-01-07 11:50:04 +0000
commit152d7282a42cd7130648f373775fe75d319557f2 (patch)
tree2e91c545a6446ff54c1fe4fc9fd31734719ed732
parent984823f543b58ff3c064a203762530f972870d64 (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.cpp13
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)