Repository: logging-log4j2
Updated Branches:
  refs/heads/release-2.x 6aed3fbc5 -> c53878aae


[LOG4J2-2377] NullPointerException in
org.apache.logging.log4j.util.LoaderUtil.getClassLoaders() when using
Bootstrap classloader.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/c53878aa
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/c53878aa
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/c53878aa

Branch: refs/heads/release-2.x
Commit: c53878aae3bed3e93060537105799a843c78c386
Parents: 6aed3fb
Author: Gary Gregory <[email protected]>
Authored: Wed Jul 18 16:02:54 2018 -0600
Committer: Gary Gregory <[email protected]>
Committed: Wed Jul 18 16:02:54 2018 -0600

----------------------------------------------------------------------
 .../java/org/apache/logging/log4j/util/LoaderUtil.java    | 10 ++++++----
 src/changes/changes.xml                                   |  3 +++
 2 files changed, 9 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c53878aa/log4j-api/src/main/java/org/apache/logging/log4j/util/LoaderUtil.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/util/LoaderUtil.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/LoaderUtil.java
index 2a153b1..bbf3cc7 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/LoaderUtil.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/LoaderUtil.java
@@ -109,21 +109,23 @@ public final class LoaderUtil {
         List<ClassLoader> classLoaders = new ArrayList<>();
         ClassLoader tcl = getThreadContextClassLoader();
         classLoaders.add(tcl);
+        // Some implementations may use null to represent the bootstrap class 
loader.
         ClassLoader current = LoaderUtil.class.getClassLoader();
-        if (current != tcl) {
+        if (current != null && current != tcl) {
             classLoaders.add(current);
             ClassLoader parent = current.getParent();
             while (parent != null && !classLoaders.contains(parent)) {
                 classLoaders.add(parent);
             }
         }
-        ClassLoader parent = tcl.getParent();
+        ClassLoader parent = tcl == null ? null : tcl.getParent();
         while (parent != null && !classLoaders.contains(parent)) {
             classLoaders.add(parent);
             parent = parent.getParent();
         }
-        if (!classLoaders.contains(ClassLoader.getSystemClassLoader())) {
-            classLoaders.add(ClassLoader.getSystemClassLoader());
+        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
+               if (!classLoaders.contains(systemClassLoader)) {
+            classLoaders.add(systemClassLoader);
         }
         return classLoaders.toArray(new ClassLoader[classLoaders.size()]);
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c53878aa/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 2ffafe4..dde8d70 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -152,6 +152,9 @@
         StringBuilders.escapeXml implementation runs in linear time. Escaping 
large XML strings
         in EncodingPatternConverter and MapMessage will perform significantly 
better.
       </action>
+      <action issue="LOG4J2-2377" dev="ggregory" type="fix" due-to="Mirko 
Rzehak, Gary Gregory">
+        NullPointerException in 
org.apache.logging.log4j.util.LoaderUtil.getClassLoaders() when using Bootstrap 
classloader.
+      </action>
     </release>
     <release version="2.11.0" date="2018-03-11" description="GA Release 
2.11.0">
       <action issue="LOG4J2-2104" dev="rgoers" type="fix">

Reply via email to