mirror of
https://github.com/github/codeql.git
synced 2026-04-28 02:05:14 +02:00
Merge pull request #4996 from esbena/js/nodejs-client-request-event-emitter
Approved by erik-krogh
This commit is contained in:
@@ -826,7 +826,7 @@ module NodeJSLib {
|
||||
/**
|
||||
* A model of a URL request in the Node.js `http` library.
|
||||
*/
|
||||
private class NodeHttpUrlRequest extends NodeJSClientRequest::Range {
|
||||
private class NodeHttpUrlRequest extends NodeJSClientRequest::Range, NodeJSEventEmitter {
|
||||
DataFlow::Node url;
|
||||
|
||||
NodeHttpUrlRequest() {
|
||||
@@ -881,8 +881,11 @@ module NodeJSLib {
|
||||
exists(DataFlow::MethodCallNode mcn |
|
||||
clientRequest.getAMethodCall(EventEmitter::on()) = mcn and
|
||||
mcn.getArgument(0).mayHaveStringValue(handledEvent) and
|
||||
flowsTo(mcn.getArgument(1))
|
||||
this.flowsTo(mcn.getArgument(1))
|
||||
)
|
||||
or
|
||||
this.flowsTo(clientRequest.(DataFlow::CallNode).getLastArgument()) and
|
||||
handledEvent = "connection"
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1060,6 +1063,27 @@ module NodeJSLib {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* An HTTP request event handler parameter as an EventEmitter, for
|
||||
* example the function `emitter` in either of the following:
|
||||
*
|
||||
* ```
|
||||
* http.request(x, emitter => {...})
|
||||
* ```
|
||||
*
|
||||
* ```
|
||||
* http.request(...).on(y, emitter => { ...})
|
||||
* ```
|
||||
*/
|
||||
private class ClientRequestEventEmitter extends NodeJSEventEmitter {
|
||||
ClientRequestEventEmitter() {
|
||||
exists(ClientRequestHandler handler |
|
||||
not handler.getAHandledEvent() = "error" and
|
||||
this = handler.getAParameter()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A registration of an event handler on a NodeJS EventEmitter instance.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user