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 <[email protected]> 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.
