diff --git a/src/request_body_processor/multipart.cc b/src/request_body_processor/multipart.cc index c8d78c7e0..3001019bc 100644 --- a/src/request_body_processor/multipart.cc +++ b/src/request_body_processor/multipart.cc @@ -1140,6 +1140,10 @@ int Multipart::multipart_complete(std::string *error) { "Multipart: Warning: invalid header folding used."); } + m_transaction->m_variableMultipartFileLimitExceeded.set( + std::to_string(m_flag_file_limit_exceeded), + m_transaction->m_variableOffset); + m_transaction->m_variableMultipartStrictError.set( std::to_string(m_flag_error || m_flag_boundary_quoted != 0 || m_flag_boundary_whitespace != 0 || m_flag_data_before != 0 diff --git a/test/test-cases/regression/request-body-parser-multipart.json b/test/test-cases/regression/request-body-parser-multipart.json index 84e61c1e0..9bfa2bd1f 100644 --- a/test/test-cases/regression/request-body-parser-multipart.json +++ b/test/test-cases/regression/request-body-parser-multipart.json @@ -1525,7 +1525,7 @@ }, "expected": { "debug_log": "boundary whitespace in C-T header", - "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 0,BW 1,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL \"", + "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 0,BW 1,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL 0\"", "http_code": 403 }, "rules": [ @@ -1587,7 +1587,7 @@ ] }, "expected": { - "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 0,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL \"", + "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 0,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL 0\"", "http_code": 403 }, "rules": [ @@ -1650,7 +1650,7 @@ }, "expected": { "debug_log": "No boundaries found in payload", - "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 0,BW 0,DB 1,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL \"", + "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 0,BW 0,DB 1,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL 0\"", "http_code": 403 }, "rules": [ @@ -1713,7 +1713,7 @@ }, "expected": { "debug_log": "Invalid boundary in C-T \\(characters\\)", - "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 0,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL \"", + "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 0,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL 0\"", "http_code": 403 }, "rules": [ @@ -1776,7 +1776,7 @@ }, "expected": { "debug_log": "boundary was quoted", - "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 1,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL \"", + "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 1,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL 0\"", "http_code": 403 }, "rules": [ @@ -1839,7 +1839,7 @@ }, "expected": { "debug_log": "boundary was quoted.*No boundaries found in payload", - "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 1,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL \"", + "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 1,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL 0\"", "http_code": 403 }, "rules": [ @@ -1902,7 +1902,7 @@ }, "expected": { "debug_log": "Invalid boundary in C-T \\(characters\\).*boundary was quoted.", - "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 1,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL \"", + "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 1,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL 0\"", "http_code": 403 }, "rules": [ @@ -1965,7 +1965,7 @@ }, "expected": { "debug_log": "Invalid boundary in C-T \\(characters\\).*boundary was quoted.", - "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 1,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL \"", + "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 1,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL 0\"", "http_code": 403 }, "rules": [ @@ -2028,7 +2028,7 @@ }, "expected": { "debug_log": "boundary was quoted", - "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 1,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL \"", + "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 1,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL 0\"", "http_code": 403 }, "rules": [ @@ -2091,7 +2091,7 @@ }, "expected": { "debug_log": "Invalid boundary in C-T \\(characters\\)", - "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 1,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL \"", + "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 1,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL 0\"", "http_code": 403 }, "rules": [ @@ -2154,7 +2154,7 @@ }, "expected": { "debug_log": "Invalid boundary in C-T \\(characters\\)", - "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 1,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL \"", + "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 1,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL 0\"", "http_code": 403 }, "rules": [ @@ -2217,7 +2217,7 @@ }, "expected": { "debug_log": "Invalid boundary in C-T \\(quote\\)", - "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 0,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL \"", + "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 0,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL 0\"", "http_code": 403 }, "rules": [ @@ -2280,7 +2280,7 @@ }, "expected": { "debug_log": "Invalid boundary in C-T \\(quote\\)", - "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 0,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL \"", + "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 0,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 0,IH 0,FL 0\"", "http_code": 403 }, "rules": [ @@ -2353,7 +2353,7 @@ }, "expected": { "debug_log": "Invalid Content-Disposition header", - "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 0,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 1,IH 0,FL \"", + "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 0,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 1,IH 0,FL 0\"", "http_code": 403 }, "rules": [ @@ -2425,7 +2425,7 @@ }, "expected": { "debug_log": "Part missing Content-Disposition header", - "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 0,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 1,IH 0,FL \"", + "error_log": "msg \"Multipart request body failed strict validation:PE 1,BQ 0,BW 0,DB 0,DA 0,HF 0,LF 0,SM 0,IQ 0,IP 1,IH 0,FL 0\"", "http_code": 403 }, "rules": [ @@ -2502,6 +2502,7 @@ }, "expected": { "debug_log": "Upload file limit exceeded", + "error_log": "Check variable for test:FL 1", "http_code": 403 }, "rules": [ @@ -2511,7 +2512,7 @@ "SecUploadFileLimit 2", "SecRule MULTIPART_STRICT_ERROR \"!@eq 1\" \"phase:2,deny,id:500161\"", "SecRule MULTIPART_FILE_LIMIT_EXCEEDED \"!@eq 1\" \"phase:2,deny,id:500162\"", - "SecRule REQBODY_PROCESSOR_ERROR \"@eq 1\" \"phase:2,deny,id:500163\"", + "SecRule REQBODY_PROCESSOR_ERROR \"@eq 1\" \"phase:2,deny,id:500163,msg:'Check variable for test:FL %{MULTIPART_FILE_LIMIT_EXCEEDED}'\"", "SecRule &FILES \"!@eq 3\" \"phase:2,deny,id:500164\"", "SecRule &FILES_NAMES \"!@eq 3\" \"phase:2,deny,id:500165\"", "SecRule &FILES_SIZES \"!@eq 3\" \"phase:2,deny,id:500166\"",