Skip to content

Commit 8844be3

Browse files
committed
feat(crashtracking): Redact args after agentlib and javaagent
1 parent 90ac496 commit 8844be3

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/RuntimeArgs.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,13 @@ private static List<String> filterArgs(List<String> args) {
6262
if (arg == null || arg.isEmpty()) {
6363
continue;
6464
}
65-
if (isAllowedSystemProperty(arg)
66-
|| arg.startsWith("-javaagent:")
67-
|| arg.startsWith("-agentlib:")
68-
|| arg.startsWith("-X")
69-
|| isModuleOrNativeAccessOption(arg)) {
65+
if (isAllowedSystemProperty(arg)) {
66+
filtered.add(arg);
67+
} else if (arg.startsWith("-javaagent:") || arg.startsWith("-agentlib:")) {
68+
// Redact options after '=' — only the jar path / library name is sent
69+
int eq = arg.indexOf('=', arg.indexOf(':') + 1);
70+
filtered.add(eq >= 0 ? arg.substring(0, eq) + "=REDACTED" : arg);
71+
} else if (arg.startsWith("-X") || isModuleOrNativeAccessOption(arg)) {
7072
filtered.add(arg);
7173
}
7274
}

dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/parsers/RuntimeArgsTest.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,16 @@ public void testParseVmArgsHotspotArgs(String resource, boolean isIncluded, Stri
4343
}
4444

4545
@TableTest({
46-
"scenario | raw | expectedIncluded ",
47-
"quoted onerror unix | -XX:OnError=\"gcore %p;gdb -p %p\" | -XX:OnError=gcore %p;gdb -p %p ",
48-
"quoted onerror windows | -XX:OnError=\"userdump.exe %p\" | -XX:OnError=userdump.exe %p ",
49-
"quoted module path | --module-path \"/opt/app-modules:/opt/other-modules\" | --module-path /opt/app-modules:/opt/other-modules"
46+
"scenario | raw | expectedIncluded ",
47+
"quoted onerror unix | -XX:OnError=\"gcore %p;gdb -p %p\" | -XX:OnError=gcore %p;gdb -p %p ",
48+
"quoted onerror windows | -XX:OnError=\"userdump.exe %p\" | -XX:OnError=userdump.exe %p ",
49+
"quoted module path | --module-path \"/opt/app-modules:/opt/other-modules\" | --module-path /opt/app-modules:/opt/other-modules",
50+
"javaagent without options | -javaagent:/opt/dd-java-agent.jar | -javaagent:/opt/dd-java-agent.jar ",
51+
"javaagent options redacted | -javaagent:/opt/dd-java-agent.jar=apikey=deadbeef | -javaagent:/opt/dd-java-agent.jar=REDACTED ",
52+
"agentlib without options | -agentlib:jdwp | -agentlib:jdwp ",
53+
"agentlib options redacted | -agentlib:jdwp=transport=dt_socket,server=y | -agentlib:jdwp=REDACTED "
5054
})
51-
public void testParseVmArgsHandlesQuotedArguments(String raw, String expectedIncluded) {
55+
public void testParseVmArgsHandlesArgNormalization(String raw, String expectedIncluded) {
5256
List<String> runtimeArgs = RuntimeArgs.parseVmArgs(raw);
5357

5458
assertThat(runtimeArgs).isNotNull().contains(expectedIncluded);
@@ -60,7 +64,7 @@ public void testParseVmArgsHandlesQuotedArguments(String raw, String expectedInc
6064
"sun token excluded | -Dsun.auth.token=abc123 | false | -Dsun.auth.token=abc123 ",
6165
"dd api key excluded | -Ddd.api-key=deadbeef | false | -Ddd.api-key=deadbeef ",
6266
"dd app key excluded | -Ddd.app-key=deadbeef | false | -Ddd.app-key=deadbeef ",
63-
"dd application key excluded | -Ddd.application-key=deadbeef | false | -Ddd.application-key=deadbeef ",
67+
"dd application key excluded | -Ddd.application-key=deadbeef | false | -Ddd.application-key=deadbeef ",
6468
"java logging kept | -Djava.util.logging.config.file=x | true | -Djava.util.logging.config.file=x",
6569
"osgi install kept | -Dosgi.install.area=/opt/app | true | -Dosgi.install.area=/opt/app "
6670
})

0 commit comments

Comments
 (0)