Skip to content

Commit a3cf81d

Browse files
committed
js: add filter taint test (post rebase conflicts)
1 parent 5026454 commit a3cf81d

File tree

4 files changed

+223
-89
lines changed

4 files changed

+223
-89
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
| arrays.js:2:16:2:23 | "source" | arrays.js:5:8:5:14 | obj.foo |
2+
| arrays.js:2:16:2:23 | "source" | arrays.js:11:10:11:15 | arr[i] |
3+
| arrays.js:2:16:2:23 | "source" | arrays.js:15:27:15:27 | e |
4+
| arrays.js:2:16:2:23 | "source" | arrays.js:16:23:16:23 | e |
5+
| arrays.js:2:16:2:23 | "source" | arrays.js:20:8:20:16 | arr.pop() |
6+
| arrays.js:2:16:2:23 | "source" | arrays.js:49:8:49:13 | arr[0] |
7+
| arrays.js:2:16:2:23 | "source" | arrays.js:52:10:52:10 | x |
8+
| arrays.js:2:16:2:23 | "source" | arrays.js:56:10:56:10 | x |
9+
| arrays.js:2:16:2:23 | "source" | arrays.js:60:10:60:10 | x |
10+
| arrays.js:2:16:2:23 | "source" | arrays.js:66:10:66:10 | x |
11+
| arrays.js:2:16:2:23 | "source" | arrays.js:71:10:71:10 | x |
12+
| arrays.js:2:16:2:23 | "source" | arrays.js:74:8:74:29 | arr.fin ... llback) |
13+
| arrays.js:2:16:2:23 | "source" | arrays.js:77:8:77:35 | arrayFi ... llback) |
14+
| arrays.js:2:16:2:23 | "source" | arrays.js:81:10:81:10 | x |
15+
| arrays.js:2:16:2:23 | "source" | arrays.js:84:8:84:17 | arr.at(-1) |
16+
| arrays.js:18:22:18:29 | "source" | arrays.js:18:50:18:50 | e |
17+
| arrays.js:22:15:22:22 | "source" | arrays.js:23:8:23:17 | arr2.pop() |
18+
| arrays.js:25:15:25:22 | "source" | arrays.js:26:8:26:17 | arr3.pop() |
19+
| arrays.js:29:21:29:28 | "source" | arrays.js:30:8:30:17 | arr4.pop() |
20+
| arrays.js:29:21:29:28 | "source" | arrays.js:33:8:33:17 | arr5.pop() |
21+
| arrays.js:29:21:29:28 | "source" | arrays.js:35:8:35:26 | arr5.slice(2).pop() |
22+
| arrays.js:29:21:29:28 | "source" | arrays.js:41:8:41:17 | arr6.pop() |
23+
| arrays.js:44:4:44:11 | "source" | arrays.js:45:10:45:18 | ary.pop() |
24+
| arrays.js:44:4:44:11 | "source" | arrays.js:46:10:46:12 | ary |
25+
| arrays.js:86:9:86:16 | "source" | arrays.js:86:8:86:34 | ["sourc ... ) => x) |
26+
| arrays.js:87:9:87:16 | "source" | arrays.js:87:8:87:36 | ["sourc ... => !!x) |
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import javascript
2+
3+
class ArrayTaintFlowConfig extends TaintTracking::Configuration {
4+
ArrayTaintFlowConfig() { this = "ArrayTaintFlowConfig" }
5+
6+
override predicate isSource(DataFlow::Node source) { source.asExpr().getStringValue() = "source" }
7+
8+
override predicate isSink(DataFlow::Node sink) {
9+
sink = any(DataFlow::CallNode call | call.getCalleeName() = "sink").getAnArgument()
10+
}
11+
}
12+
13+
from ArrayTaintFlowConfig config, DataFlow::Node src, DataFlow::Node snk
14+
where config.hasFlow(src, snk)
15+
select src, snk

javascript/ql/test/library-tests/Arrays/arrays.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,7 @@
8282
}
8383

8484
sink(arr.at(-1)); // NOT OK
85+
86+
sink(["source"].filter((x) => x)); // NOT OK
87+
sink(["source"].filter((x) => !!x)); // NOT OK
8588
});

0 commit comments

Comments
 (0)