diff options
Diffstat (limited to 'src/jdk/nashorn/internal/runtime/Logging.java')
-rw-r--r-- | src/jdk/nashorn/internal/runtime/Logging.java | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/jdk/nashorn/internal/runtime/Logging.java b/src/jdk/nashorn/internal/runtime/Logging.java index 39740dd2..54d83b79 100644 --- a/src/jdk/nashorn/internal/runtime/Logging.java +++ b/src/jdk/nashorn/internal/runtime/Logging.java @@ -25,6 +25,11 @@ package jdk.nashorn.internal.runtime; +import java.security.AccessControlContext; +import java.security.AccessController; +import java.security.Permissions; +import java.security.PrivilegedAction; +import java.security.ProtectionDomain; import java.util.HashMap; import java.util.Locale; import java.util.Map; @@ -35,6 +40,7 @@ import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.Logger; +import java.util.logging.LoggingPermission; /** * Logging system for getting loggers for arbitrary subsystems as @@ -50,12 +56,20 @@ public final class Logging { private static final Logger disabledLogger = Logger.getLogger("disabled"); + private static AccessControlContext createLoggerControlAccCtxt() { + final Permissions perms = new Permissions(); + perms.add(new LoggingPermission("control", null)); + return new AccessControlContext(new ProtectionDomain[] { new ProtectionDomain(null, perms) }); + } + static { - try { - Logging.disabledLogger.setLevel(Level.OFF); - } catch (final SecurityException e) { - //ignored - } + AccessController.doPrivileged(new PrivilegedAction<Void>() { + @Override + public Void run() { + Logging.disabledLogger.setLevel(Level.OFF); + return null; + } + }, createLoggerControlAccCtxt()); } /** Maps logger name to loggers. Names are typically per package */ |