@@ -46,12 +46,6 @@ predicate localTaintStep(DataFlow::Node src, DataFlow::Node sink) {
46
46
* different objects.
47
47
*/
48
48
predicate localAdditionalTaintStep ( DataFlow:: Node src , DataFlow:: Node sink ) {
49
- localAdditionalBasicTaintStep ( src , sink )
50
- or
51
- composedValueAndTaintModelStep ( src , sink )
52
- }
53
-
54
- private predicate localAdditionalBasicTaintStep ( DataFlow:: Node src , DataFlow:: Node sink ) {
55
49
localAdditionalTaintExprStep ( src .asExpr ( ) , sink .asExpr ( ) )
56
50
or
57
51
localAdditionalTaintUpdateStep ( src .asExpr ( ) ,
@@ -67,26 +61,6 @@ private predicate localAdditionalBasicTaintStep(DataFlow::Node src, DataFlow::No
67
61
not FlowSummaryImpl:: Private:: Steps:: summaryLocalStep ( src , sink , true )
68
62
}
69
63
70
- /**
71
- * Holds if an additional step from `src` to `sink` through a call can be inferred from the
72
- * combination of a value-preserving step providing an alias between an input and the output
73
- * and a taint step from `src` to one the aliased nodes. For example, if we know that `f(a, b)` returns
74
- * the exact value of `a` and also propagates taint from `b` to `a`, then we also know that
75
- * the return value is tainted after `f` completes.
76
- */
77
- private predicate composedValueAndTaintModelStep ( ArgumentNode src , DataFlow:: Node sink ) {
78
- exists ( Call call , ArgumentNode valueSource , DataFlow:: PostUpdateNode valueSourcePost |
79
- src .argumentOf ( call , _) and
80
- valueSource .argumentOf ( call , _) and
81
- src != valueSource and
82
- valueSourcePost .getPreUpdateNode ( ) = valueSource and
83
- // in-x -value-> out-y and in-z -taint-> in-x ==> in-z -taint-> out-y
84
- localAdditionalBasicTaintStep ( src , valueSourcePost ) and
85
- DataFlow:: localFlowStep ( valueSource , DataFlow:: exprNode ( call ) ) and
86
- sink = DataFlow:: exprNode ( call )
87
- )
88
- }
89
-
90
64
/**
91
65
* Holds if the additional step from `src` to `sink` should be included in all
92
66
* global taint flow configurations.
0 commit comments