Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions javascript/ql/lib/semmle/javascript/dataflow/Sources.qll
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,7 @@ module SourceNode {
astNode instanceof Templating::PipeRefExpr or
astNode instanceof Templating::TemplateVarRefExpr or
astNode instanceof StringLiteral or
astNode instanceof TemplateLiteral or
astNode instanceof TypeAssertion or
astNode instanceof SatisfiesExpr
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,46 +23,6 @@ DataFlow::SourceNode angular() {
result = DataFlow::moduleImport("angular")
}

/**
* Holds if `tl` appears to be a top-level using the AngularJS library.
*
* Should not depend on the `SourceNode` class.
*/
pragma[nomagic]
private predicate isAngularTopLevel(TopLevel tl) {
exists(Import imprt |
imprt.getTopLevel() = tl and
imprt.getImportedPathString() = "angular"
)
or
exists(GlobalVarAccess global |
global.getName() = "angular" and
global.getTopLevel() = tl
)
}

/**
* Holds if `s` is a string in a top-level using the AngularJS library.
*
* Should not depend on the `SourceNode` class.
*/
pragma[nomagic]
private predicate isAngularString(Expr s) {
isAngularTopLevel(s.getTopLevel()) and
(
s instanceof StringLiteral or
s instanceof TemplateLiteral
)
}

/**
* String literals in Angular code are often used as identifiers or references, so we
* want to track them.
*/
private class TrackStringsInAngularCode extends DataFlow::SourceNode::Range, DataFlow::ValueNode {
TrackStringsInAngularCode() { isAngularString(astNode) }
}

/**
* Holds if `m` is of the form `angular.module("name", ...)`.
*/
Expand Down
2 changes: 2 additions & 0 deletions javascript/ql/test/library-tests/DataFlow/tests.expected
Original file line number Diff line number Diff line change
Expand Up @@ -1564,8 +1564,10 @@ sources
| tst.js:50:14:53:3 | () {\\n ... et`\\n } |
| tst.js:50:14:53:3 | return of constructor of class A |
| tst.js:51:5:51:13 | super(42) |
| tst.js:57:1:57:9 | `x: ${x}` |
| tst.js:58:1:58:3 | tag |
| tst.js:58:1:58:13 | tag `x: ${x}` |
| tst.js:58:5:58:13 | `x: ${x}` |
| tst.js:61:1:61:5 | ::o.m |
| tst.js:61:3:61:5 | o.m |
| tst.js:62:1:62:4 | o::g |
Expand Down