mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-26 12:14:56 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c41a22195c | ||
|
|
900c05213b | ||
|
|
c5850e4b05 | ||
|
|
ff4649fe42 | ||
|
|
1a38e91042 | ||
|
|
b6196371bb | ||
|
|
12339bbf4c |
No files matched your search
@@ -58,11 +58,11 @@ static int check_pass(const char *user, const char *pass) {
|
|||||||
* or NULL if not found.
|
* or NULL if not found.
|
||||||
*/
|
*/
|
||||||
static struct session *get_session(struct http_message *hm) {
|
static struct session *get_session(struct http_message *hm) {
|
||||||
struct mg_str *cookie_header = mg_get_http_header(hm, "cookie");
|
|
||||||
if (cookie_header == NULL) goto clean;
|
|
||||||
char ssid_buf[21];
|
char ssid_buf[21];
|
||||||
char *ssid = ssid_buf;
|
char *ssid = ssid_buf;
|
||||||
struct session *ret = NULL;
|
struct session *ret = NULL;
|
||||||
|
struct mg_str *cookie_header = mg_get_http_header(hm, "cookie");
|
||||||
|
if (cookie_header == NULL) goto clean;
|
||||||
if (!mg_http_parse_header2(cookie_header, SESSION_COOKIE_NAME, &ssid,
|
if (!mg_http_parse_header2(cookie_header, SESSION_COOKIE_NAME, &ssid,
|
||||||
sizeof(ssid_buf))) {
|
sizeof(ssid_buf))) {
|
||||||
goto clean;
|
goto clean;
|
||||||
|
|||||||
+2
-1
@@ -6289,7 +6289,7 @@ int mg_parse_http(const char *s, int n, struct http_message *hm, int is_req) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
s = mg_skip(s, end, " ", &hm->proto);
|
s = mg_skip(s, end, " ", &hm->proto);
|
||||||
if (end - s < 4 || s[3] != ' ') return -1;
|
if (end - s < 4 || s[0] < '0' || s[0] > '9' || s[3] != ' ') return -1;
|
||||||
hm->resp_code = atoi(s);
|
hm->resp_code = atoi(s);
|
||||||
if (hm->resp_code < 100 || hm->resp_code >= 600) return -1;
|
if (hm->resp_code < 100 || hm->resp_code >= 600) return -1;
|
||||||
s += 4;
|
s += 4;
|
||||||
@@ -6590,6 +6590,7 @@ void mg_http_handler(struct mg_connection *nc, int ev,
|
|||||||
struct mg_http_multipart_part mp;
|
struct mg_http_multipart_part mp;
|
||||||
memset(&mp, 0, sizeof(mp));
|
memset(&mp, 0, sizeof(mp));
|
||||||
mp.status = -1;
|
mp.status = -1;
|
||||||
|
mp.user_data = pd->mp_stream.user_data;
|
||||||
mp.var_name = pd->mp_stream.var_name;
|
mp.var_name = pd->mp_stream.var_name;
|
||||||
mp.file_name = pd->mp_stream.file_name;
|
mp.file_name = pd->mp_stream.file_name;
|
||||||
mg_call(nc, (pd->endpoint_handler ? pd->endpoint_handler : nc->handler),
|
mg_call(nc, (pd->endpoint_handler ? pd->endpoint_handler : nc->handler),
|
||||||
|
|||||||
+1
-1
@@ -23,7 +23,7 @@
|
|||||||
#ifndef CS_MONGOOSE_SRC_COMMON_H_
|
#ifndef CS_MONGOOSE_SRC_COMMON_H_
|
||||||
#define CS_MONGOOSE_SRC_COMMON_H_
|
#define CS_MONGOOSE_SRC_COMMON_H_
|
||||||
|
|
||||||
#define MG_VERSION "6.15"
|
#define MG_VERSION "6.16"
|
||||||
|
|
||||||
/* Local tweaks, applied before any of Mongoose's own headers. */
|
/* Local tweaks, applied before any of Mongoose's own headers. */
|
||||||
#ifdef MG_LOCALS
|
#ifdef MG_LOCALS
|
||||||
|
|||||||
+2
-1
@@ -455,7 +455,7 @@ int mg_parse_http(const char *s, int n, struct http_message *hm, int is_req) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
s = mg_skip(s, end, " ", &hm->proto);
|
s = mg_skip(s, end, " ", &hm->proto);
|
||||||
if (end - s < 4 || s[3] != ' ') return -1;
|
if (end - s < 4 || s[0] < '0' || s[0] > '9' || s[3] != ' ') return -1;
|
||||||
hm->resp_code = atoi(s);
|
hm->resp_code = atoi(s);
|
||||||
if (hm->resp_code < 100 || hm->resp_code >= 600) return -1;
|
if (hm->resp_code < 100 || hm->resp_code >= 600) return -1;
|
||||||
s += 4;
|
s += 4;
|
||||||
@@ -756,6 +756,7 @@ void mg_http_handler(struct mg_connection *nc, int ev,
|
|||||||
struct mg_http_multipart_part mp;
|
struct mg_http_multipart_part mp;
|
||||||
memset(&mp, 0, sizeof(mp));
|
memset(&mp, 0, sizeof(mp));
|
||||||
mp.status = -1;
|
mp.status = -1;
|
||||||
|
mp.user_data = pd->mp_stream.user_data;
|
||||||
mp.var_name = pd->mp_stream.var_name;
|
mp.var_name = pd->mp_stream.var_name;
|
||||||
mp.file_name = pd->mp_stream.file_name;
|
mp.file_name = pd->mp_stream.file_name;
|
||||||
mg_call(nc, (pd->endpoint_handler ? pd->endpoint_handler : nc->handler),
|
mg_call(nc, (pd->endpoint_handler ? pd->endpoint_handler : nc->handler),
|
||||||
|
|||||||
+5
-1
@@ -17,7 +17,7 @@ else
|
|||||||
COMMON_PARENT = $(SRC_DIR)
|
COMMON_PARENT = $(SRC_DIR)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
TEST_SOURCES = unit_test.c test_util.c test_main.c
|
TEST_SOURCES = unit_test.c test_util.c test_main.c fuzz.c
|
||||||
AMALGAMATED_SOURCES = ../mongoose.c
|
AMALGAMATED_SOURCES = ../mongoose.c
|
||||||
KRYPTON_PATH = $(REPO_ROOT)/krypton
|
KRYPTON_PATH = $(REPO_ROOT)/krypton
|
||||||
|
|
||||||
@@ -118,6 +118,10 @@ clean_index_cgi:
|
|||||||
@echo -e "CLEAN\tindex.cgi"
|
@echo -e "CLEAN\tindex.cgi"
|
||||||
@rm -f data/cgi/index.cgi*
|
@rm -f data/cgi/index.cgi*
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
$(CC) fuzz.c ../mongoose.c -o /tmp/$@ -fsanitize=fuzzer,address -g -I..
|
||||||
|
/tmp/$@
|
||||||
|
|
||||||
# Interactive:
|
# Interactive:
|
||||||
# docker run -v $(CURDIR)/../..:/cesanta -t -i --entrypoint=/bin/bash cesanta/mongoose_test
|
# docker run -v $(CURDIR)/../..:/cesanta -t -i --entrypoint=/bin/bash cesanta/mongoose_test
|
||||||
docker:
|
docker:
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#include "mongoose.h"
|
||||||
|
|
||||||
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||||
|
struct http_message req;
|
||||||
|
mg_parse_http((const char *) data, size, &req, 0);
|
||||||
|
mg_parse_http((const char *) data, size, &req, 1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in new issue
Block a user