aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Grin (Karlson2k) <k2k@narod.ru>2021-11-22 21:37:44 +0300
committerEvgeny Grin (Karlson2k) <k2k@narod.ru>2021-11-24 19:07:42 +0300
commit8a69a4492345c359ab804109d97efb7e292a2c7b (patch)
treea4c6322b6d90db7753cb69d4bab0282339683b78
parenteebf9c28f01fdcd970a9f9496487930fe9eb4cea (diff)
downloadlibmicrohttpd-8a69a4492345c359ab804109d97efb7e292a2c7b.tar.gz
libmicrohttpd-8a69a4492345c359ab804109d97efb7e292a2c7b.zip
process_request_body(): fixed: do not skip chunk closure when too few data available
-rw-r--r--src/microhttpd/connection.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
index 0426620b..e65fc0b0 100644
--- a/src/microhttpd/connection.c
+++ b/src/microhttpd/connection.c
@@ -3113,17 +3113,20 @@ process_request_body (struct MHD_Connection *connection)
3113 mhd_assert (MHD_SIZE_UNKNOWN == connection->remaining_upload_size); 3113 mhd_assert (MHD_SIZE_UNKNOWN == connection->remaining_upload_size);
3114 if ( (connection->current_chunk_offset == 3114 if ( (connection->current_chunk_offset ==
3115 connection->current_chunk_size) && 3115 connection->current_chunk_size) &&
3116 (0LLU != connection->current_chunk_offset) && 3116 (0 != connection->current_chunk_size) )
3117 (available >= 2) )
3118 { 3117 {
3119 size_t i; 3118 size_t i;
3119 mhd_assert (0 != available);
3120 /* skip new line at the *end* of a chunk */ 3120 /* skip new line at the *end* of a chunk */
3121 i = 0; 3121 i = 0;
3122 if ( ('\r' == buffer_head[i]) && 3122 if ( (2 <= available) &&
3123 ('\n' == buffer_head[i + 1]) ) 3123 ('\r' == buffer_head[0]) &&
3124 ('\n' == buffer_head[1]) )
3124 i += 2; /* skip CRLF */ 3125 i += 2; /* skip CRLF */
3125 else if ('\n' == buffer_head[i]) /* TODO: Add MHD option to disallow */ 3126 else if ('\n' == buffer_head[0]) /* TODO: Add MHD option to disallow */
3126 i++; /* skip bare LF */ 3127 i++; /* skip bare LF */
3128 else if (2 > available)
3129 break; /* need more upload data */
3127 if (0 == i) 3130 if (0 == i)
3128 { 3131 {
3129 /* malformed encoding */ 3132 /* malformed encoding */