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
272272
273273 override predicate isSink ( DataFlow:: Node sink ) { ExternalFlow:: sinkNode ( sink , _) }
274274
275+ override predicate isSanitizer ( DataFlow:: Node node ) { sinkModelSanitizer ( node ) }
276+
275277 override DataFlow:: FlowFeature getAFeature ( ) {
276278 result instanceof DataFlow:: FeatureHasSourceCallContext
277279 }
Original file line number Diff line number Diff line change @@ -175,6 +175,8 @@ private predicate isRelevantMemberAccess(DataFlow::Node node) {
175175 )
176176}
177177
178+ predicate sinkModelSanitizer ( DataFlow:: Node node ) { none ( ) }
179+
178180/**
179181 * Holds if `source` is an api entrypoint relevant for creating sink models.
180182 */
Original file line number Diff line number Diff line change @@ -272,6 +272,8 @@ private class PropagateToSinkConfiguration extends TaintTracking::Configuration
272272
273273 override predicate isSink ( DataFlow:: Node sink ) { ExternalFlow:: sinkNode ( sink , _) }
274274
275+ override predicate isSanitizer ( DataFlow:: Node node ) { sinkModelSanitizer ( node ) }
276+
275277 override DataFlow:: FlowFeature getAFeature ( ) {
276278 result instanceof DataFlow:: FeatureHasSourceCallContext
277279 }
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ private import semmle.code.java.dataflow.internal.DataFlowNodes
77private import semmle.code.java.dataflow.internal.DataFlowPrivate
88private import semmle.code.java.dataflow.internal.ContainerFlow as ContainerFlow
99private import semmle.code.java.dataflow.DataFlow as Df
10+ private import semmle.code.java.dataflow.SSA as Ssa
1011private import semmle.code.java.dataflow.TaintTracking as Tt
1112import semmle.code.java.dataflow.ExternalFlow as ExternalFlow
1213import semmle.code.java.dataflow.internal.DataFlowImplCommon as DataFlowImplCommon
@@ -224,6 +225,14 @@ predicate isOwnInstanceAccessNode(ReturnNode node) {
224225 node .asExpr ( ) .( J:: ThisAccess ) .isOwnInstanceAccess ( )
225226}
226227
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+
227236/**
228237 * Holds if `source` is an api entrypoint relevant for creating sink models.
229238 */
You can’t perform that action at this time.
0 commit comments