This is an automated email from the ASF dual-hosted git repository. pkarwasz pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 37941b6fffe55fce23fb460a13d6fd4ab0a29793 Author: Piotr P. Karwasz <[email protected]> AuthorDate: Sat Oct 29 21:30:16 2022 +0200 Remove dependency on PropertiesUtil from `Strings` The static initializer of `Strings` depends on `PropertiesUtil` to retrieve the system's line separator. This might introduce dangerous recursive dependencies between `Strings`, `PropertiesUtil`, `ServiceRegistry` and `ServiceLoaderUtil`. --- .../src/main/java/org/apache/logging/log4j/util/Strings.java | 3 ++- .../logging/log4j/util3/SystemPropertiesPropertySource.java | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/Strings.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/Strings.java index cc6d38835b..f3f63202e9 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/util/Strings.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/Strings.java @@ -18,6 +18,7 @@ package org.apache.logging.log4j.util; import org.apache.logging.log4j.util3.Chars; import org.apache.logging.log4j.util3.PropertiesUtil; +import org.apache.logging.log4j.util3.SystemPropertiesPropertySource; import java.util.Iterator; import java.util.Locale; @@ -48,7 +49,7 @@ public final class Strings { * OS-dependent line separator, defaults to {@code "\n"} if the system property {@code ""line.separator"} cannot be * read. */ - public static final String LINE_SEPARATOR = PropertiesUtil.getProperties().getStringProperty("line.separator", + public static final String LINE_SEPARATOR = SystemPropertiesPropertySource.getSystemProperty("line.separator", "\n"); private Strings() { diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util3/SystemPropertiesPropertySource.java b/log4j-api/src/main/java/org/apache/logging/log4j/util3/SystemPropertiesPropertySource.java index c3e6b9ee65..69de98c411 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/util3/SystemPropertiesPropertySource.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/util3/SystemPropertiesPropertySource.java @@ -36,6 +36,18 @@ public class SystemPropertiesPropertySource implements PropertySource { private static final int DEFAULT_PRIORITY = 0; private static final String PREFIX = "log4j2."; + /** + * Used by bootstrap code to get system properties without loading PropertiesUtil. + */ + public static String getSystemProperty(final String key, final String defaultValue) { + try { + return System.getProperty(key, defaultValue); + } catch (SecurityException e) { + // Silently ignore the exception + return defaultValue; + } + } + @Override public int getPriority() { return DEFAULT_PRIORITY;
