File tree 3 files changed +28
-7
lines changed
src/semmle/javascript/frameworks
test/library-tests/frameworks/EventEmitter
3 files changed +28
-7
lines changed Original file line number Diff line number Diff line change @@ -783,7 +783,7 @@ module NodeJSLib {
783
783
/**
784
784
* A model of a URL request in the Node.js `http` library.
785
785
*/
786
- private class NodeHttpUrlRequest extends NodeJSClientRequest:: Range {
786
+ private class NodeHttpUrlRequest extends NodeJSClientRequest:: Range , NodeJSEventEmitter {
787
787
DataFlow:: Node url ;
788
788
789
789
NodeHttpUrlRequest ( ) {
@@ -1021,7 +1021,12 @@ module NodeJSLib {
1021
1021
}
1022
1022
1023
1023
private class ClientRequestEventEmitter extends NodeJSEventEmitter {
1024
- ClientRequestEventEmitter ( ) { this = any ( ClientRequestHandler handler ) .getAParameter ( ) }
1024
+ ClientRequestEventEmitter ( ) {
1025
+ exists ( ClientRequestHandler handler |
1026
+ not handler .getAHandledEvent ( ) = "error" and
1027
+ this = handler .getAParameter ( )
1028
+ )
1029
+ }
1025
1030
}
1026
1031
1027
1032
/**
Original file line number Diff line number Diff line change @@ -22,7 +22,10 @@ eventEmitter
22
22
| customEmitter.js:20:9:20:29 | new MyS ... itter() |
23
23
| tst2.js:6:12:6:42 | new Con ... , opts) |
24
24
| tst2.js:16:10:16:24 | new Connector() |
25
- | tst2.js:21:17:21:20 | data |
25
+ | tst2.js:22:37:22:39 | res |
26
+ | tst2.js:25:28:25:33 | socket |
27
+ | tst2.js:29:37:29:39 | res |
28
+ | tst2.js:32:28:32:33 | socket |
26
29
| tst.js:3:10:3:22 | new emitter() |
27
30
| tst.js:13:11:13:23 | new emitter() |
28
31
| tst.js:18:11:18:23 | new emitter() |
Original file line number Diff line number Diff line change 1
- var util = require ( ' util' ) ;
2
- var EventEmitter = require ( ' events' ) . EventEmitter ;
1
+ var util = require ( " util" ) ;
2
+ var EventEmitter = require ( " events" ) . EventEmitter ;
3
3
4
4
var Connector = function ( ) {
5
5
if ( ! ( this instanceof Connector ) ) {
@@ -17,5 +17,18 @@ var em = new Connector();
17
17
em . on ( "foo" , bar => { } ) ;
18
18
em . emit ( "foo" , "bar" ) ;
19
19
20
- var http = require ( 'http' ) ;
21
- http . request ( x , data => data . on ( "data" , d => undefined ) ) ;
20
+ var http = require ( "http" ) ;
21
+
22
+ let req1 = http . request ( x , function ( res ) {
23
+ res . on ( "data" , function ( data ) { } ) ;
24
+ } ) ;
25
+ req1 . on ( "socket" , function ( socket ) {
26
+ socket . on ( "data" , function ( data ) { } ) ;
27
+ } ) ;
28
+
29
+ let req2 = http . request ( x , function ( res ) {
30
+ res . on ( "error" , function ( error ) { } ) ;
31
+ } ) ;
32
+ req2 . on ( "socket" , function ( socket ) {
33
+ socket . on ( "error" , function ( error ) { } ) ;
34
+ } ) ;
You can’t perform that action at this time.
0 commit comments