You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rg...@apache.org on 2014/04/22 08:06:41 UTC

svn commit: r1589024 - in /logging/log4j/log4j2/trunk: log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/ log4j-core/src/test/java/org/apache/logging/log4j/core/ log4j-core/src/test/resources/ src/changes/

Author: rgoers
Date: Tue Apr 22 06:06:41 2014
New Revision: 1589024

URL: http://svn.apache.org/r1589024
Log:
A StringIndexOutOfBounds exception could occur during property substitution.

Added:
    logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/LookupTest.java
      - copied, changed from r1586822, logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/HostNameTest.java
    logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-lookup.xml
Modified:
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrSubstitutor.java
    logging/log4j/log4j2/trunk/src/changes/changes.xml

Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrSubstitutor.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrSubstitutor.java?rev=1589024&r1=1589023&r2=1589024&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrSubstitutor.java (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrSubstitutor.java Tue Apr 22 06:06:41 2014
@@ -814,7 +814,7 @@ public class StrSubstitutor {
                                 if (priorVariables == null) {
                                     priorVariables = new ArrayList<String>();
                                     priorVariables.add(new String(chars,
-                                            offset, length));
+                                            offset, length + lengthChange));
                                 }
 
                                 // handle cyclic substitution

Copied: logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/LookupTest.java (from r1586822, logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/HostNameTest.java)
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/LookupTest.java?p2=logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/LookupTest.java&p1=logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/HostNameTest.java&r1=1586822&r2=1589024&rev=1589024&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/HostNameTest.java (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/LookupTest.java Tue Apr 22 06:06:41 2014
@@ -17,11 +17,13 @@
 package org.apache.logging.log4j.core;
 
 import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.core.appender.ConsoleAppender;
 import org.apache.logging.log4j.core.appender.RollingFileAppender;
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.ConfigurationFactory;
 import org.apache.logging.log4j.core.helpers.Constants;
 import org.apache.logging.log4j.core.helpers.NetUtils;
+import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.test.appender.ListAppender;
 import org.junit.AfterClass;
@@ -38,13 +40,11 @@ import static org.junit.Assert.assertTru
 /**
  *
  */
-public class HostNameTest {
+public class LookupTest {
 
-    private static final String CONFIG = "log4j-test2.xml";
+    private static final String CONFIG = "log4j-lookup.xml";
     private static Configuration config;
-    private static ListAppender app;
-    private static ListAppender host;
-    private static RollingFileAppender hostFile;
+    private static ConsoleAppender app;
     private static LoggerContext ctx;
 
     @BeforeClass
@@ -60,43 +60,20 @@ public class HostNameTest {
         StatusLogger.getLogger().reset();
     }
 
-    @Before
-    public void before() {
+    @Test
+    public void testHostname() {
         config = ctx.getConfiguration();
         for (final Map.Entry<String, Appender> entry : config.getAppenders().entrySet()) {
-            if (entry.getKey().equals("List")) {
-                app = (ListAppender) entry.getValue();
-            } else if (entry.getKey().equals("HostTest")) {
-                host = (ListAppender) entry.getValue();
-            } else if (entry.getKey().equals("HostFile")) {
-                hostFile = (RollingFileAppender) entry.getValue();
+            if (entry.getKey().equals("console")) {
+                app = (ConsoleAppender) entry.getValue();
             }
         }
-        assertNotNull("No Host FileAppender", hostFile);
-        app.clear();
-        host.clear();
-    }
-
-
-    @Test
-    public void testHostname() {
-        final org.apache.logging.log4j.Logger testLogger = LogManager.getLogger("org.apache.logging.log4j.hosttest");
-        testLogger.debug("Hello, {}", "World");
-        final List<String> msgs = host.getMessages();
-        assertTrue("Incorrect number of events. Expected 1, actual " + msgs.size(), msgs.size() == 1);
-        String expected = NetUtils.getLocalHostname() + Constants.LINE_SEP;
-        assertTrue("Incorrect hostname - expected " + expected + " actual - " + msgs.get(0),
-            msgs.get(0).endsWith(expected));
-        assertNotNull("No Host FileAppender file name", hostFile.getFileName());
-        expected = "target/" + NetUtils.getLocalHostname() + ".log";
-        String name = hostFile.getFileName();
-        assertTrue("Incorrect HostFile FileAppender file name - expected " + expected + " actual - " + name,
-            name.equals(expected));
-        name = hostFile.getFilePattern();
-        assertNotNull("No file pattern", name);
-        expected = "target/" + NetUtils.getLocalHostname() + "-%d{MM-dd-yyyy}-%i.log";
-        assertTrue("Incorrect HostFile FileAppender file pattern - expected " + expected + " actual - " + name,
-            name.equals(expected));
-
+        assertNotNull(app);
+        Layout layout = app.getLayout();
+        assertNotNull("No Layout", layout);
+        assertTrue("Layout is not a PatternLayout", layout instanceof PatternLayout);
+        String pattern = ((PatternLayout) layout).getConversionPattern();
+        assertNotNull("No conversion pattern", pattern);
+        assertTrue("No filters", pattern.contains("org.junit,org.apache.maven,org.eclipse,sun.reflect,java.lang.reflect"));
     }
 }

Added: logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-lookup.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-lookup.xml?rev=1589024&view=auto
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-lookup.xml (added)
+++ logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-lookup.xml Tue Apr 22 06:06:41 2014
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration status="warn">
+  <properties>
+    <property name="filters">org.junit,org.apache.maven,org.eclipse,sun.reflect,java.lang.reflect</property>
+  </properties>
+  <appenders>
+    <console name="console" target="SYSTEM_OUT">
+      <patternLayout pattern="%d{HH:mm:ss,SSS} [%t] %-5level [$${date:yyyyMMdd.HHmmSS}] %logger{1}.%method:%line - %msg%n%rEx{filters(${filters})}" />
+    </console>
+  </appenders>
+  <loggers>
+    <root level="warn">
+      <appenderRef ref="console" />
+    </root>
+  </loggers>
+</configuration>
\ No newline at end of file

Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1589024&r1=1589023&r2=1589024&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Tue Apr 22 06:06:41 2014
@@ -21,6 +21,9 @@
   </properties>
   <body>
     <release version="2.0-rc2" date="2014-MM-DD" description="Bug fixes and enhancements">
+      <action issue="LOG4J2-448" dev="rgoers" type="fix" due-to="X86core">
+        A StringIndexOutOfBounds exception could occur during property substitution.
+      </action>
       <action issue="LOG4J2-597" dev="rgoers" type="fix">
         StatusLogger was not skipping multiple instances of the FQCN class, causing messages from classes in
         the Verbose list to be printed.