Skip to content

Commit 3ec5d83

Browse files
committed
fix muzzle and check previous latest version
1 parent 5dc237b commit 3ec5d83

File tree

6 files changed

+57
-12
lines changed

6 files changed

+57
-12
lines changed

dd-java-agent/instrumentation/org-json/build.gradle

+15-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,25 @@
11
muzzle {
22
pass {
3+
name = 'all'
34
group = 'org.json'
45
module = 'json'
56
versions = '[20070829, ]'
67
assertInverse = true
78
}
9+
pass {
10+
name = 'before_20241224'
11+
group = 'org.json'
12+
module = 'json'
13+
versions = '[20070829, 20241224)'
14+
assertInverse = true
15+
}
16+
pass {
17+
name = 'after_20241224'
18+
group = 'org.json'
19+
module = 'json'
20+
versions = '[20241224, ]'
21+
assertInverse = true
22+
}
823
}
924

1025
apply from: "$rootDir/gradle/java.gradle"
@@ -18,6 +33,5 @@ dependencies {
1833
testRuntimeOnly project(':dd-java-agent:instrumentation:iast-instrumenter')
1934
testRuntimeOnly project(':dd-java-agent:instrumentation:java-io') //Needed for Reader
2035

21-
//FIXME: ASM
2236
latestDepTestImplementation group: 'org.json', name: 'json', version: '+'
2337
}

dd-java-agent/instrumentation/org-json/src/main/java/datadog/trace/instrumentation/json/JSONArrayInstrumentation.java

+5
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ public JSONArrayInstrumentation() {
2424
super("org-json");
2525
}
2626

27+
@Override
28+
public String muzzleDirective() {
29+
return "all";
30+
}
31+
2732
@Override
2833
public String instrumentedType() {
2934
return "org.json.JSONArray";

dd-java-agent/instrumentation/org-json/src/main/java/datadog/trace/instrumentation/json/JSONCookieInstrumentation.java

+5
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ public JSONCookieInstrumentation() {
1919
super("org-json");
2020
}
2121

22+
@Override
23+
public String muzzleDirective() {
24+
return "all";
25+
}
26+
2227
@Override
2328
public String instrumentedType() {
2429
return "org.json.Cookie";
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,23 @@
2020
import net.bytebuddy.matcher.ElementMatcher;
2121

2222
@AutoService(InstrumenterModule.class)
23-
public class JSONObjectAfter20250107Instrumentation extends InstrumenterModule.Iast
23+
public class JSONObject20241224Instrumentation extends InstrumenterModule.Iast
2424
implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice {
25-
public JSONObjectAfter20250107Instrumentation() {
25+
public JSONObject20241224Instrumentation() {
2626
super("org-json");
2727
}
2828

29-
// Avoid matching servlet 3 which has its own instrumentation
30-
static final ElementMatcher.Junction<ClassLoader> AFTER_20250107 =
29+
static final ElementMatcher.Junction<ClassLoader> AFTER_20241224 =
3130
hasClassNamed("org.json.StringBuilderWriter");
3231

32+
@Override
33+
public String muzzleDirective() {
34+
return "after_20241224";
35+
}
36+
3337
@Override
3438
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
35-
return AFTER_20250107;
39+
return AFTER_20241224;
3640
}
3741

3842
@Override
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
88
import static net.bytebuddy.matcher.ElementMatchers.not;
99
import static net.bytebuddy.matcher.ElementMatchers.returns;
10+
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
1011
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
1112

1213
import com.google.auto.service.AutoService;
@@ -15,23 +16,28 @@
1516
import datadog.trace.api.iast.InstrumentationBridge;
1617
import datadog.trace.api.iast.Propagation;
1718
import datadog.trace.api.iast.propagation.PropagationModule;
19+
import java.util.Map;
1820
import net.bytebuddy.asm.Advice;
1921
import net.bytebuddy.matcher.ElementMatcher;
2022

2123
@AutoService(InstrumenterModule.class)
22-
public class JSONObjectBefore20250107Instrumentation extends InstrumenterModule.Iast
24+
public class JSONObjectInstrumentation extends InstrumenterModule.Iast
2325
implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice {
24-
public JSONObjectBefore20250107Instrumentation() {
26+
public JSONObjectInstrumentation() {
2527
super("org-json");
2628
}
2729

28-
// Avoid matching servlet 3 which has its own instrumentation
29-
static final ElementMatcher.Junction<ClassLoader> BEFORE_20250107 =
30+
static final ElementMatcher.Junction<ClassLoader> BEFORE_20241224 =
3031
not(hasClassNamed("org.json.StringBuilderWriter"));
3132

3233
@Override
3334
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
34-
return BEFORE_20250107;
35+
return BEFORE_20241224;
36+
}
37+
38+
@Override
39+
public String muzzleDirective() {
40+
return "before_20241224";
3541
}
3642

3743
@Override
@@ -41,8 +47,14 @@ public String instrumentedType() {
4147

4248
@Override
4349
public void methodAdvice(MethodTransformer transformer) {
50+
// public JSONObject(JSONTokener x)
51+
transformer.applyAdvice(
52+
isConstructor().and(takesArguments(1)).and(takesArgument(0, named("org.json.JSONTokener"))),
53+
getClass().getName() + "$ConstructorAdvice");
54+
// private JSONObject(Map<?, ?> m)
4455
transformer.applyAdvice(
45-
isConstructor().and(takesArguments(1)), getClass().getName() + "$ConstructorAdvice");
56+
isConstructor().and(takesArguments(1)).and(takesArgument(0, Map.class)),
57+
getClass().getName() + "$ConstructorAdvice");
4658
transformer.applyAdvice(
4759
isMethod()
4860
.and(isPublic())

dd-java-agent/instrumentation/org-json/src/main/java/datadog/trace/instrumentation/json/JSONTokenerInstrumentation.java

+5
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ public String instrumentedType() {
2525
return "org.json.JSONTokener";
2626
}
2727

28+
@Override
29+
public String muzzleDirective() {
30+
return "all";
31+
}
32+
2833
@Override
2934
public void methodAdvice(MethodTransformer transformer) {
3035
transformer.applyAdvice(

0 commit comments

Comments
 (0)