From d099b5f92d0acd701600f865bb2ed4c4acb55dda Mon Sep 17 00:00:00 2001 From: Stuart McCulloch Date: Wed, 12 Mar 2025 15:37:21 +0000 Subject: [PATCH 1/2] Make the default config sources more robust when a security manager is installed If we don't have permission to access system properties or the environment then fall back to defaults. --- .../bootstrap/config/provider/EnvironmentConfigSource.java | 6 +++++- .../config/provider/SystemPropertiesConfigSource.java | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/config/provider/EnvironmentConfigSource.java b/internal-api/src/main/java/datadog/trace/bootstrap/config/provider/EnvironmentConfigSource.java index 6719693fd86..ffbdf6f77f2 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/config/provider/EnvironmentConfigSource.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/config/provider/EnvironmentConfigSource.java @@ -8,7 +8,11 @@ final class EnvironmentConfigSource extends ConfigProvider.Source { @Override protected String get(String key) { - return System.getenv(propertyNameToEnvironmentVariableName(key)); + try { + return System.getenv(propertyNameToEnvironmentVariableName(key)); + } catch (SecurityException e) { + return null; + } } @Override diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/config/provider/SystemPropertiesConfigSource.java b/internal-api/src/main/java/datadog/trace/bootstrap/config/provider/SystemPropertiesConfigSource.java index 08aaf487027..a0d561b5a37 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/config/provider/SystemPropertiesConfigSource.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/config/provider/SystemPropertiesConfigSource.java @@ -8,7 +8,11 @@ public final class SystemPropertiesConfigSource extends ConfigProvider.Source { @Override protected String get(String key) { - return System.getProperty(propertyNameToSystemPropertyName(key)); + try { + return System.getProperty(propertyNameToSystemPropertyName(key)); + } catch (SecurityException e) { + return null; + } } @Override From 640cddb347b939178b001dea2bec23a1f6158ac6 Mon Sep 17 00:00:00 2001 From: Stuart McCulloch Date: Wed, 12 Mar 2025 16:20:57 +0000 Subject: [PATCH 2/2] Exclude from instruction coverage as hard to test security exception case in this module --- internal-api/build.gradle | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/internal-api/build.gradle b/internal-api/build.gradle index 001b0adfd4a..947fe5d0ea8 100644 --- a/internal-api/build.gradle +++ b/internal-api/build.gradle @@ -221,7 +221,11 @@ excludedClassesBranchCoverage = [ 'datadog.trace.util.stacktrace.HotSpotStackWalker', 'datadog.trace.util.stacktrace.StackWalkerFactory' ] -excludedClassesInstructionCoverage = ['datadog.trace.util.stacktrace.StackWalkerFactory'] +excludedClassesInstructionCoverage = [ + 'datadog.trace.bootstrap.config.provider.EnvironmentConfigSource', + 'datadog.trace.bootstrap.config.provider.SystemPropertiesConfigSource', + 'datadog.trace.util.stacktrace.StackWalkerFactory' +] compileTestJava.dependsOn 'generateTestClassNameTries'