Andrei Ivanov created LOG4J2-2578:
-------------------------------------

             Summary: RequestContextMappings should ignore private and instance 
fields
                 Key: LOG4J2-2578
                 URL: https://issues.apache.org/jira/browse/LOG4J2-2578
             Project: Log4j 2
          Issue Type: Bug
          Components: Log4j-Audit
    Affects Versions: Log4j-Audit 1.0.1
         Environment: Java 11
            Reporter: Andrei Ivanov


{{RequestContextMappings}} inspects the user defined 
[class|https://github.com/apache/logging-log4j-audit-sample/blob/master/audit-service-war/src/main/java/org/apache/logging/log4j/audit/service/RequestContext.java]
 passed as a constructor parameter, but it checks 
[all|https://github.com/apache/logging-log4j-audit/blob/master/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/request/RequestContextMappings.java#L58]
 fields, instead of just the *public static* ones (at least that's what I 
understand it should do).

In Java 8 the issue is covered by catching an {{IllegalAccessException}} when 
accessing the field value, but in Java 11 this throws a 
{{NullPointerException}} for non-static fields.

The proposed solution would be to replace {{clazz.getDeclaredFields()}} with 
{{clazz.getFields()}}, to obtain only the accessible public fields, and then 
check them to process only the *static* ones.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to