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">
