mirror of
https://github.com/github/codeql.git
synced 2025-12-20 18:56:32 +01:00
recognize instances of express from webpack-dev-server
This commit is contained in:
@@ -44,6 +44,9 @@ module Express {
|
||||
isRouter(e, _)
|
||||
or
|
||||
e.getType().hasUnderlyingType("express", "Router")
|
||||
or
|
||||
// created by `webpack-dev-server`
|
||||
WebpackDevServer::webpackDevServerApp().flowsToExpr(e)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -903,4 +906,32 @@ module Express {
|
||||
|
||||
override DataFlow::ValueNode getARouteHandlerArg() { result = routeHandlerArg }
|
||||
}
|
||||
|
||||
private module WebpackDevServer {
|
||||
/**
|
||||
* Gets a source for the options given to an instantiation of `webpack-dev-server`.
|
||||
*/
|
||||
private DataFlow::SourceNode devServerOptions(DataFlow::TypeBackTracker t) {
|
||||
t.start() and
|
||||
result =
|
||||
DataFlow::moduleImport("webpack-dev-server")
|
||||
.getAnInstantiation()
|
||||
.getArgument(1)
|
||||
.getALocalSource()
|
||||
or
|
||||
exists(DataFlow::TypeBackTracker t2 | result = devServerOptions(t2).backtrack(t2, t))
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an instance of the `express` app created by `webpack-dev-server`.
|
||||
*/
|
||||
DataFlow::ParameterNode webpackDevServerApp() {
|
||||
result =
|
||||
devServerOptions(DataFlow::TypeBackTracker::end())
|
||||
.getAPropertyWrite(["after", "before", "setup"])
|
||||
.getRhs()
|
||||
.getAFunctionValue()
|
||||
.getParameter(0)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user