aboutsummaryrefslogtreecommitdiff
path: root/src/microhttpd/connection.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/microhttpd/connection.c')
-rw-r--r--src/microhttpd/connection.c134
1 files changed, 85 insertions, 49 deletions
diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
index 52dbfb3f..bfe5b820 100644
--- a/src/microhttpd/connection.c
+++ b/src/microhttpd/connection.c
@@ -5062,11 +5062,14 @@ get_req_header (struct MHD_Connection *c,
5062 } 5062 }
5063 else if (! bare_cr_keep) 5063 else if (! bare_cr_keep)
5064 { 5064 {
5065 transmit_error_response_static (c, 5065 if (! process_footers)
5066 MHD_HTTP_BAD_REQUEST, 5066 transmit_error_response_static (c,
5067 (! process_footers) ? 5067 MHD_HTTP_BAD_REQUEST,
5068 BARE_CR_IN_HEADER : 5068 BARE_CR_IN_HEADER);
5069 BARE_CR_IN_FOOTER); 5069 else
5070 transmit_error_response_static (c,
5071 MHD_HTTP_BAD_REQUEST,
5072 BARE_CR_IN_FOOTER);
5070 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */ 5073 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */
5071 } 5074 }
5072 end_of_line = false; 5075 end_of_line = false;
@@ -5088,10 +5091,14 @@ get_req_header (struct MHD_Connection *c,
5088 } 5091 }
5089 else 5092 else
5090 { 5093 {
5091 transmit_error_response_static (c, 5094 if (! process_footers)
5092 MHD_HTTP_BAD_REQUEST, 5095 transmit_error_response_static (c,
5093 (! process_footers) ? 5096 MHD_HTTP_BAD_REQUEST,
5094 BARE_LF_IN_HEADER : BARE_LF_IN_FOOTER); 5097 BARE_LF_IN_HEADER);
5098 else
5099 transmit_error_response_static (c,
5100 MHD_HTTP_BAD_REQUEST,
5101 BARE_LF_IN_FOOTER);
5095 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */ 5102 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */
5096 } 5103 }
5097 } 5104 }
@@ -5135,11 +5142,15 @@ get_req_header (struct MHD_Connection *c,
5135 /* Folded line */ 5142 /* Folded line */
5136 if (! allow_folded) 5143 if (! allow_folded)
5137 { 5144 {
5138 transmit_error_response_static (c, 5145 if (! process_footers)
5139 MHD_HTTP_BAD_REQUEST, 5146 transmit_error_response_static (c,
5140 (! process_footers) ? 5147 MHD_HTTP_BAD_REQUEST,
5141 ERR_RSP_OBS_FOLD : 5148 ERR_RSP_OBS_FOLD);
5142 ERR_RSP_OBS_FOLD_FOOTER); 5149 else
5150 transmit_error_response_static (c,
5151 MHD_HTTP_BAD_REQUEST,
5152 ERR_RSP_OBS_FOLD_FOOTER);
5153
5143 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */ 5154 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */
5144 } 5155 }
5145 /* Replace CRLF (or bare LF) character(s) with space characters. 5156 /* Replace CRLF (or bare LF) character(s) with space characters.
@@ -5171,11 +5182,15 @@ get_req_header (struct MHD_Connection *c,
5171 { 5182 {
5172 if (! allow_line_without_colon) 5183 if (! allow_line_without_colon)
5173 { 5184 {
5174 transmit_error_response_static (c, 5185 if (! process_footers)
5175 MHD_HTTP_BAD_REQUEST, 5186 transmit_error_response_static (c,
5176 (! process_footers) ? 5187 MHD_HTTP_BAD_REQUEST,
5177 ERR_RSP_HEADER_WITHOUT_COLON : 5188 ERR_RSP_HEADER_WITHOUT_COLON);
5178 ERR_RSP_FOOTER_WITHOUT_COLON); 5189 else
5190 transmit_error_response_static (c,
5191 MHD_HTTP_BAD_REQUEST,
5192 ERR_RSP_FOOTER_WITHOUT_COLON);
5193
5179 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */ 5194 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */
5180 } 5195 }
5181 /* Skip broken line completely */ 5196 /* Skip broken line completely */
@@ -5240,11 +5255,14 @@ get_req_header (struct MHD_Connection *c,
5240 { 5255 {
5241 if (! allow_wsp_at_start) 5256 if (! allow_wsp_at_start)
5242 { 5257 {
5243 transmit_error_response_static (c, 5258 if (! process_footers)
5244 MHD_HTTP_BAD_REQUEST, 5259 transmit_error_response_static (c,
5245 (! process_footers) ? 5260 MHD_HTTP_BAD_REQUEST,
5246 ERR_RSP_WSP_BEFORE_HEADER : 5261 ERR_RSP_WSP_BEFORE_HEADER);
5247 ERR_RSP_WSP_BEFORE_FOOTER); 5262 else
5263 transmit_error_response_static (c,
5264 MHD_HTTP_BAD_REQUEST,
5265 ERR_RSP_WSP_BEFORE_FOOTER);
5248 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */ 5266 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */
5249 } 5267 }
5250 c->rq.hdrs.hdr.starts_with_ws = true; 5268 c->rq.hdrs.hdr.starts_with_ws = true;
@@ -5260,11 +5278,15 @@ get_req_header (struct MHD_Connection *c,
5260 } 5278 }
5261 else 5279 else
5262 { 5280 {
5263 transmit_error_response_static (c, 5281 if (! process_footers)
5264 MHD_HTTP_BAD_REQUEST, 5282 transmit_error_response_static (c,
5265 (! process_footers) ? 5283 MHD_HTTP_BAD_REQUEST,
5266 ERR_RSP_WSP_IN_HEADER_NAME : 5284 ERR_RSP_WSP_IN_HEADER_NAME);
5267 ERR_RSP_WSP_IN_FOOTER_NAME); 5285 else
5286 transmit_error_response_static (c,
5287 MHD_HTTP_BAD_REQUEST,
5288 ERR_RSP_WSP_IN_FOOTER_NAME);
5289
5268 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */ 5290 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */
5269 } 5291 }
5270 } 5292 }
@@ -5279,11 +5301,15 @@ get_req_header (struct MHD_Connection *c,
5279 { 5301 {
5280 if (! nul_as_sp) 5302 if (! nul_as_sp)
5281 { 5303 {
5282 transmit_error_response_static (c, 5304 if (! process_footers)
5283 MHD_HTTP_BAD_REQUEST, 5305 transmit_error_response_static (c,
5284 (! process_footers) ? 5306 MHD_HTTP_BAD_REQUEST,
5285 ERR_RSP_INVALID_CHR_IN_HEADER : 5307 ERR_RSP_INVALID_CHR_IN_HEADER);
5286 ERR_RSP_INVALID_CHR_IN_FOOTER); 5308 else
5309 transmit_error_response_static (c,
5310 MHD_HTTP_BAD_REQUEST,
5311 ERR_RSP_INVALID_CHR_IN_FOOTER);
5312
5287 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */ 5313 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */
5288 } 5314 }
5289 c->read_buffer[p] = ' '; 5315 c->read_buffer[p] = ' ';
@@ -5308,11 +5334,14 @@ get_req_header (struct MHD_Connection *c,
5308 mhd_assert (allow_wsp_in_name || allow_wsp_before_colon); 5334 mhd_assert (allow_wsp_in_name || allow_wsp_before_colon);
5309 if (! allow_wsp_before_colon) 5335 if (! allow_wsp_before_colon)
5310 { 5336 {
5311 transmit_error_response_static (c, 5337 if (! process_footers)
5312 MHD_HTTP_BAD_REQUEST, 5338 transmit_error_response_static (c,
5313 (! process_footers) ? 5339 MHD_HTTP_BAD_REQUEST,
5314 ERR_RSP_WSP_IN_HEADER_NAME : 5340 ERR_RSP_WSP_IN_HEADER_NAME);
5315 ERR_RSP_WSP_IN_FOOTER_NAME); 5341 else
5342 transmit_error_response_static (c,
5343 MHD_HTTP_BAD_REQUEST,
5344 ERR_RSP_WSP_IN_FOOTER_NAME);
5316 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */ 5345 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */
5317 } 5346 }
5318 c->rq.hdrs.hdr.name_len = c->rq.hdrs.hdr.ws_start; 5347 c->rq.hdrs.hdr.name_len = c->rq.hdrs.hdr.ws_start;
@@ -5322,11 +5351,14 @@ get_req_header (struct MHD_Connection *c,
5322 } 5351 }
5323 if ((0 == c->rq.hdrs.hdr.name_len) && ! allow_empty_name) 5352 if ((0 == c->rq.hdrs.hdr.name_len) && ! allow_empty_name)
5324 { 5353 {
5325 transmit_error_response_static (c, 5354 if (! process_footers)
5326 MHD_HTTP_BAD_REQUEST, 5355 transmit_error_response_static (c,
5327 (! process_footers) ? 5356 MHD_HTTP_BAD_REQUEST,
5328 ERR_RSP_EMPTY_HEADER_NAME : 5357 ERR_RSP_EMPTY_HEADER_NAME);
5329 ERR_RSP_EMPTY_FOOTER_NAME); 5358 else
5359 transmit_error_response_static (c,
5360 MHD_HTTP_BAD_REQUEST,
5361 ERR_RSP_EMPTY_FOOTER_NAME);
5330 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */ 5362 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */
5331 } 5363 }
5332 c->rq.hdrs.hdr.name_end_found = true; 5364 c->rq.hdrs.hdr.name_end_found = true;
@@ -5340,11 +5372,15 @@ get_req_header (struct MHD_Connection *c,
5340 mhd_assert (allow_wsp_in_name || allow_wsp_before_colon); 5372 mhd_assert (allow_wsp_in_name || allow_wsp_before_colon);
5341 if (! allow_wsp_in_name) 5373 if (! allow_wsp_in_name)
5342 { 5374 {
5343 transmit_error_response_static (c, 5375 if (! process_footers)
5344 MHD_HTTP_BAD_REQUEST, 5376 transmit_error_response_static (c,
5345 (! process_footers) ? 5377 MHD_HTTP_BAD_REQUEST,
5346 ERR_RSP_WSP_IN_HEADER_NAME : 5378 ERR_RSP_WSP_IN_HEADER_NAME);
5347 ERR_RSP_WSP_IN_FOOTER_NAME); 5379 else
5380 transmit_error_response_static (c,
5381 MHD_HTTP_BAD_REQUEST,
5382 ERR_RSP_WSP_IN_FOOTER_NAME);
5383
5348 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */ 5384 return MHD_HDR_LINE_READING_DATA_ERROR; /* Error in the request */
5349 } 5385 }
5350#ifndef MHD_FAVOR_SMALL_CODE 5386#ifndef MHD_FAVOR_SMALL_CODE