mirror of
https://github.com/holub/mame
synced 2025-10-04 16:34:53 +03:00
Sync with latest mongoose and added fixes for Mingw compile (nw)
This commit is contained in:
parent
f8f4f49125
commit
9c3d3b3531
2
3rdparty/mongoose/LICENSE
vendored
2
3rdparty/mongoose/LICENSE
vendored
@ -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
|
||||
|
4
3rdparty/mongoose/README.md
vendored
4
3rdparty/mongoose/README.md
vendored
@ -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
|
||||
|
15
3rdparty/mongoose/docs/SSL.md
vendored
15
3rdparty/mongoose/docs/SSL.md
vendored
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
20
3rdparty/mongoose/mongoose.c
vendored
20
3rdparty/mongoose/mongoose.c
vendored
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user