Skip to content

Commit 72648d4

Browse files
Jami CogswellJami Cogswell
Jami Cogswell
authored and
Jami Cogswell
committed
Convert Forwards/BackwardsDataFlow to new dataflow API
1 parent 9f6fb89 commit 72648d4

File tree

2 files changed

+17
-19
lines changed

2 files changed

+17
-19
lines changed

javascript/src/audit/templates/BackwardsDataFlow.ql

+8-9
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,22 @@
99
*/
1010

1111
import javascript
12-
import DataFlow::PathGraph
13-
import semmle.javascript.explore.BackwardDataFlow
12+
import BackwardDataFlow::PathGraph
1413

15-
class BackwardDataFlowConfig extends TaintTracking::Configuration {
16-
BackwardDataFlowConfig() { this = "BackwardDataFlowConfig" }
14+
module BackwardDataFlowConfig implements DataFlow::ConfigSig {
15+
predicate isSource(DataFlow::Node source) { any() }
1716

18-
// `isSource` is ignored when `semmle.javascript.explore.BackwardDataFlow` is imported.
19-
20-
override predicate isSink(DataFlow::Node sink) {
17+
predicate isSink(DataFlow::Node sink) {
2118
// Define the sink to run the backwards dataflow from. Eg:
2219
// sink = API::moduleImport("module").getMember("method").getParameter(0).asSink()
2320
none()
2421
}
2522
}
23+
24+
module BackwardDataFlow = TaintTracking::Global<BackwardDataFlowConfig>;
2625

27-
from BackwardDataFlowConfig cfg, DataFlow::PathNode source, DataFlow::PathNode sink
28-
where cfg.hasFlowPath(source, sink)
26+
from BackwardDataFlow::PathNode source, BackwardDataFlow::PathNode sink
27+
where BackwardDataFlow::flowPath(source, sink)
2928
select sink.getNode(), source, sink, "This node receives taint from $@.", source.getNode(),
3029
"this source"
3130

javascript/src/audit/templates/ForwardDataFlow.ql

+9-10
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,22 @@
99
*/
1010

1111
import javascript
12-
import DataFlow::PathGraph
13-
import semmle.javascript.explore.ForwardDataFlow
12+
import ForwardDataFlow::PathGraph
1413

15-
class ForwardDataFlowConfig extends TaintTracking::Configuration {
16-
ForwardDataFlowConfig() { this = "ForwardDataFlowConfig" }
17-
18-
override predicate isSource(DataFlow::Node source) {
14+
module ForwardDataFlowConfig implements DataFlow::ConfigSig {
15+
predicate isSource(DataFlow::Node source) {
1916
// Define the source to run the forward dataflow from. Eg:
2017
// source = API::moduleImport(_).getMember("method").getReturn().asSource()
2118
none()
2219
}
23-
24-
// `isSink` is ignored when `semmle.javascript.explore.ForwardDataFlow` is imported.
20+
21+
predicate isSink(DataFlow::Node sink) { any() }
2522
}
23+
24+
module ForwardDataFlow = TaintTracking::Global<ForwardDataFlowConfig>;
2625

27-
from ForwardDataFlowConfig cfg, DataFlow::PathNode source, DataFlow::PathNode sink
28-
where cfg.hasFlowPath(source, sink)
26+
from ForwardDataFlow::PathNode source, ForwardDataFlow::PathNode sink
27+
where ForwardDataFlow::flowPath(source, sink)
2928
select sink.getNode(), source, sink, "This node receives taint from $@.", source.getNode(),
3029
"this source"
3130

0 commit comments

Comments
 (0)