aboutsummaryrefslogtreecommitdiff
path: root/src/jdk/nashorn/internal/runtime/Logging.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jdk/nashorn/internal/runtime/Logging.java')
-rw-r--r--src/jdk/nashorn/internal/runtime/Logging.java24
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 */