Skip to content

Commit 9989fce

Browse files
committed
JS: Add DataFlow::Configuration test
1 parent 87e0831 commit 9989fce

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
| access-path-sanitizer.js:2:18:2:25 | source() | access-path-sanitizer.js:4:8:4:12 | obj.x |
2+
| advanced-callgraph.js:2:13:2:20 | source() | advanced-callgraph.js:6:22:6:22 | v |
3+
| callbacks.js:4:6:4:13 | source() | callbacks.js:34:27:34:27 | x |
4+
| callbacks.js:4:6:4:13 | source() | callbacks.js:35:27:35:27 | x |
5+
| callbacks.js:5:6:5:13 | source() | callbacks.js:34:27:34:27 | x |
6+
| callbacks.js:5:6:5:13 | source() | callbacks.js:35:27:35:27 | x |
7+
| callbacks.js:25:16:25:23 | source() | callbacks.js:47:26:47:26 | x |
8+
| callbacks.js:25:16:25:23 | source() | callbacks.js:48:26:48:26 | x |
9+
| callbacks.js:37:17:37:24 | source() | callbacks.js:37:37:37:37 | x |
10+
| callbacks.js:44:17:44:24 | source() | callbacks.js:41:10:41:10 | x |
11+
| callbacks.js:50:18:50:25 | source() | callbacks.js:30:29:30:29 | y |
12+
| callbacks.js:51:18:51:25 | source() | callbacks.js:30:29:30:29 | y |
13+
| captured-sanitizer.js:25:3:25:10 | source() | captured-sanitizer.js:15:10:15:10 | x |
14+
| constructor-calls.js:4:18:4:25 | source() | constructor-calls.js:18:8:18:14 | c.taint |
15+
| constructor-calls.js:4:18:4:25 | source() | constructor-calls.js:22:8:22:19 | c_safe.taint |
16+
| constructor-calls.js:10:16:10:23 | source() | constructor-calls.js:26:8:26:14 | d.taint |
17+
| constructor-calls.js:10:16:10:23 | source() | constructor-calls.js:30:8:30:19 | d_safe.taint |
18+
| constructor-calls.js:14:15:14:22 | source() | constructor-calls.js:17:8:17:14 | c.param |
19+
| constructor-calls.js:14:15:14:22 | source() | constructor-calls.js:25:8:25:14 | d.param |
20+
| indexOf.js:4:11:4:18 | source() | indexOf.js:9:10:9:10 | x |
21+
| indexOf.js:4:11:4:18 | source() | indexOf.js:13:10:13:10 | x |
22+
| partialCalls.js:4:17:4:24 | source() | partialCalls.js:17:14:17:14 | x |
23+
| partialCalls.js:4:17:4:24 | source() | partialCalls.js:20:14:20:14 | y |
24+
| partialCalls.js:4:17:4:24 | source() | partialCalls.js:30:14:30:20 | x.value |
25+
| partialCalls.js:4:17:4:24 | source() | partialCalls.js:41:10:41:18 | id(taint) |
26+
| partialCalls.js:4:17:4:24 | source() | partialCalls.js:51:14:51:14 | x |
27+
| sanitizer-guards.js:2:11:2:18 | source() | sanitizer-guards.js:4:8:4:8 | x |
28+
| sanitizer-guards.js:13:14:13:21 | source() | sanitizer-guards.js:15:10:15:15 | this.x |
29+
| sanitizer-guards.js:13:14:13:21 | source() | sanitizer-guards.js:21:14:21:19 | this.x |
30+
| sanitizer-guards.js:13:14:13:21 | source() | sanitizer-guards.js:26:9:26:14 | this.x |
31+
| thisAssignments.js:4:17:4:24 | source() | thisAssignments.js:5:10:5:18 | obj.field |
32+
| thisAssignments.js:7:19:7:26 | source() | thisAssignments.js:8:10:8:20 | this.field2 |
33+
| tst.js:2:13:2:20 | source() | tst.js:4:10:4:10 | x |
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import javascript
2+
3+
DataFlow::CallNode getACall(string name) { result.getCalleeName() = name }
4+
5+
class BasicConfig extends DataFlow::Configuration {
6+
BasicConfig() { this = "BasicConfig" }
7+
8+
override predicate isSource(DataFlow::Node node) { node = getACall("source") }
9+
10+
override predicate isSink(DataFlow::Node node) { node = getACall("sink").getAnArgument() }
11+
12+
override predicate isBarrierGuard(DataFlow::BarrierGuardNode node) {
13+
node instanceof BasicBarrierGuard
14+
}
15+
}
16+
17+
class BasicBarrierGuard extends DataFlow::BarrierGuardNode, DataFlow::CallNode {
18+
BasicBarrierGuard() { this = getACall("isSafe") }
19+
20+
override predicate blocks(boolean outcome, Expr e) {
21+
outcome = true and e = getArgument(0).asExpr()
22+
}
23+
}
24+
25+
from BasicConfig cfg, DataFlow::Node src, DataFlow::Node sink
26+
where cfg.hasFlow(src, sink)
27+
select src, sink

0 commit comments

Comments
 (0)