Make sure to reserve enough space for large frames

Add description of header and increase header size from 8 to 14 bytes.
master
Jessie Murray 3 years ago
parent 3be189b527
commit 33b2923b3a
No known key found for this signature in database
GPG Key ID: E7E4D57EDDA744C5

@ -504,7 +504,13 @@ ws_process_read_data(struct ws_client *ws, unsigned int *out_processed) {
int int
ws_frame_and_send_response(struct ws_client *ws, enum ws_frame_type frame_type, const char *p, size_t sz) { ws_frame_and_send_response(struct ws_client *ws, enum ws_frame_type frame_type, const char *p, size_t sz) {
char *frame = malloc(sz + 8); /* create frame by prepending header */ /* we can have as much as 14 bytes in the header:
* 1 byte for 4 flag bits + 4 frame type bits
* 1 byte for the payload length indicator
* 8 bytes for the size of the payload (at most)
* 4 bytes for the masking key (if present)
*/
char *frame = malloc(sz + 14); /* create frame by prepending header */
size_t frame_sz = 0; size_t frame_sz = 0;
if(frame == NULL) if(frame == NULL)
return -1; return -1;

Loading…
Cancel
Save