--- a/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java Thu Jan 30 18:26:15 2014 +0530
+++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java Thu Jan 30 18:49:47 2014 +0530
@@ -110,6 +110,8 @@
for (Class<?> type : types) {
// check for restricted package access
Context.checkPackageAccess(type);
+ // check for classes, interfaces in reflection
+ ReflectionCheckLinker.checkReflectionAccess(type);
}
}
return getAdapterInfo(types).getAdapterClassFor(classOverrides);
--- a/nashorn/test/script/sandbox/classloader.js Thu Jan 30 18:26:15 2014 +0530
+++ b/nashorn/test/script/sandbox/classloader.js Thu Jan 30 18:49:47 2014 +0530
@@ -26,6 +26,7 @@
*
* @test
* @security
+ * @bug JDK-8032954: Nashorn: extend Java.extend
*/
try {
@@ -39,3 +40,24 @@
}
}
+try {
+ Java.extend(Java.type('java.lang.ClassLoader'));
+ fail("should have thrown SecurityException");
+} catch (e) {
+ if (e instanceof java.lang.SecurityException) {
+ print(e);
+ } else {
+ fail("expected SecurityException, got " + e);
+ }
+}
+
+try {
+ Java.extend(Java.type("javax.management.loading.MLet"));
+ fail("should have thrown SecurityException");
+} catch (e) {
+ if (e instanceof java.lang.SecurityException) {
+ print(e);
+ } else {
+ fail("expected SecurityException, got " + e);
+ }
+}
--- a/nashorn/test/script/sandbox/classloader.js.EXPECTED Thu Jan 30 18:26:15 2014 +0530
+++ b/nashorn/test/script/sandbox/classloader.js.EXPECTED Thu Jan 30 18:49:47 2014 +0530
@@ -1,1 +1,3 @@
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "nashorn.JavaReflection")
+java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "nashorn.JavaReflection")
+java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "nashorn.JavaReflection")