From 37229d8d62198bff31072f2a38e2d57ecdadc483 Mon Sep 17 00:00:00 2001 From: Ceki Gulcu Date: Tue, 10 Nov 2015 19:54:10 +0100 Subject: [PATCH] fix SLF4J-324 --- integration/build.xml | 37 +++++++++++++++++- .../lib/slf4j-simple-1.5.4-SNAPSHOT.jar | Bin 7472 -> 0 bytes integration/src/policy/java-eclipse.policy | 10 +++++ integration/src/policy/java-under-ant.policy | 13 ++++++ .../java/org/slf4j/issues/Issue324Test.java | 17 ++++++++ .../main/java/org/slf4j/LoggerFactory.java | 4 +- .../src/main/java/org/slf4j/helpers/Util.java | 33 +++++++++++++++- 7 files changed, 110 insertions(+), 4 deletions(-) delete mode 100644 integration/lib/slf4j-simple-1.5.4-SNAPSHOT.jar create mode 100644 integration/src/policy/java-eclipse.policy create mode 100644 integration/src/policy/java-under-ant.policy create mode 100644 integration/src/test/java/org/slf4j/issues/Issue324Test.java diff --git a/integration/build.xml b/integration/build.xml index d3a5d5ac..52848ac9 100644 --- a/integration/build.xml +++ b/integration/build.xml @@ -13,6 +13,10 @@ + + + + @@ -103,7 +107,8 @@ testMatch, testMultiBinding, testIncompatibleMultiBinding, - testFuture_16Series"> + testFuture_16Series, + testActiveSecurityManager"> @@ -197,4 +202,34 @@ + + + + + + + + setPathToPolicy_FromTop + + + + + setPathToPolicy_FromInegration + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/integration/lib/slf4j-simple-1.5.4-SNAPSHOT.jar b/integration/lib/slf4j-simple-1.5.4-SNAPSHOT.jar deleted file mode 100644 index ebae7cd077885e72b0ddd92b01c68ee54d527161..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7472 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 autoComputedCallingClass = Util.getCallingClass(); - if (nonMatchingClasses(clazz, autoComputedCallingClass)) { + if (autoComputedCallingClass != null && nonMatchingClasses(clazz, autoComputedCallingClass)) { Util.report(String.format("Detected logger name mismatch. Given name: \"%s\"; computed name: \"%s\".", logger.getName(), autoComputedCallingClass.getName())); Util.report("See " + LOGGER_NAME_MISMATCH_URL + " for an explanation"); diff --git a/slf4j-api/src/main/java/org/slf4j/helpers/Util.java b/slf4j-api/src/main/java/org/slf4j/helpers/Util.java index 91a09837..01a4fb45 100755 --- a/slf4j-api/src/main/java/org/slf4j/helpers/Util.java +++ b/slf4j-api/src/main/java/org/slf4j/helpers/Util.java @@ -35,6 +35,27 @@ public final class Util { private Util() { } + public static String safeGetSystemProperty(String key) { + if (key == null) + throw new IllegalArgumentException("null input"); + + String result = null; + try { + result = System.getProperty(key); + } catch (java.lang.SecurityException sm) { + ; // ignore + } + return result; + } + + public static boolean safeGetBooleanSystemProperty(String key) { + String value = safeGetSystemProperty(key); + if (value == null) + return false; + else + return value.equalsIgnoreCase("true"); + } + /** * In order to call {@link SecurityManager#getClassContext()}, which is a * protected method, we add this wrapper which allows the method to be visible @@ -46,7 +67,15 @@ public final class Util { } } - private static final ClassContextSecurityManager SECURITY_MANAGER = new ClassContextSecurityManager(); + private static final ClassContextSecurityManager SECURITY_MANAGER = safeCreateSecurityManager(); + + private static ClassContextSecurityManager safeCreateSecurityManager() { + try { + return new ClassContextSecurityManager(); + } catch (java.lang.SecurityException sm) { + return null; + } + } /** * Returns the name of the class which called the invoking method. @@ -54,6 +83,8 @@ public final class Util { * @return the name of the class which called the invoking method. */ public static Class getCallingClass() { + if(SECURITY_MANAGER == null) + return null; Class[] trace = SECURITY_MANAGER.getClassContext(); String thisClassName = Util.class.getName();