Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8158467

AccessControlException is thrown on public Java class access if "script app loader" is set to null

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 9
    • 9
    • core-libs
    • None
    • b122
    • generic
    • generic

        File: Main.java

        import jdk.nashorn.api.scripting.*;
        import javax.script.*;

        public class Main {
          public static void main(String[] args) throws Exception {
             NashornScriptEngineFactory fac = new NashornScriptEngineFactory();
             // you null as ClassLoader for "app loader" for script engine.
             ScriptEngine e = fac.getScriptEngine((ClassLoader)null);
             // try to access public class from an exported package
             e.eval("java.lang.System");
          }
        }

        File: t.policy

        grant {
           permission java.lang.RuntimePermission "nashorn.setConfig";
        };

        Compile and run the above program using jdk9 with these commands:

        $ javac Main.java
        $ java -Djava.security.manager -Djava.security.policy=t.policy Main

        Exception in thread "main" java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "getClassLoader")
        at java.security.AccessControlContext.checkPermission(java.base@9-internal/AccessControlContext.java:468)
        at java.security.AccessController.checkPermission(java.base@9-internal/AccessController.java:894)
        at java.lang.SecurityManager.checkPermission(java.base@9-internal/SecurityManager.java:541)
        at java.lang.Class.forName(java.base@9-internal/Class.java:373)
        at jdk.nashorn.internal.runtime.Context.findClass(jdk.scripting.nashorn@9-internal/Context.java:1169)
        at jdk.nashorn.internal.runtime.NativeJavaPackage.createProperty(jdk.scripting.nashorn@9-internal/NativeJavaPackage.java:236)
        at jdk.nashorn.internal.runtime.NativeJavaPackage.noSuchProperty(jdk.scripting.nashorn@9-internal/NativeJavaPackage.java:205)
        at jdk.nashorn.internal.runtime.ScriptObject.findGetMethod(jdk.scripting.nashorn@9-internal/ScriptObject.java:1987)
        at jdk.nashorn.internal.runtime.ScriptObject.lookup(jdk.scripting.nashorn@9-internal/ScriptObject.java:1853)
        at jdk.nashorn.internal.runtime.linker.NashornLinker.getGuardedInvocation(jdk.scripting.nashorn@9-internal/NashornLinker.java:104)
        at jdk.nashorn.internal.runtime.linker.NashornLinker.getGuardedInvocation(jdk.scripting.nashorn@9-internal/NashornLinker.java:96)
        at jdk.dynalink.linker.support.CompositeTypeBasedGuardingDynamicLinker.getGuardedInvocation(jdk.dynalink@9-internal/CompositeTypeBasedGuardingDynamicLinker.java:184)
        at jdk.dynalink.linker.support.CompositeGuardingDynamicLinker.getGuardedInvocation(jdk.dynalink@9-internal/CompositeGuardingDynamicLinker.java:132)
        at jdk.dynalink.LinkerServicesImpl.lambda$getGuardedInvocation$0(jdk.dynalink@9-internal/LinkerServicesImpl.java:160)
        at jdk.dynalink.LinkerServicesImpl.getWithLookupInternal(jdk.dynalink@9-internal/LinkerServicesImpl.java:191)
        at jdk.dynalink.LinkerServicesImpl.getGuardedInvocation(jdk.dynalink@9-internal/LinkerServicesImpl.java:158)
        at jdk.dynalink.DynamicLinker.relink(jdk.dynalink@9-internal/DynamicLinker.java:265)
        at jdk.nashorn.internal.scripts.Script$Recompilation$1$\^eval\_.:program(jdk.scripting.nashorn.scripts/<eval>:1)
        at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(jdk.scripting.nashorn@9-internal/ScriptFunctionData.java:654)
        at jdk.nashorn.internal.runtime.ScriptFunction.invoke(jdk.scripting.nashorn@9-internal/ScriptFunction.java:513)
        at jdk.nashorn.internal.runtime.ScriptRuntime.apply(jdk.scripting.nashorn@9-internal/ScriptRuntime.java:489)
        at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(jdk.scripting.nashorn@9-internal/NashornScriptEngine.java:445)
        at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(jdk.scripting.nashorn@9-internal/NashornScriptEngine.java:402)
        at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(jdk.scripting.nashorn@9-internal/NashornScriptEngine.java:398)
        at jdk.nashorn.api.scripting.NashornScriptEngine.eval(jdk.scripting.nashorn@9-internal/NashornScriptEngine.java:154)
        at javax.script.AbstractScriptEngine.eval(java.scripting@9-internal/AbstractScriptEngine.java:264)
        at Main.main(Main.java:8)

              sundar Sundararajan Athijegannathan
              sundar Sundararajan Athijegannathan
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: