summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2015-02-16 19:05:45 +0100
committer Miodrag Milanovic <mmicko@gmail.com>2015-02-16 19:05:45 +0100
commit9c3d3b3531567b0f53d58993f75689eb5badb8f3 (patch)
tree64d7864df39ae004c8f5cebc2afec8d47d3445f8
parentf8f4f49125316994dc1858cb908014876d1759d9 (diff)
Sync with latest mongoose and added fixes for Mingw compile (nw)
-rw-r--r--3rdparty/mongoose/LICENSE2
-rw-r--r--3rdparty/mongoose/README.md4
-rw-r--r--3rdparty/mongoose/docs/SSL.md15
-rw-r--r--3rdparty/mongoose/examples/http_client/Makefile2
-rw-r--r--3rdparty/mongoose/mongoose.c20
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;