Skip to content

Commit 0eac759

Browse files
jan4984daeyeon
authored andcommitted
improve and bugfix websocket module
1). websocket.js should require tls module only in was a scheme. There are already runtime checks in websocket.js, this commits just catch the require statement. (#1891) 2). convert a signed char to unsigned short may cause websocket payload length overflow. like -1 for length 255 become 65535. IoT.js-DCO-1.0-Signed-off-by: YDJiang jan4984@gmail.com
1 parent df7621c commit 0eac759

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

src/js/websocket.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@
1616
var net = require('net');
1717
var util = require('util');
1818
var EventEmitter = require('events').EventEmitter;
19-
var tls = require('tls');
19+
var tls;
20+
try {
21+
tls = require('tls');
22+
} catch (e) {
23+
tls = {};
24+
}
2025

2126
util.inherits(Websocket, EventEmitter);
2227
util.inherits(WebsocketClient, EventEmitter);

src/modules/iotjs_module_websocket.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,8 @@ JS_FUNCTION(ws_receive) {
601601
if (current_buffer + sizeof(uint16_t) > current_buffer_end) {
602602
break;
603603
}
604-
payload_len = (uint16_t)(current_buffer[0] << 8 | current_buffer[1]);
604+
unsigned char *len_buffer = (unsigned char *)current_buffer;
605+
payload_len = (uint16_t)(len_buffer[0] << 8 | len_buffer[1]);
605606
current_buffer += sizeof(uint16_t);
606607
} else if (!(payload_byte ^ WS_THREE_BYTES_LENGTH)) {
607608
uint64_t payload_64bit_len;

0 commit comments

Comments
 (0)