[jboss-svn-commits] JBoss Common SVN: r3299 - jboss-logmanager/trunk/src/main/java/org/jboss/logmanager.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Jun 22 11:43:38 EDT 2009
Author: david.lloyd at jboss.com
Date: 2009-06-22 11:43:38 -0400 (Mon, 22 Jun 2009)
New Revision: 3299
Modified:
jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/LoggerNode.java
Log:
Creating a logger is privileged, so encompass it in a priv block (JBLOGGING-18)
Modified: jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/LoggerNode.java
===================================================================
--- jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/LoggerNode.java 2009-06-20 01:40:19 UTC (rev 3298)
+++ jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/LoggerNode.java 2009-06-22 15:43:38 UTC (rev 3299)
@@ -26,6 +26,8 @@
import java.util.Collection;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import static org.jboss.logmanager.ConcurrentReferenceHashMap.ReferenceType.STRONG;
import static org.jboss.logmanager.ConcurrentReferenceHashMap.ReferenceType.WEAK;
@@ -162,7 +164,7 @@
return logger;
}
}
- final Logger logger = new Logger(this, fullName);
+ final Logger logger = createLogger(fullName);
if (loggerRefUpdater.compareAndSet(this, loggerRef, parent == null ? new StrongLoggerRef(logger) : new WeakLoggerRef(logger))) {
// initialize the effective level
logger.setLevel(null);
@@ -171,6 +173,19 @@
}
}
+ private Logger createLogger(final String fullName) {
+ final SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ return AccessController.doPrivileged(new PrivilegedAction<Logger>() {
+ public Logger run() {
+ return new Logger(LoggerNode.this, fullName);
+ }
+ });
+ } else {
+ return new Logger(this, fullName);
+ }
+ }
+
/**
* Get a logger instance for this node.
*
More information about the jboss-svn-commits
mailing list