Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,20 @@
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
import datadog.trace.bootstrap.instrumentation.api.java.lang.ProcessImplInstrumentationHelpers;
import java.io.IOException;
import net.bytebuddy.asm.Advice;

class ProcessImplStartAdvice {
@Advice.OnMethodEnter(suppress = Throwable.class)
public static AgentSpan startSpan(@Advice.Argument(0) final String[] command) throws IOException {
public static AgentSpan beforeStart(@Advice.Argument(0) final String[] command) {
if (!ProcessImplInstrumentationHelpers.ONLINE) {
return null;
}

if (command.length == 0) {
if (command.length == 0 || !AgentTracer.isRegistered()) {
return null;
}

final AgentTracer.TracerAPI tracer = AgentTracer.get();
final AgentSpan span = tracer.startSpan("appsec", "command_execution");
final AgentSpan span = AgentTracer.startSpan("appsec", "command_execution");
span.setSpanType("system");
span.setResourceName(ProcessImplInstrumentationHelpers.determineResource(command));
span.setTag("component", "subprocess");
Expand All @@ -29,7 +27,7 @@ public static AgentSpan startSpan(@Advice.Argument(0) final String[] command) th
}

@Advice.OnMethodExit(suppress = Throwable.class, onThrowable = Throwable.class)
public static void endSpan(
public static void afterStart(
@Advice.Return Process p, @Advice.Enter AgentSpan span, @Advice.Thrown Throwable t) {
if (span == null) {
return;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
package datadog.trace.instrumentation.java.lang;

import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
import datadog.trace.bootstrap.instrumentation.api.java.lang.ProcessImplInstrumentationHelpers;
import java.io.IOException;
import net.bytebuddy.asm.Advice;

class RuntimeExecStringAdvice {
@Advice.OnMethodEnter(suppress = Throwable.class)
public static void beforeExec(@Advice.Argument(0) final String command) throws IOException {
if (command == null) {
return;
public static boolean beforeExec(@Advice.Argument(0) final String command) {
if (command == null || !AgentTracer.isRegistered()) {
return false;
}
ProcessImplInstrumentationHelpers.shiRaspCheck(command);
return true;
}

@Advice.OnMethodExit(suppress = Throwable.class, onThrowable = Throwable.class)
public static void afterExec() {
ProcessImplInstrumentationHelpers.resetCheckShi();
public static void afterExec(@Advice.Enter boolean checking) {
if (checking) {
ProcessImplInstrumentationHelpers.resetCheckShi();
}
}
}