From 27b7a48aace657d95a43fba1073f7428bec1703d Mon Sep 17 00:00:00 2001 From: James Perkins Date: Thu, 31 Aug 2017 15:15:13 -0700 Subject: [PATCH] [LOGMGR-172] Ensure initializing the StandardOutputStreams are initialized in a privileged block if required. --- .../java/org/jboss/logmanager/LogManager.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/jboss/logmanager/LogManager.java b/src/main/java/org/jboss/logmanager/LogManager.java index fbe8dcc6..e0c62c8a 100644 --- a/src/main/java/org/jboss/logmanager/LogManager.java +++ b/src/main/java/org/jboss/logmanager/LogManager.java @@ -50,12 +50,12 @@ public final class LogManager extends java.util.logging.LogManager { static final boolean PER_THREAD_LOG_FILTER; static { - try { - // Ensure the StandardOutputStreams are initialized early to capture the current System.out and System.err. - Class.forName(StandardOutputStreams.class.getName()); - } catch (ClassNotFoundException ignore) { - } if (System.getSecurityManager() == null) { + try { + // Ensure the StandardOutputStreams are initialized early to capture the current System.out and System.err. + Class.forName(StandardOutputStreams.class.getName()); + } catch (ClassNotFoundException ignore) { + } PER_THREAD_LOG_FILTER = Boolean.getBoolean(PER_THREAD_LOG_FILTER_KEY); } else { PER_THREAD_LOG_FILTER = AccessController.doPrivileged(new PrivilegedAction() { @@ -64,6 +64,18 @@ public Boolean run() { return Boolean.getBoolean(PER_THREAD_LOG_FILTER_KEY); } }); + + AccessController.doPrivileged(new PrivilegedAction() { + @Override + public Object run() { + try { + // Ensure the StandardOutputStreams are initialized early to capture the current System.out and System.err. + Class.forName(StandardOutputStreams.class.getName()); + } catch (ClassNotFoundException ignore) { + } + return null; + } + }); } }