From cf6775eece8628ac069a6d4803e7f20a017e7e62 Mon Sep 17 00:00:00 2001 From: Mathieu Chartier Date: Wed, 6 Aug 2014 13:39:17 -0700 Subject: Fix JNI error in exception reporting. There was a JNI error where when you got an OOM and called report_exception, it would call two NewStringUTF in a row without checking the return values. This could mean that the first one threw a new OOME and the second one would cause a JNI error when it also attempted to throw an OOME with a pending OOME. Bug: 16843627 Change-Id: Ie4f9f9a5f8b7993cd3655d42a6718c0a5e1199f8 --- core/jni/android_util_Binder.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/jni/android_util_Binder.cpp b/core/jni/android_util_Binder.cpp index 662af895e04f..4b2f74050652 100644 --- a/core/jni/android_util_Binder.cpp +++ b/core/jni/android_util_Binder.cpp @@ -179,7 +179,10 @@ static void report_exception(JNIEnv* env, jthrowable excep, const char* msg) env->ExceptionClear(); jstring tagstr = env->NewStringUTF(LOG_TAG); - jstring msgstr = env->NewStringUTF(msg); + jstring msgstr = NULL; + if (tagstr != NULL) { + msgstr = env->NewStringUTF(msg); + } if ((tagstr == NULL) || (msgstr == NULL)) { env->ExceptionClear(); /* assume exception (OOM?) was thrown */ -- cgit v1.2.3-59-g8ed1b