From 58dab481568e608dd15038e98267e5677ea1cb57 Mon Sep 17 00:00:00 2001 From: Sergey Lyubka Date: Fri, 20 Dec 2013 17:59:07 +0000 Subject: [PATCH] Using unsigned char in deliver_websocket_frame() arithmetic --- mongoose.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mongoose.c b/mongoose.c index 2d5dd395..68ef0319 100644 --- a/mongoose.c +++ b/mongoose.c @@ -1384,7 +1384,8 @@ static void send_websocket_handshake(struct mg_connection *conn, } static int deliver_websocket_frame(struct connection *conn) { - char *buf = conn->local_iobuf.buf; + // Having buf unsigned char * is important, as it is used below in arithmetic + unsigned char *buf = (unsigned char *) conn->local_iobuf.buf; int i, len, buf_len = conn->local_iobuf.len, frame_len = 0, mask_len = 0, header_len = 0, data_len = 0, buffered = 0; @@ -1409,7 +1410,7 @@ static int deliver_websocket_frame(struct connection *conn) { if (buffered) { conn->mg_conn.content_len = data_len; - conn->mg_conn.content = buf + header_len; + conn->mg_conn.content = (char *) buf + header_len; conn->mg_conn.wsbits = buf[0]; // Apply mask if necessary