File tree Expand file tree Collapse file tree 4 files changed +27
-0
lines changed
src/semmle/javascript/frameworks
test/library-tests/TaintTracking Expand file tree Collapse file tree 4 files changed +27
-0
lines changed Original file line number Diff line number Diff line change
1
+ lgtm,codescanning
2
+ * The dataflow libraries now model dataflow through case changing libraries.
3
+ Affected packages are
4
+ [ change-case] ( https://www.npmjs.com/package/change-case )
Original file line number Diff line number Diff line change @@ -103,3 +103,18 @@ private class LibraryFormatter extends PrintfStyleCall {
103
103
104
104
override predicate returnsFormatted ( ) { returns = true }
105
105
}
106
+
107
+ /**
108
+ * A taint step through a case changing function.
109
+ */
110
+ private class CaseChangingStep extends TaintTracking:: SharedTaintStep {
111
+ override predicate step ( DataFlow:: Node pred , DataFlow:: Node succ ) {
112
+ exists ( DataFlow:: SourceNode callee , DataFlow:: CallNode call |
113
+ callee = DataFlow:: moduleMember ( "change-case" , _)
114
+ |
115
+ call = callee .getACall ( ) and
116
+ pred = call .getArgument ( 0 ) and
117
+ succ = call
118
+ )
119
+ }
120
+ }
Original file line number Diff line number Diff line change @@ -35,6 +35,7 @@ typeInferenceMismatch
35
35
| callbacks.js:53:23:53:30 | source() | callbacks.js:58:10:58:10 | x |
36
36
| capture-flow.js:9:11:9:18 | source() | capture-flow.js:14:10:14:16 | outer() |
37
37
| captured-sanitizer.js:25:3:25:10 | source() | captured-sanitizer.js:15:10:15:10 | x |
38
+ | case.js:2:16:2:23 | source() | case.js:5:8:5:35 | changeC ... source) |
38
39
| closure.js:6:15:6:22 | source() | closure.js:8:8:8:31 | string. ... (taint) |
39
40
| closure.js:6:15:6:22 | source() | closure.js:9:8:9:25 | string.trim(taint) |
40
41
| closure.js:6:15:6:22 | source() | closure.js:10:8:10:33 | string. ... nt, 50) |
Original file line number Diff line number Diff line change
1
+ function foo ( ) {
2
+ let source = source ( ) ;
3
+
4
+ const changeCase = require ( "change-case" ) ;
5
+ sink ( changeCase . camelCase ( source ) ) ; // NOT OK
6
+
7
+ }
You can’t perform that action at this time.
0 commit comments