diff options
author | 2015-02-16 19:05:45 +0100 | |
---|---|---|
committer | 2015-02-16 19:05:45 +0100 | |
commit | 9c3d3b3531567b0f53d58993f75689eb5badb8f3 (patch) | |
tree | 64d7864df39ae004c8f5cebc2afec8d47d3445f8 | |
parent | f8f4f49125316994dc1858cb908014876d1759d9 (diff) |
Sync with latest mongoose and added fixes for Mingw compile (nw)
-rw-r--r-- | 3rdparty/mongoose/LICENSE | 2 | ||||
-rw-r--r-- | 3rdparty/mongoose/README.md | 4 | ||||
-rw-r--r-- | 3rdparty/mongoose/docs/SSL.md | 15 | ||||
-rw-r--r-- | 3rdparty/mongoose/examples/http_client/Makefile | 2 | ||||
-rw-r--r-- | 3rdparty/mongoose/mongoose.c | 20 |
5 files changed, 23 insertions, 20 deletions
diff --git a/3rdparty/mongoose/LICENSE b/3rdparty/mongoose/LICENSE index 08bf9ddc136..feb3592d180 100644 --- a/3rdparty/mongoose/LICENSE +++ b/3rdparty/mongoose/LICENSE @@ -1,5 +1,5 @@ Copyright (c) 2004-2013 Sergey Lyubka <valenok@gmail.com> -Copyright (c) 2013 Cesanta Software Limited +Copyright (c) 2013-2015 Cesanta Software Limited All rights reserved This code is dual-licensed: you can redistribute it and/or modify diff --git a/3rdparty/mongoose/README.md b/3rdparty/mongoose/README.md index 20de33d5ee2..c0dcc2aaaf8 100644 --- a/3rdparty/mongoose/README.md +++ b/3rdparty/mongoose/README.md @@ -78,11 +78,9 @@ without any of the GPL restrictions. # Other products by Cesanta Software: simple and effective +- [Fossa](http://github.com/cesanta/fossa) - Multi-protocol networking library - [SSL Wrapper](https://github.com/cesanta/ssl_wrapper) - application to secure network communications - [Frozen](https://github.com/cesanta/frozen) - JSON parser and generator - [SLRE](https://github.com/cesanta/slre) - Super Light Regular Expression library -- [Net Skeleton](https://github.com/cesanta/net_skeleton) - framework for - building network applications -- [SLDR](https://github.com/cesanta/sldr) - Super Light DNS Resolver diff --git a/3rdparty/mongoose/docs/SSL.md b/3rdparty/mongoose/docs/SSL.md index df9b005caaa..09f16e9e756 100644 --- a/3rdparty/mongoose/docs/SSL.md +++ b/3rdparty/mongoose/docs/SSL.md @@ -1,20 +1,15 @@ # Mongoose SSL guide SSL is a protocol that makes web communication secure. To enable SSL -in mongoose, 3 steps are required: +in mongoose, 2 steps are required: - 1. Valid certificate file must be created - 2. `ssl_certificate` options must be set to contain path to the - certificate file. - 3. `listening_ports` option must contain a port number with letter `s` - appended to it, which instructs Mongoose to use SSL for all connections - made to that port. + 1. Create valid SSL certificate file + 2. Append SSL certificate file path to the `listening_ports` option Below is the `mongoose.conf` file snippet for typical SSL setup: - document_root www_root # Serve files in www_root directory - listening_ports 80r,443s # Redirect all HTTP requests to HTTPS - ssl_certificate ssl_cert.pem # Location of certificate file + document_root www_root # Serve files in www_root directory + listening_ports 80,443:cert.pem # Listen on ports 80 and 443 ## How to create SSL certificate file diff --git a/3rdparty/mongoose/examples/http_client/Makefile b/3rdparty/mongoose/examples/http_client/Makefile index 422948ffd67..5769babf0f7 100644 --- a/3rdparty/mongoose/examples/http_client/Makefile +++ b/3rdparty/mongoose/examples/http_client/Makefile @@ -9,4 +9,4 @@ unix: $(SOURCES) $(CC) -o $(PROG) $(SOURCES) $(CFLAGS) clean: - rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib + rm -rf $(PROG) *.exe *.dSYM *.obj *.exp *.o *.lib diff --git a/3rdparty/mongoose/mongoose.c b/3rdparty/mongoose/mongoose.c index d2ef7c927bd..c466c3543df 100644 --- a/3rdparty/mongoose/mongoose.c +++ b/3rdparty/mongoose/mongoose.c @@ -48,7 +48,7 @@ #define _INTEGRAL_MAX_BITS 64 // Enable _stati64() on Windows #define _CRT_SECURE_NO_WARNINGS // Disable deprecation warning in VS2005+ #undef WIN32_LEAN_AND_MEAN // Let windows.h always include winsock2.h -#ifdef __Linux__ +#if defined(__Linux__) || defined(_WIN32) #define _XOPEN_SOURCE 600 // For flockfile() on Linux #endif #define __STDC_FORMAT_MACROS // <inttypes.h> wants this for C++ @@ -347,6 +347,11 @@ size_t iobuf_append(struct iobuf *io, const void *buf, size_t len) { assert(io != NULL); assert(io->len <= io->size); + /* check overflow */ + if (len > ~(size_t)0 - (size_t)(io->buf + io->len)) { + return 0; + } + if (len <= 0) { } else if (io->len + len <= io->size) { memcpy(io->buf + io->len, buf, len); @@ -2893,7 +2898,7 @@ static void send_websocket_handshake(struct mg_connection *conn, static int deliver_websocket_frame(struct connection *conn) { // Having buf unsigned char * is important, as it is used below in arithmetic unsigned char *buf = (unsigned char *) conn->ns_conn->recv_iobuf.buf; - int i, len, buf_len = conn->ns_conn->recv_iobuf.len, frame_len = 0, + size_t i, len, buf_len = conn->ns_conn->recv_iobuf.len, frame_len = 0, mask_len = 0, header_len = 0, data_len = 0, buffered = 0; if (buf_len >= 2) { @@ -2904,10 +2909,10 @@ static int deliver_websocket_frame(struct connection *conn) { header_len = 2 + mask_len; } else if (len == 126 && buf_len >= 4 + mask_len) { header_len = 4 + mask_len; - data_len = ((((int) buf[2]) << 8) + buf[3]); + data_len = ((((size_t) buf[2]) << 8) + buf[3]); } else if (buf_len >= 10 + mask_len) { header_len = 10 + mask_len; - data_len = (int) (((uint64_t) htonl(* (uint32_t *) &buf[2])) << 32) + + data_len = (size_t) (((uint64_t) htonl(* (uint32_t *) &buf[2])) << 32) + htonl(* (uint32_t *) &buf[6]); } } @@ -2938,10 +2943,15 @@ static int deliver_websocket_frame(struct connection *conn) { } size_t mg_websocket_write(struct mg_connection *conn, int opcode, - const char *data, size_t data_len) { + const char *data, size_t data_len) { unsigned char mem[4192], *copy = mem; size_t copy_len = 0; + /* Check overflow */ + if (data_len > ~(size_t)0 - (size_t)10) { + return 0; + } + if (data_len + 10 > sizeof(mem) && (copy = (unsigned char *) NS_MALLOC(data_len + 10)) == NULL) { return 0; |