mirror of
https://github.com/github/codeql.git
synced 2025-12-24 04:36:35 +01:00
recognize instances of express from webpack-dev-server
This commit is contained in:
@@ -44,6 +44,9 @@ module Express {
|
|||||||
isRouter(e, _)
|
isRouter(e, _)
|
||||||
or
|
or
|
||||||
e.getType().hasUnderlyingType("express", "Router")
|
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 }
|
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