libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit 381f2705a6236209c096c71d2cef507bd50fb7e3
parent 44b342f7ca7469f30df44c07936170e7635da149
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Sun, 17 Oct 2021 17:31:37 +0300

Fixed parsing of "\r\r", "\r", "\n\r" and "\n\n" as a single linefeed for chunked upload

Diffstat:
Msrc/microhttpd/connection.c | 11+++++------
1 file changed, 5 insertions(+), 6 deletions(-)

diff --git 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 */