From 8b423530393a232b5a4ca5c4d1adbbfe19560816 Mon Sep 17 00:00:00 2001 From: Deomid Ryabkov Date: Thu, 27 Sep 2018 15:40:51 +0300 Subject: [PATCH] Check HTTP chunk size, ensure it's reasonable CL: mg: Check HTTP chunk size, ensure it's reasonable PUBLISHED_FROM=d9f6babd314c092b42ce9e7fe31d6b30a38366a2 --- mongoose.c | 4 ++++ src/mg_http.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/mongoose.c b/mongoose.c index 589ec7fa..34f0e657 100644 --- a/mongoose.c +++ b/mongoose.c @@ -6311,6 +6311,10 @@ static size_t mg_http_parse_chunk(char *buf, size_t len, char **chunk_data, n *= 16; n += (s[i] >= '0' && s[i] <= '9') ? s[i] - '0' : tolower(s[i]) - 'a' + 10; i++; + if (i > 6) { + /* Chunk size is unreasonable. */ + return 0; + } } /* Skip new line */ diff --git a/src/mg_http.c b/src/mg_http.c index af94b731..f8161a4b 100644 --- a/src/mg_http.c +++ b/src/mg_http.c @@ -564,6 +564,10 @@ static size_t mg_http_parse_chunk(char *buf, size_t len, char **chunk_data, n *= 16; n += (s[i] >= '0' && s[i] <= '9') ? s[i] - '0' : tolower(s[i]) - 'a' + 10; i++; + if (i > 6) { + /* Chunk size is unreasonable. */ + return 0; + } } /* Skip new line */