Skip to content

Commit c5860e9

Browse files
committedApr 4, 2025
Updated WebSocketReceiveNode to match bind functions.
1 parent 4b7a9cd commit c5860e9

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed
 

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

+6
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,12 @@ module ClientWebSocket {
176176
this = getAMessageHandler(emitter, "addEventListener")
177177
or
178178
this = emitter.getReturn().getMember("onmessage").getAValueReachingSink()
179+
or
180+
exists(DataFlow::MethodCallNode bindCall |
181+
bindCall = emitter.getReturn().getMember("onmessage").getAValueReachingSink() and
182+
bindCall.getMethodName() = "bind" and
183+
this = bindCall.getReceiver().getAFunctionValue()
184+
)
179185
}
180186

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

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

+1-1
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

+2
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} |
@@ -54,6 +55,7 @@ flowSteps
5455
| server.js:11:11:11:27 | 'Hi from server!' | browser-custom.js:15:40:15:49 | event.data |
5556
| server.js:11:11:11:27 | 'Hi from server!' | browser-custom.js:43:45:43:54 | event.data |
5657
| server.js:11:11:11:27 | 'Hi from server!' | browser-custom.js:47:46:47:55 | event.data |
58+
| server.js:11:11:11:27 | 'Hi from server!' | browser-custom.js:69:38:69:43 | e.data |
5759
| server.js:11:11:11:27 | 'Hi from server!' | browser.js:9:39:9:48 | event.data |
5860
| server.js:11:11:11:27 | 'Hi from server!' | browser.js:13:40:13:49 | event.data |
5961
| server.js:11:11:11:27 | 'Hi from server!' | client-custom.js:10:37:10:40 | data |

0 commit comments

Comments
 (0)
Please sign in to comment.