Skip to content

Commit 6a63f5b

Browse files
committed
JS: Avoid bad join order in ImplicitProcessImport
1 parent c869812 commit 6a63f5b

1 file changed

Lines changed: 16 additions & 5 deletions

File tree

javascript/ql/src/semmle/javascript/frameworks/NodeJSLib.qll

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,28 @@ import semmle.javascript.frameworks.HTTP
77
import semmle.javascript.security.SensitiveActions
88

99
module NodeJSLib {
10+
private GlobalVariable processVariable() {
11+
variables(result, "process", any(GlobalScope sc))
12+
}
13+
14+
pragma[nomagic]
15+
private GlobalVarAccess processExprInTopLevel(TopLevel tl) {
16+
result = processVariable().getAnAccess() and
17+
tl = result.getTopLevel()
18+
}
19+
20+
pragma[nomagic]
21+
private GlobalVarAccess processExprInNodeModule() {
22+
result = processExprInTopLevel(any(NodeModule m))
23+
}
24+
1025
/**
1126
* An access to the global `process` variable in a Node.js module, interpreted as
1227
* an import of the `process` module.
1328
*/
1429
private class ImplicitProcessImport extends DataFlow::ModuleImportNode::Range {
1530
ImplicitProcessImport() {
16-
exists(GlobalVariable process |
17-
process.getName() = "process" and
18-
this = DataFlow::exprNode(process.getAnAccess())
19-
) and
20-
getTopLevel() instanceof NodeModule
31+
this = DataFlow::exprNode(processExprInNodeModule())
2132
}
2233

2334
override string getPath() { result = "process" }

0 commit comments

Comments
 (0)