From 8b423530393a232b5a4ca5c4d1adbbfe19560816 Mon Sep 17 00:00:00 2001
From: Deomid Ryabkov <rojer@cesanta.com>
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 589ec7fa3..34f0e6571 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 af94b7311..f8161a4b4 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 */
-- 
GitLab