You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2014/06/07 00:20:45 UTC
svn commit: r1601024 - in /logging/log4j/log4j2/trunk:
log4j-core/src/main/java/org/apache/logging/log4j/core/util/Loader.java
src/changes/changes.xml
Author: mattsicker
Date: Fri Jun 6 22:20:44 2014
New Revision: 1601024
URL: http://svn.apache.org/r1601024
Log:
Fix NPE in Loader.getTCL() as reported in LOG4J2-640.
Modified:
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Loader.java
logging/log4j/log4j2/trunk/src/changes/changes.xml
Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Loader.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Loader.java?rev=1601024&r1=1601023&r2=1601024&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Loader.java (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Loader.java Fri Jun 6 22:20:44 2014
@@ -20,6 +20,8 @@ package org.apache.logging.log4j.core.ut
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.status.StatusLogger;
@@ -36,6 +38,9 @@ public final class Loader {
private static final String TSTR = "Caught Exception while in Loader.getResource. This may be innocuous.";
+ private static final PrivilegedAction<ClassLoader> THREAD_CONTEXT_CLASS_LOADER_GETTER =
+ new ThreadContextClassLoaderGetter();
+
static {
final String ignoreTCLProp = PropertiesUtil.getProperties().getStringProperty("log4j.ignoreTCL", null);
if (ignoreTCLProp != null) {
@@ -202,21 +207,18 @@ public final class Loader {
}
private static ClassLoader getTcl() {
- ClassLoader cl;
- if (System.getSecurityManager() == null) {
- cl = Thread.currentThread().getContextClassLoader();
- } else {
- cl = java.security.AccessController.doPrivileged(
- new java.security.PrivilegedAction<ClassLoader>() {
- @Override
- public ClassLoader run() {
- return Thread.currentThread().getContextClassLoader();
- }
- }
- );
- }
+ return System.getSecurityManager() == null
+ ? THREAD_CONTEXT_CLASS_LOADER_GETTER.run()
+ : AccessController.doPrivileged(THREAD_CONTEXT_CLASS_LOADER_GETTER);
+ }
- return cl;
+ private static class ThreadContextClassLoaderGetter implements PrivilegedAction<ClassLoader> {
+ @Override
+ public ClassLoader run() {
+ final ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ // if the TCCL is null, that means we're using the system CL
+ return cl == null ? ClassLoader.getSystemClassLoader() : cl;
+ }
}
private static boolean isChild(final ClassLoader loader1, final ClassLoader loader2) {
Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1601024&r1=1601023&r2=1601024&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Fri Jun 6 22:20:44 2014
@@ -22,6 +22,9 @@
</properties>
<body>
<release version="2.0-rc2" date="2014-MM-DD" description="Bug fixes and enhancements">
+ <action issue="LOG4J2-640" dev="mattsicker" type="fix">
+ Fix NPE that can be caused by a null ThreadContextClassLoader.
+ </action>
<action issue="LOG4J2-655" dev="mattsicker" type="add">
Add Vagrantfile for testing in GNU+Linux.
</action>