Skip to content

Commit 567a46e

Browse files
committed
Updated WebSocketReceiveNode to match bind functions.
1 parent df6cd4e commit 567a46e

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,15 @@ module ClientWebSocket {
178178
exists(DataFlow::PropWrite write |
179179
// write.getBase().getALocalSource() = emitter.getReturn().asSource() and
180180
write.getPropertyName() = "onmessage" and
181-
this = write.getRhs()
181+
(
182+
this = write.getRhs()
183+
or
184+
exists(DataFlow::MethodCallNode bindCall |
185+
bindCall = write.getRhs() and
186+
bindCall.getMethodName() = "bind" and
187+
this = bindCall.getReceiver().getAFunctionValue()
188+
)
189+
)
182190
)
183191
}
184192

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ import { MyWebSocket, MySockJS, myWebSocketInstance, mySockJSInstance } from './
6767

6868
const recv_message = function (e) {
6969
console.log('Received message:', e.data);
70-
}; // $ MISSING: clientReceive
70+
}; // $ clientReceive
7171

7272
(function () {
7373
myWebSocketInstance.onmessage = recv_message.bind(this);

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ clientReceive
77
| browser-custom.js:46:37:48:5 | functio ... )\\n } |
88
| browser-custom.js:57:34:60:5 | functio ... ;\\n } |
99
| browser-custom.js:62:50:64:5 | functio ... ;\\n } |
10+
| browser-custom.js:68:22:70:1 | functio ... ata);\\n} |
1011
| browser.js:8:37:10:2 | functio ... ta);\\n\\t} |
1112
| browser.js:12:21:14:2 | functio ... ata)\\n\\t} |
1213
| browser.js:24:19:27:2 | functio ... e();\\n\\t} |
@@ -56,6 +57,7 @@ flowSteps
5657
| server.js:11:11:11:27 | 'Hi from server!' | browser-custom.js:43:45:43:54 | event.data |
5758
| server.js:11:11:11:27 | 'Hi from server!' | browser-custom.js:47:46:47:55 | event.data |
5859
| server.js:11:11:11:27 | 'Hi from server!' | browser-custom.js:58:32:58:37 | e.data |
60+
| server.js:11:11:11:27 | 'Hi from server!' | browser-custom.js:69:38:69:43 | e.data |
5961
| server.js:11:11:11:27 | 'Hi from server!' | browser.js:9:39:9:48 | event.data |
6062
| server.js:11:11:11:27 | 'Hi from server!' | browser.js:13:40:13:49 | event.data |
6163
| server.js:11:11:11:27 | 'Hi from server!' | browser.js:25:26:25:31 | e.data |
@@ -70,6 +72,7 @@ flowSteps
7072
| sockjs.js:11:20:11:50 | JSON.st ... .test)) | browser-custom.js:47:46:47:55 | event.data |
7173
| sockjs.js:11:20:11:50 | JSON.st ... .test)) | browser-custom.js:58:32:58:37 | e.data |
7274
| sockjs.js:11:20:11:50 | JSON.st ... .test)) | browser-custom.js:63:48:63:57 | event.data |
75+
| sockjs.js:11:20:11:50 | JSON.st ... .test)) | browser-custom.js:69:38:69:43 | e.data |
7376
| sockjs.js:11:20:11:50 | JSON.st ... .test)) | browser.js:13:40:13:49 | event.data |
7477
| sockjs.js:11:20:11:50 | JSON.st ... .test)) | browser.js:25:26:25:31 | e.data |
7578
| sockjs.js:11:20:11:50 | JSON.st ... .test)) | browser.js:30:42:30:51 | event.data |

0 commit comments

Comments
 (0)