mirror of
https://github.com/github/codeql.git
synced 2025-12-18 01:33:15 +01:00
JS: Recognize 'require' calls in more cases
This commit is contained in:
@@ -97,8 +97,9 @@ public class NodeJSDetector {
|
||||
if (e instanceof CallExpression) {
|
||||
CallExpression call = (CallExpression) e;
|
||||
Expression callee = call.getCallee();
|
||||
return (isIdentifier(callee, "require") || isRequireCall(callee))
|
||||
&& call.getArguments().size() == 1;
|
||||
if (isIdentifier(callee, "require") && call.getArguments().size() == 1) return true;
|
||||
if (isRequireCall(callee)) return true;
|
||||
return false;
|
||||
} else if (e instanceof MemberExpression) {
|
||||
return isRequireCall(((MemberExpression) e).getObject());
|
||||
} else if (e instanceof AssignmentExpression) {
|
||||
|
||||
@@ -164,9 +164,8 @@ public class NodeJSDetectorTests {
|
||||
|
||||
@Test
|
||||
public void amdefine() {
|
||||
// not currently detected
|
||||
isNodeJS(
|
||||
"if (typeof define !== 'function') define = require('amdefine')(module, require);", false);
|
||||
"if (typeof define !== 'function') define = require('amdefine')(module, require);", true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -202,4 +201,14 @@ public class NodeJSDetectorTests {
|
||||
+ "}",
|
||||
true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void requireAndCall() {
|
||||
isNodeJS("var foo = require('foo')();", true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void requireAndCallMethod() {
|
||||
isNodeJS("var foo = require('foo').bar();", true);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user