File tree Expand file tree Collapse file tree 5 files changed +21
-13
lines changed
test/library-tests/TaintTracking Expand file tree Collapse file tree 5 files changed +21
-13
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ category : minorAnalysis
3
+ ---
4
+ * Added taint-steps for ` Array.prototype.reverse `
Original file line number Diff line number Diff line change @@ -444,4 +444,18 @@ private module ArrayLibraries {
444
444
)
445
445
}
446
446
}
447
+
448
+ /**
449
+ * A taint propagating data flow edge arising from in-place array manipulation operations.
450
+ * The methods return the pointer to `this` array as well.
451
+ */
452
+ private class ArrayInPlaceManipulationTaintStep extends TaintTracking:: SharedTaintStep {
453
+ override predicate heapStep ( DataFlow:: Node pred , DataFlow:: Node succ ) {
454
+ exists ( DataFlow:: MethodCallNode call |
455
+ call .getMethodName ( ) in [ "sort" , "reverse" ] and
456
+ pred = call .getReceiver ( ) and
457
+ succ = call
458
+ )
459
+ }
460
+ }
447
461
}
Original file line number Diff line number Diff line change @@ -869,19 +869,6 @@ module TaintTracking {
869
869
}
870
870
}
871
871
872
- /**
873
- * A taint propagating data flow edge arising from sorting.
874
- */
875
- private class SortTaintStep extends SharedTaintStep {
876
- override predicate heapStep ( DataFlow:: Node pred , DataFlow:: Node succ ) {
877
- exists ( DataFlow:: MethodCallNode call |
878
- call .getMethodName ( ) = "sort" and
879
- pred = call .getReceiver ( ) and
880
- succ = call
881
- )
882
- }
883
- }
884
-
885
872
/**
886
873
* A taint step through an exception constructor, such as `x` to `new Error(x)`.
887
874
*/
Original file line number Diff line number Diff line change @@ -233,6 +233,7 @@ typeInferenceMismatch
233
233
| tst.js:2:13:2:20 | source() | tst.js:48:10:48:22 | new Buffer(x) |
234
234
| tst.js:2:13:2:20 | source() | tst.js:51:10:51:31 | seriali ... ript(x) |
235
235
| tst.js:2:13:2:20 | source() | tst.js:54:14:54:19 | unsafe |
236
+ | tst.js:2:13:2:20 | source() | tst.js:61:10:61:20 | x.reverse() |
236
237
| xml.js:5:18:5:25 | source() | xml.js:8:14:8:17 | text |
237
238
| xml.js:12:17:12:24 | source() | xml.js:13:14:13:19 | result |
238
239
| xml.js:23:18:23:25 | source() | xml.js:20:14:20:17 | attr |
Original file line number Diff line number Diff line change @@ -57,4 +57,6 @@ function test() {
57
57
}
58
58
59
59
tagged `foo ${ "safe" } bar ${ x } baz` ;
60
+
61
+ sink ( x . reverse ( ) ) ; // NOT OK
60
62
}
You can’t perform that action at this time.
0 commit comments