Looks good. We're not security freaks (yet) :) <br><br><div class="gmail_quote">On Tue, Nov 1, 2011 at 5:58 AM, Will Dietz <span dir="ltr"><<a href="mailto:wdietz2@illinois.edu">wdietz2@illinois.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Inlined below.<br>
<br>
For now, dodge the implementation of anything actually secure, and put<br>
a working implementation in the code since it's used a fair amount<br>
while bootstrapping OpenJDK.<br>
<br>
~Will<br>
<br>
>From 8cc1f086eb2ae50a0257fff04c5b704fb648ce0a Mon Sep 17 00:00:00 2001<br>
From: Will Dietz <<a href="mailto:w@wdtz.org">w@wdtz.org</a>><br>
Date: Mon, 31 Oct 2011 16:37:26 -0500<br>
Subject: [PATCH 8/8] Impl JVM_DoPrivileged, no actual protection.<br>
<br>
---<br>
 lib/J3/ClassLib/OpenJDK/OpenJDK.inc |   34 +++++++++++++++++++++++++++++++---<br>
 1 files changed, 31 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
index fc4663c..cc8c3a4 100644<br>
--- a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
+++ b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
@@ -1141,18 +1141,46 @@ JNIEXPORT jstring JNICALL JVM_ConstantPoolGetUTF8At<br>
 JNIEXPORT jobject JNICALL<br>
 JVM_DoPrivileged(JNIEnv *env, jclass cls,<br>
                  jobject action, jobject context, jboolean wrapException) {<br>
-  NYI();<br>
+  JavaObject * obj = 0;<br>
+  JavaObject * res = 0;<br>
+  llvm_gcroot(obj, 0);<br>
+  llvm_gcroot(res, 0);<br>
+  BEGIN_JNI_EXCEPTION<br>
+<br>
+  verifyNull(action);<br>
+<br>
+  obj = *(JavaObject**)action;<br>
+<br>
+  Jnjvm* vm = th->getJVM();<br>
+<br>
+  // For now, we don't do anything special,<br>
+  // just call the requested 'run()' method...<br>
+  UserClass * cl = JavaObject::getClass(obj)->asClass();<br>
+  const UTF8 * runName = cl->classLoader->hashUTF8->lookupAsciiz("run");<br>
+  const UTF8 * runType =<br>
cl->classLoader->hashUTF8->lookupAsciiz("()Ljava/lang/Object;");<br>
+  assert(cl); assert(runName); assert(runType);<br>
+<br>
+  JavaMethod * meth = cl->lookupMethodDontThrow(runName, runType,<br>
false, true, 0);<br>
+  assert(meth);<br>
+<br>
+  res = meth->invokeJavaObjectVirtual(vm, cl, obj, obj);<br>
+<br>
+  RETURN_FROM_JNI((jobject)th->pushJNIRef(res));<br>
+<br>
+  END_JNI_EXCEPTION<br>
 }<br>
<br>
 JNIEXPORT jobject JNICALL<br>
 JVM_GetInheritedAccessControlContext(JNIEnv *env, jclass cls) {<br>
-  NYI();<br>
+  // No AccessControlContext supported yet<br>
+  return NULL;<br>
 }<br>
<br>
<br>
 JNIEXPORT jobject JNICALL<br>
 JVM_GetStackAccessControlContext(JNIEnv *env, jclass cls) {<br>
-  NYI();<br>
+  // No AccessControlContext supported yet<br>
+  return NULL;<br>
 }<br>
<br>
 /*<br>
<font color="#888888">--<br>
1.7.5.1<br>
_______________________________________________<br>
vmkit-commits mailing list<br>
<a href="mailto:vmkit-commits@cs.uiuc.edu">vmkit-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/vmkit-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/vmkit-commits</a><br>
</font></blockquote></div><br>