You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2022/02/09 15:36:18 UTC

[logging-log4j2] 04/04: Possible NullPointerException in MongoDb4DocumentObject, MongoDbDocumentObject, DefaultNoSqlObject.

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 57cfe28541d418fa482b2ed75c32ea152fb03655
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Feb 9 10:36:08 2022 -0500

    Possible NullPointerException in MongoDb4DocumentObject,
    MongoDbDocumentObject, DefaultNoSqlObject.
---
 .../log4j/core/appender/nosql/DefaultNoSqlObject.java | 19 +++++++++++--------
 .../logging/log4j/mongodb3/MongoDbDocumentObject.java |  6 +++---
 .../log4j/mongodb4/MongoDb4DocumentObject.java        |  6 +++---
 src/changes/changes.xml                               |  3 +++
 4 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/nosql/DefaultNoSqlObject.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/nosql/DefaultNoSqlObject.java
index debe9e5..8020f3a 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/nosql/DefaultNoSqlObject.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/nosql/DefaultNoSqlObject.java
@@ -45,22 +45,25 @@ public class DefaultNoSqlObject implements NoSqlObject<Map<String, Object>> {
 
     @Override
     public void set(final String field, final NoSqlObject<Map<String, Object>> value) {
-        this.map.put(field, value.unwrap());
+        this.map.put(field, value != null ? value.unwrap() : null);
     }
 
     @Override
     public void set(final String field, final Object[] values) {
-        this.map.put(field, Arrays.asList(values));
+        this.map.put(field, values != null ? Arrays.asList(values) : null);
     }
 
     @Override
     public void set(final String field, final NoSqlObject<Map<String, Object>>[] values) {
-        final List<Map<String, Object>> list = new ArrayList<>(values.length);
-        for (final NoSqlObject<Map<String, Object>> value : values) {
-            list.add(value.unwrap());
-        }
-        this.map.put(field, list);
-    }
+        if (values == null) {
+            this.map.put(field, null);
+        } else {
+            final List<Map<String, Object>> list = new ArrayList<>(values.length);
+            for (final NoSqlObject<Map<String, Object>> value : values) {
+                list.add(value.unwrap());
+            }
+            this.map.put(field, list);
+        }}
 
     @Override
     public Map<String, Object> unwrap() {
diff --git a/log4j-mongodb3/src/main/java/org/apache/logging/log4j/mongodb3/MongoDbDocumentObject.java b/log4j-mongodb3/src/main/java/org/apache/logging/log4j/mongodb3/MongoDbDocumentObject.java
index 020c676..f9a1d58 100644
--- a/log4j-mongodb3/src/main/java/org/apache/logging/log4j/mongodb3/MongoDbDocumentObject.java
+++ b/log4j-mongodb3/src/main/java/org/apache/logging/log4j/mongodb3/MongoDbDocumentObject.java
@@ -37,12 +37,12 @@ public final class MongoDbDocumentObject implements NoSqlObject<Document> {
 
     @Override
     public void set(final String field, final NoSqlObject<Document> value) {
-        this.document.append(field, value.unwrap());
+        this.document.append(field, value != null ? value.unwrap() : null);
     }
 
     @Override
     public void set(final String field, final NoSqlObject<Document>[] values) {
-        this.document.append(field, Arrays.asList(values));
+        this.document.append(field, values != null ? Arrays.asList(values) : null);
     }
 
     @Override
@@ -52,7 +52,7 @@ public final class MongoDbDocumentObject implements NoSqlObject<Document> {
 
     @Override
     public void set(final String field, final Object[] values) {
-        this.document.append(field, Arrays.asList(values));
+        this.document.append(field, values != null ? Arrays.asList(values) : null);
     }
 
     @Override
diff --git a/log4j-mongodb4/src/main/java/org/apache/logging/log4j/mongodb4/MongoDb4DocumentObject.java b/log4j-mongodb4/src/main/java/org/apache/logging/log4j/mongodb4/MongoDb4DocumentObject.java
index 63c3fae..4d81bb5 100644
--- a/log4j-mongodb4/src/main/java/org/apache/logging/log4j/mongodb4/MongoDb4DocumentObject.java
+++ b/log4j-mongodb4/src/main/java/org/apache/logging/log4j/mongodb4/MongoDb4DocumentObject.java
@@ -37,12 +37,12 @@ public final class MongoDb4DocumentObject implements NoSqlObject<Document> {
 
     @Override
     public void set(final String field, final NoSqlObject<Document> value) {
-        this.document.append(field, value.unwrap());
+        this.document.append(field, value != null ? value.unwrap() : null);
     }
 
     @Override
     public void set(final String field, final NoSqlObject<Document>[] values) {
-        this.document.append(field, Arrays.asList(values));
+        this.document.append(field, values != null ? Arrays.asList(values) : null);
     }
 
     @Override
@@ -52,7 +52,7 @@ public final class MongoDb4DocumentObject implements NoSqlObject<Document> {
 
     @Override
     public void set(final String field, final Object[] values) {
-        this.document.append(field, Arrays.asList(values));
+        this.document.append(field, values != null ? Arrays.asList(values) : null);
     }
 
     @Override
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 8300101..3cd72ec 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -211,6 +211,9 @@
       <action issue="LOG4J2-3392" dev="ggregory" type="fix" due-to="Gary Gregory, Omer U">
         AppenderLoggingException logging any exception to a MongoDB Appender.
       </action>
+      <action issue="LOG4J2-3392" dev="ggregory" type="fix" due-to="Gary Gregory">
+        Possible NullPointerException in MongoDb4DocumentObject, MongoDbDocumentObject, DefaultNoSqlObject.
+      </action>
       <!-- ADD -->
       <action issue="LOG4J2-2486" dev="rgoers" type="add">
         Require log4j2.Script.enableLanguages to be specified to enable scripting for specific languages.