summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpeshovec <jlesev@gmail.com>2012-03-12 14:22:01 +0200
committerpeshovec <jlesev@gmail.com>2012-03-14 10:09:16 +0200
commit2b48c9410a291e8288d1a2b585c7e7a2ab203c67 (patch)
tree18493d1951dd501a1056457aa2e5b3341e02053e
parent55ac5b0a908b85c050f34dc603f62dd4b1fc4e9f (diff)
downloadandroid_dalvik-2b48c9410a291e8288d1a2b585c7e7a2ab203c67.tar.gz
android_dalvik-2b48c9410a291e8288d1a2b585c7e7a2ab203c67.tar.bz2
android_dalvik-2b48c9410a291e8288d1a2b585c7e7a2ab203c67.zip
Undecoded jobject leaking in through attachThread
picked from https://android-review.googlesource.com/#/c/23058/
-rw-r--r--vm/Jni.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/vm/Jni.c b/vm/Jni.c
index 8f1df3390..6744d9cc6 100644
--- a/vm/Jni.c
+++ b/vm/Jni.c
@@ -566,6 +566,8 @@ static inline ReferenceTable* getLocalRefTable(JNIEnv* env)
* reference may be local, global, or weak-global.
*
* If "jobj" is NULL or an invalid indirect reference, this returns NULL.
+ *
+ * Note "env" may be NULL when decoding global references.
*/
Object* dvmDecodeIndirectRef(JNIEnv* env, jobject jobj)
{
@@ -3856,7 +3858,7 @@ static jint attachThread(JavaVM* vm, JNIEnv** p_env, void* thr_args,
argsCopy.version = args->version;
argsCopy.name = args->name;
if (args->group != NULL)
- argsCopy.group = args->group;
+ argsCopy.group = dvmDecodeIndirectRef(NULL, args->group);
else
argsCopy.group = dvmGetMainThreadGroup();
}