Skip to content

Commit 49194b0

Browse files
committed
Updated WebSocketReceiveNode with API graphs.
1 parent 0dbf951 commit 49194b0

File tree

4 files changed

+18
-8
lines changed

4 files changed

+18
-8
lines changed

javascript/ql/lib/semmle/javascript/frameworks/WebSocket.qll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ module ClientWebSocket {
159159
private DataFlow::FunctionNode getAMessageHandler(
160160
ClientWebSocket::ClientSocket emitter, string methodName
161161
) {
162-
exists(DataFlow::CallNode call |
163-
call = emitter.getAMemberCall(methodName) and
162+
exists(API::CallNode call |
163+
call = emitter.getReturn().getMember(methodName).getACall() and
164164
call.getArgument(0).mayHaveStringValue("message") and
165165
result = call.getCallback(1)
166166
)
@@ -175,7 +175,7 @@ module ClientWebSocket {
175175
WebSocketReceiveNode() {
176176
this = getAMessageHandler(emitter, "addEventListener")
177177
or
178-
this = emitter.getAPropertyWrite("onmessage").getRhs()
178+
this = emitter.getReturn().getMember("onmessage").getAValueReachingSink()
179179
}
180180

181181
override DataFlow::Node getReceivedItem(int i) {

javascript/ql/test/library-tests/frameworks/WebSocket/browser-custom.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@ import { MyWebSocket, MySockJS, myWebSocketInstance, mySockJSInstance } from './
4141

4242
myWebSocketInstance.addEventListener('message', function (event) {
4343
console.log('Message from server ', event.data);
44-
}); // $ MISSING: clientReceive
44+
}); // $ clientReceive
4545

4646
myWebSocketInstance.onmessage = function (event) {
4747
console.log("Message from server 2", event.data)
48-
}; // $ MISSING: clientReceive
48+
}; // $ clientReceive
4949
})();
5050

5151

@@ -57,9 +57,9 @@ import { MyWebSocket, MySockJS, myWebSocketInstance, mySockJSInstance } from './
5757
mySockJSInstance.onmessage = function (e) {
5858
console.log('message', e.data);
5959
mySockJSInstance.close();
60-
}; // $ MISSING: clientReceive
60+
}; // $ clientReceive
6161

6262
mySockJSInstance.addEventListener('message', function (event) {
6363
console.log('Using addEventListener ', event.data);
64-
}); // $ MISSING: clientReceive
64+
}); // $ clientReceive
6565
})();

javascript/ql/test/library-tests/frameworks/WebSocket/client-custom.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,5 @@ const { MyWebSocketWS, myWebSocketWSInstance } = require('./client.js');
1919

2020
myWebSocketWSInstance.on('message', function incoming(data) {
2121
console.log(data);
22-
}); // $ MISSING: clientReceive
22+
}); // $ clientReceive
2323
})();

javascript/ql/test/library-tests/frameworks/WebSocket/test.expected

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,16 @@ clientReceive
33
| browser-custom.js:14:21:16:2 | functio ... ata)\\n\\t} |
44
| browser-custom.js:26:19:29:2 | functio ... e();\\n\\t} |
55
| browser-custom.js:31:35:33:2 | functio ... ta);\\n\\t} |
6+
| browser-custom.js:42:53:44:5 | functio ... ;\\n } |
7+
| browser-custom.js:46:37:48:5 | functio ... )\\n } |
8+
| browser-custom.js:57:34:60:5 | functio ... ;\\n } |
9+
| browser-custom.js:62:50:64:5 | functio ... ;\\n } |
610
| browser.js:8:37:10:2 | functio ... ta);\\n\\t} |
711
| browser.js:12:21:14:2 | functio ... ata)\\n\\t} |
812
| browser.js:24:19:27:2 | functio ... e();\\n\\t} |
913
| browser.js:29:35:31:2 | functio ... ta);\\n\\t} |
1014
| client-custom.js:10:19:12:2 | functio ... ta);\\n\\t} |
15+
| client-custom.js:20:38:22:2 | functio ... ta);\\n\\t} |
1116
| client.js:10:19:12:2 | functio ... ta);\\n\\t} |
1217
clientSend
1318
| browser-custom.js:7:3:7:33 | socket. ... wser!') |
@@ -47,14 +52,19 @@ flowSteps
4752
| client.js:16:40:16:72 | new Web ... e.org') | client-custom.js:1:24:1:44 | myWebSo ... nstance |
4853
| server.js:11:11:11:27 | 'Hi from server!' | browser-custom.js:11:39:11:48 | event.data |
4954
| server.js:11:11:11:27 | 'Hi from server!' | browser-custom.js:15:40:15:49 | event.data |
55+
| server.js:11:11:11:27 | 'Hi from server!' | browser-custom.js:43:45:43:54 | event.data |
56+
| server.js:11:11:11:27 | 'Hi from server!' | browser-custom.js:47:46:47:55 | event.data |
5057
| server.js:11:11:11:27 | 'Hi from server!' | browser.js:9:39:9:48 | event.data |
5158
| server.js:11:11:11:27 | 'Hi from server!' | browser.js:13:40:13:49 | event.data |
5259
| server.js:11:11:11:27 | 'Hi from server!' | client-custom.js:10:37:10:40 | data |
60+
| server.js:11:11:11:27 | 'Hi from server!' | client-custom.js:20:56:20:59 | data |
5361
| server.js:11:11:11:27 | 'Hi from server!' | client.js:10:37:10:40 | data |
5462
| server.js:15:36:15:55 | require('ws').Server | server-custom.js:1:9:1:25 | MyWebSocketServer |
5563
| server.js:16:44:16:79 | new Web ... 8080 }) | server-custom.js:1:28:1:52 | myWebSo ... nstance |
5664
| sockjs.js:11:20:11:50 | JSON.st ... .test)) | browser-custom.js:27:26:27:31 | e.data |
5765
| sockjs.js:11:20:11:50 | JSON.st ... .test)) | browser-custom.js:32:42:32:51 | event.data |
66+
| sockjs.js:11:20:11:50 | JSON.st ... .test)) | browser-custom.js:58:32:58:37 | e.data |
67+
| sockjs.js:11:20:11:50 | JSON.st ... .test)) | browser-custom.js:63:48:63:57 | event.data |
5868
| sockjs.js:11:20:11:50 | JSON.st ... .test)) | browser.js:25:26:25:31 | e.data |
5969
| sockjs.js:11:20:11:50 | JSON.st ... .test)) | browser.js:30:42:30:51 | event.data |
6070
remoteFlow

0 commit comments

Comments
 (0)