Skip to content

Commit eaad84b

Browse files
author
Esben Sparre Andreasen
committed
JS: add support for dis- and conjunctions in SanitizingFunction
1 parent ffc3d6b commit eaad84b

File tree

4 files changed

+12
-3
lines changed

4 files changed

+12
-3
lines changed

javascript/ql/src/semmle/javascript/dataflow/TaintTracking.qll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -824,6 +824,12 @@ module TaintTracking {
824824
exists(Expr e |
825825
exists(Expr returnExpr |
826826
returnExpr = sanitizer.asExpr()
827+
or
828+
// ad hoc support for conjunctions:
829+
returnExpr.(LogAndExpr).getAnOperand() = sanitizer.asExpr() and sanitizerOutcome = true
830+
or
831+
// ad hoc support for disjunctions:
832+
returnExpr.(LogOrExpr).getAnOperand() = sanitizer.asExpr() and sanitizerOutcome = false
827833
|
828834
exists(SsaExplicitDefinition ssa |
829835
ssa.getDef().getSource() = returnExpr and

javascript/ql/test/library-tests/TaintBarriers/SanitizingGuard.expected

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,18 @@
4545
| tst.js:271:25:271:45 | whiteli ... ains(z) | ExampleConfiguration | true | tst.js:271:44:271:44 | z |
4646
| tst.js:281:16:281:25 | x2 != null | ExampleConfiguration | false | tst.js:281:16:281:17 | x2 |
4747
| tst.js:281:30:281:51 | whiteli ... ins(x2) | ExampleConfiguration | true | tst.js:281:49:281:50 | x2 |
48+
| tst.js:283:9:283:13 | f2(v) | ExampleConfiguration | true | tst.js:283:12:283:12 | v |
4849
| tst.js:290:16:290:25 | x3 == null | ExampleConfiguration | true | tst.js:290:16:290:17 | x3 |
4950
| tst.js:290:30:290:51 | whiteli ... ins(x3) | ExampleConfiguration | true | tst.js:290:49:290:50 | x3 |
5051
| tst.js:299:17:299:38 | whiteli ... ins(x4) | ExampleConfiguration | true | tst.js:299:36:299:37 | x4 |
5152
| tst.js:308:18:308:39 | whiteli ... ins(x5) | ExampleConfiguration | true | tst.js:308:37:308:38 | x5 |
5253
| tst.js:317:26:317:47 | whiteli ... ins(x6) | ExampleConfiguration | true | tst.js:317:45:317:46 | x6 |
5354
| tst.js:327:25:327:34 | x7 != null | ExampleConfiguration | false | tst.js:327:25:327:26 | x7 |
5455
| tst.js:327:39:327:60 | whiteli ... ins(x7) | ExampleConfiguration | true | tst.js:327:58:327:59 | x7 |
56+
| tst.js:330:9:330:13 | f7(v) | ExampleConfiguration | true | tst.js:330:12:330:12 | v |
5557
| tst.js:337:25:337:46 | whiteli ... ins(x8) | ExampleConfiguration | true | tst.js:337:44:337:45 | x8 |
5658
| tst.js:338:16:338:25 | x8 != null | ExampleConfiguration | false | tst.js:338:16:338:17 | x8 |
5759
| tst.js:347:29:347:50 | whiteli ... ins(x9) | ExampleConfiguration | true | tst.js:347:48:347:49 | x9 |
5860
| tst.js:356:16:356:27 | x10 !== null | ExampleConfiguration | false | tst.js:356:16:356:18 | x10 |
5961
| tst.js:356:32:356:48 | x10 !== undefined | ExampleConfiguration | false | tst.js:356:32:356:34 | x10 |
62+
| tst.js:358:9:358:14 | f10(v) | ExampleConfiguration | false | tst.js:358:13:358:13 | v |

javascript/ql/test/library-tests/TaintBarriers/TaintedSink.expected

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
| tst.js:267:14:267:14 | v | tst.js:248:13:248:20 | SOURCE() |
4242
| tst.js:275:14:275:14 | v | tst.js:248:13:248:20 | SOURCE() |
4343
| tst.js:277:14:277:14 | v | tst.js:248:13:248:20 | SOURCE() |
44-
| tst.js:284:14:284:14 | v | tst.js:248:13:248:20 | SOURCE() |
4544
| tst.js:286:14:286:14 | v | tst.js:248:13:248:20 | SOURCE() |
4645
| tst.js:293:14:293:14 | v | tst.js:248:13:248:20 | SOURCE() |
4746
| tst.js:295:14:295:14 | v | tst.js:248:13:248:20 | SOURCE() |
@@ -51,11 +50,9 @@
5150
| tst.js:313:14:313:14 | v | tst.js:248:13:248:20 | SOURCE() |
5251
| tst.js:321:14:321:14 | v | tst.js:248:13:248:20 | SOURCE() |
5352
| tst.js:323:14:323:14 | v | tst.js:248:13:248:20 | SOURCE() |
54-
| tst.js:331:14:331:14 | v | tst.js:248:13:248:20 | SOURCE() |
5553
| tst.js:333:14:333:14 | v | tst.js:248:13:248:20 | SOURCE() |
5654
| tst.js:341:14:341:14 | v | tst.js:248:13:248:20 | SOURCE() |
5755
| tst.js:343:14:343:14 | v | tst.js:248:13:248:20 | SOURCE() |
5856
| tst.js:350:14:350:14 | v | tst.js:248:13:248:20 | SOURCE() |
5957
| tst.js:352:14:352:14 | v | tst.js:248:13:248:20 | SOURCE() |
6058
| tst.js:359:14:359:14 | v | tst.js:248:13:248:20 | SOURCE() |
61-
| tst.js:361:14:361:14 | v | tst.js:248:13:248:20 | SOURCE() |

javascript/ql/test/library-tests/TaintBarriers/isBarrier.expected

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,7 @@
3333
| tst.js:241:14:241:14 | v | ExampleConfiguration |
3434
| tst.js:255:14:255:14 | v | ExampleConfiguration |
3535
| tst.js:265:14:265:14 | v | ExampleConfiguration |
36+
| tst.js:284:14:284:14 | v | ExampleConfiguration |
37+
| tst.js:331:14:331:14 | v | ExampleConfiguration |
3638
| tst.js:356:16:356:27 | x10 | ExampleConfiguration |
39+
| tst.js:361:14:361:14 | v | ExampleConfiguration |

0 commit comments

Comments
 (0)