[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