Skip to content

Commit b84c036

Browse files
author
Benjamin Muskalla
committed
Prefer types to TargetAPI
1 parent bca6cec commit b84c036

File tree

4 files changed

+19
-19
lines changed

4 files changed

+19
-19
lines changed

java/ql/src/utils/model-generator/CaptureSinkModels.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ string asInputArgument(DataFlow::Node source) {
4343
result = "Argument[-1]"
4444
}
4545

46-
string captureSink(Callable api) {
46+
string captureSink(TargetAPI api) {
4747
exists(DataFlow::Node src, DataFlow::Node sink, PropagateToSinkConfiguration config, string kind |
4848
config.hasFlow(src, sink) and
4949
sinkNode(sink, kind) and

java/ql/src/utils/model-generator/CaptureSourceModels.ql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class FromSourceConfiguration extends TaintTracking::Configuration {
2121
override predicate isSource(DataFlow::Node source) { sourceNode(source, _) }
2222

2323
override predicate isSink(DataFlow::Node sink) {
24-
exists(Callable c |
24+
exists(TargetAPI c |
2525
sink instanceof ReturnNode and
2626
sink.getEnclosingCallable() = c and
2727
c.isPublic() and
@@ -34,7 +34,7 @@ class FromSourceConfiguration extends TaintTracking::Configuration {
3434
}
3535
}
3636

37-
string captureSource(Callable api) {
37+
string captureSource(TargetAPI api) {
3838
exists(DataFlow::Node source, DataFlow::Node sink, FromSourceConfiguration config, string kind |
3939
config.hasFlow(source, sink) and
4040
sourceNode(source, kind) and

java/ql/src/utils/model-generator/CaptureSummaryModels.ql

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import semmle.code.java.dataflow.internal.DataFlowPrivate
1212
import semmle.code.java.dataflow.InstanceAccess
1313
import ModelGeneratorUtils
1414

15-
string captureFlow(Callable api) {
15+
string captureFlow(TargetAPI api) {
1616
result = captureQualifierFlow(api) or
1717
result = captureParameterFlowToReturnValue(api) or
1818
result = captureFieldFlowIn(api) or
@@ -32,7 +32,7 @@ string captureFlow(Callable api) {
3232
* }
3333
* ```
3434
*/
35-
string captureQualifierFlow(Callable api) {
35+
string captureQualifierFlow(TargetAPI api) {
3636
exists(ReturnStmt rtn |
3737
rtn.getEnclosingCallable() = api and
3838
rtn.getResult().(ThisAccess).isOwnInstanceAccess()
@@ -92,7 +92,7 @@ class FieldToReturnConfig extends TaintTracking::Configuration {
9292
* p;Foo;true;putsTaintIntoParameter;(List);Argument[-1];Argument[0];taint
9393
* ```
9494
*/
95-
string captureFieldFlow(Callable api) {
95+
string captureFieldFlow(TargetAPI api) {
9696
exists(FieldToReturnConfig config, ReturnNodeExt returnNodeExt |
9797
config.hasFlow(_, returnNodeExt) and
9898
returnNodeExt.getEnclosingCallable() = api and
@@ -107,7 +107,7 @@ string captureFieldFlow(Callable api) {
107107
)
108108
}
109109

110-
string asOutput(Callable api, ReturnNodeExt node) {
110+
string asOutput(TargetAPI api, ReturnNodeExt node) {
111111
if node.getKind() instanceof ValueReturnKind
112112
then result = "ReturnValue"
113113
else
@@ -164,7 +164,7 @@ private predicate thisAccess(DataFlow::Node n) {
164164
* Captured Model:
165165
* `p;Foo;true;doSomething;(String);Argument[0];Argument[-1];taint`
166166
*/
167-
string captureFieldFlowIn(Callable api) {
167+
string captureFieldFlowIn(TargetAPI api) {
168168
exists(DataFlow::Node source, ParameterToFieldConfig config |
169169
not api.isStatic() and
170170
config.hasFlow(source, _) and
@@ -179,7 +179,7 @@ class ParameterToReturnValueTaintConfig extends TaintTracking::Configuration {
179179
ParameterToReturnValueTaintConfig() { this = "ParameterToReturnValueTaintConfig" }
180180

181181
override predicate isSource(DataFlow::Node source) {
182-
exists(Callable api |
182+
exists(TargetAPI api |
183183
source instanceof DataFlow::ParameterNode and
184184
api = source.asParameter().getCallable() and
185185
isRelevantType(api.getReturnType()) and
@@ -221,7 +221,7 @@ predicate paramFlowToReturnValueExists(Parameter p) {
221221
* p;Foo;true;returnData;;Argument[0];ReturnValue;taint
222222
* ```
223223
*/
224-
string captureParameterFlowToReturnValue(Callable api) {
224+
string captureParameterFlowToReturnValue(TargetAPI api) {
225225
exists(Parameter p |
226226
p = api.getAParameter() and
227227
paramFlowToReturnValueExists(p)
@@ -246,7 +246,7 @@ string captureParameterFlowToReturnValue(Callable api) {
246246
* p;Foo;true;addToList;;Argument[0];Argument[1];taint
247247
* ```
248248
*/
249-
string captureParameterToParameterFlow(Callable api) {
249+
string captureParameterToParameterFlow(TargetAPI api) {
250250
exists(DataFlow::ParameterNode source, DataFlow::PostUpdateNode sink |
251251
source.getEnclosingCallable() = api and
252252
sink.getPreUpdateNode().asExpr() = api.getAParameter().getAnAccess() and

java/ql/src/utils/model-generator/ModelGeneratorUtils.qll

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,37 +55,37 @@ private predicate isJdkInternal(CompilationUnit cu) {
5555
}
5656

5757
bindingset[input, output]
58-
string asTaintModel(Callable api, string input, string output) {
58+
string asTaintModel(TargetAPI api, string input, string output) {
5959
result = asSummaryModel(api, input, output, "taint")
6060
}
6161

6262
bindingset[input, output]
63-
string asValueModel(Callable api, string input, string output) {
63+
string asValueModel(TargetAPI api, string input, string output) {
6464
result = asSummaryModel(api, input, output, "value")
6565
}
6666

6767
bindingset[input, output, kind]
68-
string asSummaryModel(Callable api, string input, string output, string kind) {
68+
string asSummaryModel(TargetAPI api, string input, string output, string kind) {
6969
result =
7070
asPartialModel(api) + input + ";" //
7171
+ output + ";" //
7272
+ kind
7373
}
7474

7575
bindingset[input, kind]
76-
string asSinkModel(Callable api, string input, string kind) {
76+
string asSinkModel(TargetAPI api, string input, string kind) {
7777
result = asPartialModel(api) + input + ";" + kind
7878
}
7979

8080
bindingset[output, kind]
81-
string asSourceModel(Callable api, string output, string kind) {
81+
string asSourceModel(TargetAPI api, string output, string kind) {
8282
result = asPartialModel(api) + output + ";" + kind
8383
}
8484

8585
/**
8686
* Computes the first 6 columns for CSV rows.
8787
*/
88-
private string asPartialModel(Callable api) {
88+
private string asPartialModel(TargetAPI api) {
8989
result =
9090
typeAsSummaryModel(api) + ";" //
9191
+ isExtensible(bestTypeForModel(api)) + ";" //
@@ -98,9 +98,9 @@ private string asPartialModel(Callable api) {
9898
* Returns the appropriate type name for the model. Either the type
9999
* declaring the method or the supertype introducing the method.
100100
*/
101-
private string typeAsSummaryModel(Callable api) { result = typeAsModel(bestTypeForModel(api)) }
101+
private string typeAsSummaryModel(TargetAPI api) { result = typeAsModel(bestTypeForModel(api)) }
102102

103-
private RefType bestTypeForModel(Callable api) {
103+
private RefType bestTypeForModel(TargetAPI api) {
104104
if exists(superImpl(api))
105105
then superImpl(api).fromSource() and result = superImpl(api).getDeclaringType()
106106
else result = api.getDeclaringType()

0 commit comments

Comments
 (0)