Skip to content

Commit 7811a61

Browse files
committed
C#: Fix perf.
1 parent 8f9f125 commit 7811a61

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,12 +133,14 @@ AssignableDefinitionNode assignableDefinitionNode(AssignableDefinition def) {
133133

134134
predicate localFlowStep = localFlowStepImpl/2;
135135

136+
private predicate localFlowStepPlus(Node source, Node sink) = fastTC(localFlowStep/2)(source, sink)
137+
136138
/**
137139
* Holds if data flows from `source` to `sink` in zero or more local
138140
* (intra-procedural) steps.
139141
*/
140142
pragma[inline]
141-
predicate localFlow(Node source, Node sink) { localFlowStep*(source, sink) }
143+
predicate localFlow(Node source, Node sink) { localFlowStepPlus(source, sink) or source = sink }
142144

143145
/**
144146
* Holds if data can flow from `e1` to `e2` in zero or more

csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPublic.qll

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
private import csharp
22
private import TaintTrackingPrivate
33

4+
private predicate localTaintStepPlus(DataFlow::Node source, DataFlow::Node sink) =
5+
fastTC(localTaintStep/2)(source, sink)
6+
47
/**
58
* Holds if taint propagates from `source` to `sink` in zero or more local
69
* (intra-procedural) steps.
710
*/
811
pragma[inline]
9-
predicate localTaint(DataFlow::Node source, DataFlow::Node sink) { localTaintStep*(source, sink) }
12+
predicate localTaint(DataFlow::Node source, DataFlow::Node sink) {
13+
localTaintStepPlus(source, sink) or source = sink
14+
}
1015

1116
/**
1217
* Holds if taint can flow from `e1` to `e2` in zero or more

0 commit comments

Comments
 (0)