IngyHere created LOG4J2-970:
-------------------------------

             Summary: Bad Mapped Hostname Results in Errors
                 Key: LOG4J2-970
                 URL: https://issues.apache.org/jira/browse/LOG4J2-970
             Project: Log4j 2
          Issue Type: Bug
          Components: Core, Pattern Converters
    Affects Versions: 2.1
            Reporter: IngyHere


Log4J returns errors while parsing PatternLayout in certain situations where 
${map:hostName} is substituted into the pattern. This occurred on a dual-homed 
Linux System with an IPv4/IPv6 dual stack. When running Java 7u60 with Log4J2 
v2.1 I received errors when the hostname call reported back an IPv6 
transitional address with "%3" appended to the end. Log4J2 then reported errors 
when it tried to parse the resulting pattern after substituting the property. 

Explanation: The underlying Java API that retrieves hostname values uses the 
InetAddress class via InetAddress.getLocalHost().getHostName(). Returning a 
single hostname on a multihomed system is inexact and uses one of several Java 
API internal mechanisms that vary. If the returned value contains special 
characters also used to format logging patterns, it can cause an unrecognized 
format specifier error.

Detail: See 
https://git-wip-us.apache.org/repos/asf?p=logging-log4j2.git;a=blob;f=log4j-core/src/main/java/org/apache/logging/log4j/core/util/NetUtils.java
 on line 45 where it collects the information. 

Proposed Fix: Scrub the hostName property (probably a few other properties, 
too) of any protected or special symbols that are interpreted by Log4J to 
output conversions. I'm also considering a situation where a hostname can be 
illegally specified in a hosts file to contain conversions -- can this happen? 

See logs.





--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to