File tree Expand file tree Collapse file tree 4 files changed +15
-0
lines changed
csharp/ql/src/utils/model-generator/internal
java/ql/src/utils/model-generator/internal Expand file tree Collapse file tree 4 files changed +15
-0
lines changed Original file line number Diff line number Diff line change @@ -272,6 +272,8 @@ private class PropagateToSinkConfiguration extends TaintTracking::Configuration
272
272
273
273
override predicate isSink ( DataFlow:: Node sink ) { ExternalFlow:: sinkNode ( sink , _) }
274
274
275
+ override predicate isSanitizer ( DataFlow:: Node node ) { sinkModelSanitizer ( node ) }
276
+
275
277
override DataFlow:: FlowFeature getAFeature ( ) {
276
278
result instanceof DataFlow:: FeatureHasSourceCallContext
277
279
}
Original file line number Diff line number Diff line change @@ -175,6 +175,8 @@ private predicate isRelevantMemberAccess(DataFlow::Node node) {
175
175
)
176
176
}
177
177
178
+ predicate sinkModelSanitizer ( DataFlow:: Node node ) { none ( ) }
179
+
178
180
/**
179
181
* Holds if `source` is an api entrypoint relevant for creating sink models.
180
182
*/
Original file line number Diff line number Diff line change @@ -272,6 +272,8 @@ private class PropagateToSinkConfiguration extends TaintTracking::Configuration
272
272
273
273
override predicate isSink ( DataFlow:: Node sink ) { ExternalFlow:: sinkNode ( sink , _) }
274
274
275
+ override predicate isSanitizer ( DataFlow:: Node node ) { sinkModelSanitizer ( node ) }
276
+
275
277
override DataFlow:: FlowFeature getAFeature ( ) {
276
278
result instanceof DataFlow:: FeatureHasSourceCallContext
277
279
}
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ private import semmle.code.java.dataflow.internal.DataFlowNodes
7
7
private import semmle.code.java.dataflow.internal.DataFlowPrivate
8
8
private import semmle.code.java.dataflow.internal.ContainerFlow as ContainerFlow
9
9
private import semmle.code.java.dataflow.DataFlow as Df
10
+ private import semmle.code.java.dataflow.SSA as Ssa
10
11
private import semmle.code.java.dataflow.TaintTracking as Tt
11
12
import semmle.code.java.dataflow.ExternalFlow as ExternalFlow
12
13
import semmle.code.java.dataflow.internal.DataFlowImplCommon as DataFlowImplCommon
@@ -224,6 +225,14 @@ predicate isOwnInstanceAccessNode(ReturnNode node) {
224
225
node .asExpr ( ) .( J:: ThisAccess ) .isOwnInstanceAccess ( )
225
226
}
226
227
228
+ predicate sinkModelSanitizer ( DataFlow:: Node node ) {
229
+ // exclude variable capture jump steps
230
+ exists ( Ssa:: SsaImplicitInit closure |
231
+ closure .captures ( _) and
232
+ node .asExpr ( ) = closure .getAFirstUse ( )
233
+ )
234
+ }
235
+
227
236
/**
228
237
* Holds if `source` is an api entrypoint relevant for creating sink models.
229
238
*/
You can’t perform that action at this time.
0 commit comments