[vmkit-commits] [PATCH] Impl JVM_DoPrivileged, no actual protection.
Will Dietz
wdietz2 at illinois.edu
Mon Oct 31 21:58:06 PDT 2011
Inlined below.
For now, dodge the implementation of anything actually secure, and put
a working implementation in the code since it's used a fair amount
while bootstrapping OpenJDK.
~Will
>From 8cc1f086eb2ae50a0257fff04c5b704fb648ce0a Mon Sep 17 00:00:00 2001
From: Will Dietz <w at wdtz.org>
Date: Mon, 31 Oct 2011 16:37:26 -0500
Subject: [PATCH 8/8] Impl JVM_DoPrivileged, no actual protection.
---
lib/J3/ClassLib/OpenJDK/OpenJDK.inc | 34 +++++++++++++++++++++++++++++++---
1 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
index fc4663c..cc8c3a4 100644
--- a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
+++ b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
@@ -1141,18 +1141,46 @@ JNIEXPORT jstring JNICALL JVM_ConstantPoolGetUTF8At
JNIEXPORT jobject JNICALL
JVM_DoPrivileged(JNIEnv *env, jclass cls,
jobject action, jobject context, jboolean wrapException) {
- NYI();
+ JavaObject * obj = 0;
+ JavaObject * res = 0;
+ llvm_gcroot(obj, 0);
+ llvm_gcroot(res, 0);
+ BEGIN_JNI_EXCEPTION
+
+ verifyNull(action);
+
+ obj = *(JavaObject**)action;
+
+ Jnjvm* vm = th->getJVM();
+
+ // For now, we don't do anything special,
+ // just call the requested 'run()' method...
+ UserClass * cl = JavaObject::getClass(obj)->asClass();
+ const UTF8 * runName = cl->classLoader->hashUTF8->lookupAsciiz("run");
+ const UTF8 * runType =
cl->classLoader->hashUTF8->lookupAsciiz("()Ljava/lang/Object;");
+ assert(cl); assert(runName); assert(runType);
+
+ JavaMethod * meth = cl->lookupMethodDontThrow(runName, runType,
false, true, 0);
+ assert(meth);
+
+ res = meth->invokeJavaObjectVirtual(vm, cl, obj, obj);
+
+ RETURN_FROM_JNI((jobject)th->pushJNIRef(res));
+
+ END_JNI_EXCEPTION
}
JNIEXPORT jobject JNICALL
JVM_GetInheritedAccessControlContext(JNIEnv *env, jclass cls) {
- NYI();
+ // No AccessControlContext supported yet
+ return NULL;
}
JNIEXPORT jobject JNICALL
JVM_GetStackAccessControlContext(JNIEnv *env, jclass cls) {
- NYI();
+ // No AccessControlContext supported yet
+ return NULL;
}
/*
--
1.7.5.1
More information about the vmkit-commits
mailing list