Skip to content

Commit e2c6a01

Browse files
authored
Merge pull request #4097 from erik-krogh/createRequire
Approved by esbena
2 parents 765c40e + bbbb0a2 commit e2c6a01

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

javascript/ql/src/semmle/javascript/NodeJS.qll

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,17 @@ private predicate isRequire(DataFlow::Node nd) {
162162
not nd.getFile().getExtension() = "mjs"
163163
or
164164
isRequire(nd.getAPredecessor())
165+
or
166+
// `import { createRequire } from 'module';` support.
167+
// specialized to ES2015 modules to avoid recursion in the `DataFlow::moduleImport()` predicate.
168+
exists(ImportDeclaration imp | imp.getImportedPath().getValue() = "module" |
169+
nd =
170+
imp
171+
.getImportedModuleNode()
172+
.(DataFlow::SourceNode)
173+
.getAPropertyRead("createRequire")
174+
.getACall()
175+
)
165176
}
166177

167178
/**

javascript/ql/test/library-tests/NodeJS/Require.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
| g.js:1:43:1:61 | require("electron") |
1616
| index.js:1:12:1:26 | require('path') |
1717
| index.js:2:1:2:41 | require ... b.js")) |
18+
| mjs-files/createRequire.mjs:4:26:4:49 | require ... erver') |
1819
| mjs-files/require-from-js.js:1:12:1:36 | require ... on-me') |
1920
| mjs-files/require-from-js.js:2:12:2:39 | require ... me.js') |
2021
| mjs-files/require-from-js.js:3:12:3:40 | require ... e.mjs') |
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { createRequire } from 'module';
2+
3+
const require = createRequire(import.meta.url);
4+
const { ApolloServer } = require('apollo-server');

0 commit comments

Comments
 (0)