src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Context.java

Print this page




  43 import java.lang.invoke.SwitchPoint;
  44 import java.lang.ref.ReferenceQueue;
  45 import java.lang.ref.SoftReference;
  46 import java.lang.reflect.Field;
  47 import java.lang.reflect.Modifier;
  48 import java.net.MalformedURLException;
  49 import java.net.URL;
  50 import java.security.AccessControlContext;
  51 import java.security.AccessController;
  52 import java.security.CodeSigner;
  53 import java.security.CodeSource;
  54 import java.security.Permissions;
  55 import java.security.PrivilegedAction;
  56 import java.security.PrivilegedActionException;
  57 import java.security.PrivilegedExceptionAction;
  58 import java.security.ProtectionDomain;
  59 import java.util.Collection;
  60 import java.util.HashMap;
  61 import java.util.LinkedHashMap;
  62 import java.util.Map;

  63 import java.util.concurrent.atomic.AtomicLong;
  64 import java.util.concurrent.atomic.AtomicReference;
  65 import java.util.function.Consumer;
  66 import java.util.function.Supplier;
  67 import java.util.logging.Level;
  68 import javax.script.ScriptEngine;
  69 import jdk.internal.org.objectweb.asm.ClassReader;
  70 import jdk.internal.org.objectweb.asm.util.CheckClassAdapter;
  71 import jdk.nashorn.api.scripting.ClassFilter;
  72 import jdk.nashorn.api.scripting.ScriptObjectMirror;
  73 import jdk.nashorn.internal.codegen.Compiler;
  74 import jdk.nashorn.internal.codegen.Compiler.CompilationPhases;
  75 import jdk.nashorn.internal.codegen.ObjectClassGenerator;
  76 import jdk.nashorn.internal.ir.FunctionNode;
  77 import jdk.nashorn.internal.ir.debug.ASTWriter;
  78 import jdk.nashorn.internal.ir.debug.PrintVisitor;
  79 import jdk.nashorn.internal.lookup.MethodHandleFactory;
  80 import jdk.nashorn.internal.objects.Global;
  81 import jdk.nashorn.internal.parser.Parser;
  82 import jdk.nashorn.internal.runtime.events.RuntimeEvent;


 887      * Checks that the given package name can be accessed from no permissions context.
 888      *
 889      * @param pkgName package name
 890      * @throws SecurityException if not accessible
 891      */
 892     public static void checkPackageAccess(final String pkgName) {
 893         final SecurityManager sm = System.getSecurityManager();
 894         if (sm != null) {
 895             checkPackageAccess(sm, pkgName.endsWith(".") ? pkgName : pkgName + ".");
 896         }
 897     }
 898 
 899     /**
 900      * Checks that the given package can be accessed from no permissions context.
 901      *
 902      * @param sm current security manager instance
 903      * @param fullName fully qualified package name
 904      * @throw SecurityException if not accessible
 905      */
 906     private static void checkPackageAccess(final SecurityManager sm, final String fullName) {
 907         sm.getClass(); // null check
 908         final int index = fullName.lastIndexOf('.');
 909         if (index != -1) {
 910             final String pkgName = fullName.substring(0, index);
 911             AccessController.doPrivileged(new PrivilegedAction<Void>() {
 912                 @Override
 913                 public Void run() {
 914                     sm.checkPackageAccess(pkgName);
 915                     return null;
 916                 }
 917             }, NO_PERMISSIONS_ACC_CTXT);
 918         }
 919     }
 920 
 921     /**
 922      * Checks that the given Class can be accessed from no permissions context.
 923      *
 924      * @param clazz Class object
 925      * @return true if package is accessible, false otherwise
 926      */
 927     private static boolean isAccessiblePackage(final Class<?> clazz) {




  43 import java.lang.invoke.SwitchPoint;
  44 import java.lang.ref.ReferenceQueue;
  45 import java.lang.ref.SoftReference;
  46 import java.lang.reflect.Field;
  47 import java.lang.reflect.Modifier;
  48 import java.net.MalformedURLException;
  49 import java.net.URL;
  50 import java.security.AccessControlContext;
  51 import java.security.AccessController;
  52 import java.security.CodeSigner;
  53 import java.security.CodeSource;
  54 import java.security.Permissions;
  55 import java.security.PrivilegedAction;
  56 import java.security.PrivilegedActionException;
  57 import java.security.PrivilegedExceptionAction;
  58 import java.security.ProtectionDomain;
  59 import java.util.Collection;
  60 import java.util.HashMap;
  61 import java.util.LinkedHashMap;
  62 import java.util.Map;
  63 import java.util.Objects;
  64 import java.util.concurrent.atomic.AtomicLong;
  65 import java.util.concurrent.atomic.AtomicReference;
  66 import java.util.function.Consumer;
  67 import java.util.function.Supplier;
  68 import java.util.logging.Level;
  69 import javax.script.ScriptEngine;
  70 import jdk.internal.org.objectweb.asm.ClassReader;
  71 import jdk.internal.org.objectweb.asm.util.CheckClassAdapter;
  72 import jdk.nashorn.api.scripting.ClassFilter;
  73 import jdk.nashorn.api.scripting.ScriptObjectMirror;
  74 import jdk.nashorn.internal.codegen.Compiler;
  75 import jdk.nashorn.internal.codegen.Compiler.CompilationPhases;
  76 import jdk.nashorn.internal.codegen.ObjectClassGenerator;
  77 import jdk.nashorn.internal.ir.FunctionNode;
  78 import jdk.nashorn.internal.ir.debug.ASTWriter;
  79 import jdk.nashorn.internal.ir.debug.PrintVisitor;
  80 import jdk.nashorn.internal.lookup.MethodHandleFactory;
  81 import jdk.nashorn.internal.objects.Global;
  82 import jdk.nashorn.internal.parser.Parser;
  83 import jdk.nashorn.internal.runtime.events.RuntimeEvent;


 888      * Checks that the given package name can be accessed from no permissions context.
 889      *
 890      * @param pkgName package name
 891      * @throws SecurityException if not accessible
 892      */
 893     public static void checkPackageAccess(final String pkgName) {
 894         final SecurityManager sm = System.getSecurityManager();
 895         if (sm != null) {
 896             checkPackageAccess(sm, pkgName.endsWith(".") ? pkgName : pkgName + ".");
 897         }
 898     }
 899 
 900     /**
 901      * Checks that the given package can be accessed from no permissions context.
 902      *
 903      * @param sm current security manager instance
 904      * @param fullName fully qualified package name
 905      * @throw SecurityException if not accessible
 906      */
 907     private static void checkPackageAccess(final SecurityManager sm, final String fullName) {
 908         Objects.requireNonNull(sm);
 909         final int index = fullName.lastIndexOf('.');
 910         if (index != -1) {
 911             final String pkgName = fullName.substring(0, index);
 912             AccessController.doPrivileged(new PrivilegedAction<Void>() {
 913                 @Override
 914                 public Void run() {
 915                     sm.checkPackageAccess(pkgName);
 916                     return null;
 917                 }
 918             }, NO_PERMISSIONS_ACC_CTXT);
 919         }
 920     }
 921 
 922     /**
 923      * Checks that the given Class can be accessed from no permissions context.
 924      *
 925      * @param clazz Class object
 926      * @return true if package is accessible, false otherwise
 927      */
 928     private static boolean isAccessiblePackage(final Class<?> clazz) {