Skip to content

Commit 021fd14

Browse files
committed
Java: Add some dispatch examples to the external flow step test.
1 parent 43b52a0 commit 021fd14

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed

java/ql/test/library-tests/dataflow/external-models/C.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,24 @@ void fooLibrary() {
5656
lib.apiStepArgQualGeneratedIgnored(arg1);
5757
}
5858

59+
void fooPossibleLibraryDispatch(Library lib) {
60+
Object arg1 = new Object();
61+
62+
lib.id(arg1);
63+
}
64+
65+
void fooExplicitDispatch() {
66+
Object arg1 = new Object();
67+
68+
MyLibrary lib = new MyLibrary();
69+
70+
lib.id(arg1);
71+
}
72+
73+
void fooGeneric(MyGenericLibrary<String> lib) {
74+
lib.get();
75+
}
76+
5977
Object stepArgRes(Object x) {
6078
return null;
6179
}
@@ -73,4 +91,18 @@ void stepQualArg(Object out) {}
7391
Object stepArgResGenerated(Object x) {
7492
return null;
7593
}
94+
95+
class MyLibrary extends Library {
96+
@Override
97+
// Bad implementation of the id function.
98+
public Object id(Object x) {
99+
return null;
100+
}
101+
}
102+
103+
public class MyGenericLibrary<T> {
104+
public T get() {
105+
return null;
106+
}
107+
}
76108
}

java/ql/test/library-tests/dataflow/external-models/steps.ext.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ extensions:
99
- ["my.qltest", "C", False, "stepQualRes", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"]
1010
- ["my.qltest", "C", False, "stepQualArg", "(Object)", "", "Argument[this]", "Argument[0]", "taint", "manual"]
1111
- ["my.qltest", "C", False, "stepArgResGenerated", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
12+
- ["my.qltest", "C$MyGenericLibrary", True, "get", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
1213
- ["my.qltest.external", "Library", False, "apiStepArgResGenerated", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
1314
- ["my.qltest.external", "Library", False, "apiStepArgResGeneratedIgnored", "(Object,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
1415
- ["my.qltest.external", "Library", False, "apiStepArgResGeneratedIgnored", "(Object,Object)", "", "Argument[1]", "ReturnValue", "taint", "manual"]
1516
- ["my.qltest.external", "Library", False, "apiStepArgQualGenerated", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
1617
- ["my.qltest.external", "Library", False, "apiStepArgQualGeneratedIgnored", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
18+
- ["my.qltest.external", "Library", False, "id", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
1719
- addsTo:
1820
pack: codeql/java-all
1921
extensible: neutralModel

java/ql/test/library-tests/dataflow/external-models/stubs/Library.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,8 @@ public Object apiStepArgQualGenerated(Object x) {
1616
public Object apiStepArgQualGeneratedIgnored(Object x) {
1717
return null;
1818
}
19+
20+
public Object id(Object x) {
21+
return null;
22+
}
1923
}

0 commit comments

Comments
 (0)