summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Grin (Karlson2k) <k2k@narod.ru>2021-10-17 17:31:37 +0300
committerEvgeny Grin (Karlson2k) <k2k@narod.ru>2021-10-17 17:31:37 +0300
commit381f2705a6236209c096c71d2cef507bd50fb7e3 (patch)
treefae8dd340f3e08c6668bfe30567cf703b4c2fba0
parent44b342f7ca7469f30df44c07936170e7635da149 (diff)
Fixed parsing of "\r\r", "\r", "\n\r" and "\n\n" as a single linefeed for chunked upload
-rw-r--r--src/microhttpd/connection.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
index 53e3b9ec..d524954a 100644
--- a/src/microhttpd/connection.c
+++ b/src/microhttpd/connection.c
@@ -3096,12 +3096,11 @@ process_request_body (struct MHD_Connection *connection)
size_t i;
/* skip new line at the *end* of a chunk */
i = 0;
- if ( ('\r' == buffer_head[i]) ||
- ('\n' == buffer_head[i]) )
- i++; /* skip 1st part of line feed */
- if ( ('\r' == buffer_head[i]) ||
- ('\n' == buffer_head[i]) )
- i++; /* skip 2nd part of line feed */
+ if ( ('\r' == buffer_head[i]) &&
+ ('\n' == buffer_head[i + 1]) )
+ i += 2; /* skip CRLF */
+ else if ('\n' == buffer_head[i]) /* TODO: Add MHD option to disallow */
+ i++; /* skip bare LF */
if (0 == i)
{
/* malformed encoding */