[LOG4J2-799] Log4j 2 throws ArrayIndexOutOfBoundsException. The private
method ThrowableProxy.formatEntry(StackTraceElement,
ExtendedStackTraceElement, StringBuilder) is now
formatEntry(ExtendedStackTraceElement, StringBuilder) because the
StackTraceElement was not used. Also, it is possible that calling this
method could cause an NPE while a call site tried to address a null
StackTraceElement from
ThrowableProxy.getExtendedStackTrace(ThrowableProxy.java:232). This is
what seems to happen in the stack strace for [LOG4J2-799] which matches
up with 2.0-rc1.

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

Branch: refs/heads/messaging-module
Commit: a4aab92d9fc64eccfbcff8c69e4759976d57078d
Parents: 443779a
Author: Gary Gregory <[email protected]>
Authored: Fri Aug 29 09:48:08 2014 -0400
Committer: Gary Gregory <[email protected]>
Committed: Fri Aug 29 09:48:08 2014 -0400

----------------------------------------------------------------------
 .../org/apache/logging/log4j/core/impl/ThrowableProxy.java    | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/a4aab92d/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
index e08205d..2320ad7 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
@@ -224,7 +224,7 @@ public class ThrowableProxy implements Serializable {
             final ExtendedStackTraceElement[] extStackTrace, final 
List<String> ignorePackages) {
         if (ignorePackages == null || ignorePackages.isEmpty()) {
             for (int i = 0; i < extStackTrace.length; ++i) {
-                this.formatEntry(causedTrace[i], extStackTrace[i], sb);
+                this.formatEntry(extStackTrace[i], sb);
             }
         } else {
             int count = 0;
@@ -238,7 +238,7 @@ public class ThrowableProxy implements Serializable {
                         }
                         count = 0;
                     }
-                    this.formatEntry(causedTrace[i], extStackTrace[i], sb);
+                    this.formatEntry(extStackTrace[i], sb);
                 } else {
                     ++count;
                 }
@@ -256,8 +256,7 @@ public class ThrowableProxy implements Serializable {
         }
     }
 
-    private void formatEntry(final StackTraceElement element, final 
ExtendedStackTraceElement extStackTraceElement,
-            final StringBuilder sb) {
+    private void formatEntry(final ExtendedStackTraceElement 
extStackTraceElement, final StringBuilder sb) {
         sb.append("\tat ");
         sb.append(extStackTraceElement);
         sb.append('\n');

Reply via email to