mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-08-14 05:45:59 +03:00
Switch to simpler PCRE error flags
This commit is contained in:
parent
8c4b7c18e2
commit
0c42ee229e
@ -134,6 +134,8 @@ class TransactionAnchoredVariables {
|
||||
m_variableInboundDataError(t, "INBOUND_DATA_ERROR"),
|
||||
m_variableMatchedVar(t, "MATCHED_VAR"),
|
||||
m_variableMatchedVarName(t, "MATCHED_VAR_NAME"),
|
||||
m_variableMscPcreErrored(t, "MSC_PCRE_ERRORED"),
|
||||
m_variableMscPcreLimitsExceeded(t, "MSC_PCRE_LIMITS_EXCEEDED"),
|
||||
m_variableMultipartBoundaryQuoted(t, "MULTIPART_BOUNDARY_QUOTED"),
|
||||
m_variableMultipartBoundaryWhiteSpace(t,
|
||||
"MULTIPART_BOUNDARY_WHITESPACE"),
|
||||
@ -184,8 +186,6 @@ class TransactionAnchoredVariables {
|
||||
m_variableUniqueID(t, "UNIQUE_ID"),
|
||||
m_variableUrlEncodedError(t, "URLENCODED_ERROR"),
|
||||
m_variableUserID(t, "USERID"),
|
||||
m_variableRxError(t, "RX_ERROR"),
|
||||
m_variableRxErrorRuleID(t, "RX_ERROR_RULE_ID"),
|
||||
m_variableArgs(t, "ARGS"),
|
||||
m_variableArgsGet(t, "ARGS_GET"),
|
||||
m_variableArgsPost(t, "ARGS_POST"),
|
||||
@ -221,6 +221,8 @@ class TransactionAnchoredVariables {
|
||||
AnchoredVariable m_variableInboundDataError;
|
||||
AnchoredVariable m_variableMatchedVar;
|
||||
AnchoredVariable m_variableMatchedVarName;
|
||||
AnchoredVariable m_variableMscPcreErrored;
|
||||
AnchoredVariable m_variableMscPcreLimitsExceeded;
|
||||
AnchoredVariable m_variableMultipartBoundaryQuoted;
|
||||
AnchoredVariable m_variableMultipartBoundaryWhiteSpace;
|
||||
AnchoredVariable m_variableMultipartCrlfLFLines;
|
||||
@ -267,8 +269,6 @@ class TransactionAnchoredVariables {
|
||||
AnchoredVariable m_variableUniqueID;
|
||||
AnchoredVariable m_variableUrlEncodedError;
|
||||
AnchoredVariable m_variableUserID;
|
||||
AnchoredVariable m_variableRxError;
|
||||
AnchoredVariable m_variableRxErrorRuleID;
|
||||
|
||||
AnchoredSetVariable m_variableArgs;
|
||||
AnchoredSetVariable m_variableArgsGet;
|
||||
|
@ -68,21 +68,16 @@ bool Rx::evaluate(Transaction *transaction, RuleWithActions *rule,
|
||||
|
||||
// FIXME: DRY regex error reporting. This logic is currently duplicated in other operators.
|
||||
if (regex_result != Utils::RegexResult::Ok) {
|
||||
transaction->m_variableMscPcreErrored.set("1", transaction->m_variableOffset);
|
||||
|
||||
std::string regex_error_str = "OTHER";
|
||||
if (regex_result == Utils::RegexResult::ErrorMatchLimit) {
|
||||
regex_error_str = "MATCH_LIMIT";
|
||||
transaction->m_variableMscPcreLimitsExceeded.set("1", transaction->m_variableOffset);
|
||||
}
|
||||
|
||||
ms_dbg_a(transaction, 1, "rx: regex error '" + regex_error_str + "' for pattern '" + re->pattern + "'");
|
||||
|
||||
// Only expose the first regex error to indicate there is an issue
|
||||
if (rule && transaction && transaction->m_variableRxError.m_value.empty()) {
|
||||
transaction->m_variableRxError.set(regex_error_str, transaction->m_variableOffset);
|
||||
transaction->m_variableRxErrorRuleID.set(
|
||||
std::to_string(rule->m_ruleId),
|
||||
transaction->m_variableOffset
|
||||
);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -62,22 +62,16 @@ bool RxGlobal::evaluate(Transaction *transaction, RuleWithActions *rule,
|
||||
|
||||
// FIXME: DRY regex error reporting. This logic is currently duplicated in other operators.
|
||||
if (regex_result != Utils::RegexResult::Ok) {
|
||||
transaction->m_variableMscPcreErrored.set("1", transaction->m_variableOffset);
|
||||
|
||||
std::string regex_error_str = "OTHER";
|
||||
if (regex_result == Utils::RegexResult::ErrorMatchLimit) {
|
||||
regex_error_str = "MATCH_LIMIT";
|
||||
transaction->m_variableMscPcreLimitsExceeded.set("1", transaction->m_variableOffset);
|
||||
}
|
||||
|
||||
ms_dbg_a(transaction, 1, "rxGlobal: regex error '" + regex_error_str + "' for pattern '" + re->pattern + "'");
|
||||
|
||||
// Only expose the first regex error to indicate there is an issue
|
||||
if (rule && transaction && transaction->m_variableRxError.m_value.empty()) {
|
||||
transaction->m_variableRxError.set(regex_error_str, transaction->m_variableOffset);
|
||||
transaction->m_variableRxErrorRuleID.set(
|
||||
std::to_string(rule->m_ruleId),
|
||||
transaction->m_variableOffset
|
||||
);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -4279,330 +4279,330 @@ namespace yy {
|
||||
#line 4280 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 275: // var: VARIABLE_MULTIPART_BOUNDARY_QUOTED
|
||||
case 275: // var: "MSC_PCRE_ERRORED"
|
||||
#line 2329 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartBoundaryQuoted());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MscPcreErrored());
|
||||
}
|
||||
#line 4288 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 276: // var: VARIABLE_MULTIPART_BOUNDARY_WHITESPACE
|
||||
case 276: // var: "MSC_PCRE_LIMITS_EXCEEDED"
|
||||
#line 2333 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartBoundaryWhiteSpace());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MscPcreLimitsExceeded());
|
||||
}
|
||||
#line 4296 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 277: // var: "MULTIPART_CRLF_LF_LINES"
|
||||
case 277: // var: VARIABLE_MULTIPART_BOUNDARY_QUOTED
|
||||
#line 2337 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartCrlfLFLines());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartBoundaryQuoted());
|
||||
}
|
||||
#line 4304 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 278: // var: "MULTIPART_DATA_AFTER"
|
||||
case 278: // var: VARIABLE_MULTIPART_BOUNDARY_WHITESPACE
|
||||
#line 2341 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartDateAfter());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartBoundaryWhiteSpace());
|
||||
}
|
||||
#line 4312 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 279: // var: VARIABLE_MULTIPART_DATA_BEFORE
|
||||
case 279: // var: "MULTIPART_CRLF_LF_LINES"
|
||||
#line 2345 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartDateBefore());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartCrlfLFLines());
|
||||
}
|
||||
#line 4320 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 280: // var: "MULTIPART_FILE_LIMIT_EXCEEDED"
|
||||
case 280: // var: "MULTIPART_DATA_AFTER"
|
||||
#line 2349 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartFileLimitExceeded());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartDateAfter());
|
||||
}
|
||||
#line 4328 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 281: // var: "MULTIPART_HEADER_FOLDING"
|
||||
case 281: // var: VARIABLE_MULTIPART_DATA_BEFORE
|
||||
#line 2353 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartHeaderFolding());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartDateBefore());
|
||||
}
|
||||
#line 4336 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 282: // var: "MULTIPART_INVALID_HEADER_FOLDING"
|
||||
case 282: // var: "MULTIPART_FILE_LIMIT_EXCEEDED"
|
||||
#line 2357 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartInvalidHeaderFolding());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartFileLimitExceeded());
|
||||
}
|
||||
#line 4344 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 283: // var: VARIABLE_MULTIPART_INVALID_PART
|
||||
case 283: // var: "MULTIPART_HEADER_FOLDING"
|
||||
#line 2361 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartInvalidPart());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartHeaderFolding());
|
||||
}
|
||||
#line 4352 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 284: // var: "MULTIPART_INVALID_QUOTING"
|
||||
case 284: // var: "MULTIPART_INVALID_HEADER_FOLDING"
|
||||
#line 2365 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartInvalidQuoting());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartInvalidHeaderFolding());
|
||||
}
|
||||
#line 4360 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 285: // var: VARIABLE_MULTIPART_LF_LINE
|
||||
case 285: // var: VARIABLE_MULTIPART_INVALID_PART
|
||||
#line 2369 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartLFLine());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartInvalidPart());
|
||||
}
|
||||
#line 4368 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 286: // var: VARIABLE_MULTIPART_MISSING_SEMICOLON
|
||||
case 286: // var: "MULTIPART_INVALID_QUOTING"
|
||||
#line 2373 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartMissingSemicolon());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartInvalidQuoting());
|
||||
}
|
||||
#line 4376 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 287: // var: VARIABLE_MULTIPART_SEMICOLON_MISSING
|
||||
case 287: // var: VARIABLE_MULTIPART_LF_LINE
|
||||
#line 2377 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartMissingSemicolon());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartLFLine());
|
||||
}
|
||||
#line 4384 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 288: // var: "MULTIPART_STRICT_ERROR"
|
||||
case 288: // var: VARIABLE_MULTIPART_MISSING_SEMICOLON
|
||||
#line 2381 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartStrictError());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartMissingSemicolon());
|
||||
}
|
||||
#line 4392 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 289: // var: "MULTIPART_UNMATCHED_BOUNDARY"
|
||||
case 289: // var: VARIABLE_MULTIPART_SEMICOLON_MISSING
|
||||
#line 2385 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartUnmatchedBoundary());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartMissingSemicolon());
|
||||
}
|
||||
#line 4400 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 290: // var: "OUTBOUND_DATA_ERROR"
|
||||
case 290: // var: "MULTIPART_STRICT_ERROR"
|
||||
#line 2389 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::OutboundDataError());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartStrictError());
|
||||
}
|
||||
#line 4408 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 291: // var: "PATH_INFO"
|
||||
case 291: // var: "MULTIPART_UNMATCHED_BOUNDARY"
|
||||
#line 2393 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::PathInfo());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::MultipartUnmatchedBoundary());
|
||||
}
|
||||
#line 4416 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 292: // var: "QUERY_STRING"
|
||||
case 292: // var: "OUTBOUND_DATA_ERROR"
|
||||
#line 2397 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::QueryString());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::OutboundDataError());
|
||||
}
|
||||
#line 4424 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 293: // var: "REMOTE_ADDR"
|
||||
case 293: // var: "PATH_INFO"
|
||||
#line 2401 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RemoteAddr());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::PathInfo());
|
||||
}
|
||||
#line 4432 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 294: // var: "REMOTE_HOST"
|
||||
case 294: // var: "QUERY_STRING"
|
||||
#line 2405 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RemoteHost());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::QueryString());
|
||||
}
|
||||
#line 4440 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 295: // var: "REMOTE_PORT"
|
||||
case 295: // var: "REMOTE_ADDR"
|
||||
#line 2409 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RemotePort());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RemoteAddr());
|
||||
}
|
||||
#line 4448 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 296: // var: "REQBODY_ERROR"
|
||||
case 296: // var: "REMOTE_HOST"
|
||||
#line 2413 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ReqbodyError());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RemoteHost());
|
||||
}
|
||||
#line 4456 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 297: // var: "REQBODY_ERROR_MSG"
|
||||
case 297: // var: "REMOTE_PORT"
|
||||
#line 2417 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ReqbodyErrorMsg());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RemotePort());
|
||||
}
|
||||
#line 4464 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 298: // var: "REQBODY_PROCESSOR"
|
||||
case 298: // var: "REQBODY_ERROR"
|
||||
#line 2421 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ReqbodyProcessor());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ReqbodyError());
|
||||
}
|
||||
#line 4472 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 299: // var: "REQBODY_PROCESSOR_ERROR"
|
||||
case 299: // var: "REQBODY_ERROR_MSG"
|
||||
#line 2425 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ReqbodyProcessorError());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ReqbodyErrorMsg());
|
||||
}
|
||||
#line 4480 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 300: // var: "REQBODY_PROCESSOR_ERROR_MSG"
|
||||
case 300: // var: "REQBODY_PROCESSOR"
|
||||
#line 2429 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ReqbodyProcessorErrorMsg());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ReqbodyProcessor());
|
||||
}
|
||||
#line 4488 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 301: // var: "REQUEST_BASENAME"
|
||||
case 301: // var: "REQBODY_PROCESSOR_ERROR"
|
||||
#line 2433 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestBasename());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ReqbodyProcessorError());
|
||||
}
|
||||
#line 4496 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 302: // var: "REQUEST_BODY"
|
||||
case 302: // var: "REQBODY_PROCESSOR_ERROR_MSG"
|
||||
#line 2437 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestBody());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ReqbodyProcessorErrorMsg());
|
||||
}
|
||||
#line 4504 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 303: // var: "REQUEST_BODY_LENGTH"
|
||||
case 303: // var: "REQUEST_BASENAME"
|
||||
#line 2441 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestBodyLength());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestBasename());
|
||||
}
|
||||
#line 4512 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 304: // var: "REQUEST_FILENAME"
|
||||
case 304: // var: "REQUEST_BODY"
|
||||
#line 2445 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestFilename());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestBody());
|
||||
}
|
||||
#line 4520 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 305: // var: "REQUEST_LINE"
|
||||
case 305: // var: "REQUEST_BODY_LENGTH"
|
||||
#line 2449 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestLine());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestBodyLength());
|
||||
}
|
||||
#line 4528 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 306: // var: "REQUEST_METHOD"
|
||||
case 306: // var: "REQUEST_FILENAME"
|
||||
#line 2453 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestMethod());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestFilename());
|
||||
}
|
||||
#line 4536 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 307: // var: "REQUEST_PROTOCOL"
|
||||
case 307: // var: "REQUEST_LINE"
|
||||
#line 2457 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestProtocol());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestLine());
|
||||
}
|
||||
#line 4544 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 308: // var: "REQUEST_URI"
|
||||
case 308: // var: "REQUEST_METHOD"
|
||||
#line 2461 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestURI());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestMethod());
|
||||
}
|
||||
#line 4552 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 309: // var: "REQUEST_URI_RAW"
|
||||
case 309: // var: "REQUEST_PROTOCOL"
|
||||
#line 2465 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestURIRaw());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestProtocol());
|
||||
}
|
||||
#line 4560 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 310: // var: "RESPONSE_BODY"
|
||||
case 310: // var: "REQUEST_URI"
|
||||
#line 2469 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ResponseBody());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestURI());
|
||||
}
|
||||
#line 4568 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 311: // var: "RESPONSE_CONTENT_LENGTH"
|
||||
case 311: // var: "REQUEST_URI_RAW"
|
||||
#line 2473 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ResponseContentLength());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RequestURIRaw());
|
||||
}
|
||||
#line 4576 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 312: // var: "RESPONSE_PROTOCOL"
|
||||
case 312: // var: "RESPONSE_BODY"
|
||||
#line 2477 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ResponseProtocol());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ResponseBody());
|
||||
}
|
||||
#line 4584 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 313: // var: "RESPONSE_STATUS"
|
||||
case 313: // var: "RESPONSE_CONTENT_LENGTH"
|
||||
#line 2481 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ResponseStatus());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ResponseContentLength());
|
||||
}
|
||||
#line 4592 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 314: // var: "RX_ERROR"
|
||||
case 314: // var: "RESPONSE_PROTOCOL"
|
||||
#line 2485 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RxError());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ResponseProtocol());
|
||||
}
|
||||
#line 4600 "seclang-parser.cc"
|
||||
break;
|
||||
|
||||
case 315: // var: "RX_ERROR_RULE_ID"
|
||||
case 315: // var: "RESPONSE_STATUS"
|
||||
#line 2489 "seclang-parser.yy"
|
||||
{
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::RxErrorRuleID());
|
||||
VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr<Variable> > (), new variables::ResponseStatus());
|
||||
}
|
||||
#line 4608 "seclang-parser.cc"
|
||||
break;
|
||||
@ -6087,14 +6087,14 @@ namespace yy {
|
||||
-308, -308, -308, -308, -308, -308, -308, -308, -308, -308,
|
||||
-308, -308, -308, -308, -308, -308, -308, -308, 3133, -308,
|
||||
2, -308, -308, -308, -308, -308, -308, 2698, 2698, -307,
|
||||
-292, -197, -194, -193, -187, -186, -183, -182, -172, -171,
|
||||
-292, -197, -193, -192, -187, -186, -183, -182, -172, -171,
|
||||
-168, -167, -164, -163, -160, -159, -308, -156, -155, -152,
|
||||
-151, -308, -308, -148, -308, -308, -308, -308, -308, -308,
|
||||
-308, -308, -308, -308, -308, -308, -308, -308, -308, -308,
|
||||
-308, -308, -308, -308, -308, -308, -308, -308, -308, -308,
|
||||
-308, -308, -308, -308, -308, -308, -308, -308, -308, -147,
|
||||
-308, -308, -308, -308, -308, 462, -308, -308, -308, -144,
|
||||
-308, -308, -308, -308, -308, -308, -308, -308, -308, -308,
|
||||
-308, -147, -308, -308, -308, -308, -308, 462, -308, -308,
|
||||
-308, -144, -308, -308, -308, -308, -308, -308, -308, -308,
|
||||
-308, -308, -308, -308, 554, 646, 984, 1076, 1168, -141,
|
||||
-140, 1602, -308, -308, -308, -308, -308, -308, -308, -308,
|
||||
-308, -308, -308, -308, -308, -308, 16, -308, -308, -308,
|
||||
@ -6151,9 +6151,9 @@ namespace yy {
|
||||
259, 268, 269, 226, 270, 271, 272, 273, 274, 275,
|
||||
276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
|
||||
286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
|
||||
297, 296, 300, 299, 298, 301, 303, 302, 304, 262,
|
||||
305, 306, 307, 309, 308, 230, 310, 311, 263, 266,
|
||||
312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
|
||||
296, 297, 299, 298, 302, 301, 300, 303, 305, 304,
|
||||
306, 262, 307, 308, 309, 311, 310, 230, 312, 313,
|
||||
263, 266, 314, 315, 316, 317, 318, 319, 320, 321,
|
||||
322, 325, 323, 324, 234, 238, 246, 250, 242, 220,
|
||||
223, 0, 327, 326, 328, 329, 330, 331, 332, 333,
|
||||
334, 335, 336, 337, 338, 121, 156, 161, 122, 123,
|
||||
@ -6183,7 +6183,7 @@ namespace yy {
|
||||
const short
|
||||
seclang_parser::yypgoto_[] =
|
||||
{
|
||||
-308, -308, -74, -308, -47, 24, -308, -288, -308, -308,
|
||||
-308, -308, -74, -308, -47, -59, -308, -211, -308, -308,
|
||||
-51, -78, -61, -134, -308, -136
|
||||
};
|
||||
|
||||
@ -6211,8 +6211,8 @@ namespace yy {
|
||||
170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
|
||||
180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
|
||||
190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
|
||||
200, 201, 202, 203, 204, 205, 206, 207, 375, 419,
|
||||
376, 377, 379, 378, 380, 496, 369, 370, 381, 383,
|
||||
200, 201, 202, 203, 204, 205, 206, 207, 375, 367,
|
||||
376, 419, 377, 379, 378, 380, 369, 370, 381, 383,
|
||||
382, 384, 385, 387, 386, 388, 90, 91, 424, 427,
|
||||
430, 433, 436, 389, 391, 390, 392, 393, 395, 394,
|
||||
396, 397, 399, 398, 400, 401, 403, 402, 404, 405,
|
||||
@ -6220,7 +6220,7 @@ namespace yy {
|
||||
416, 420, 483, 421, 437, 439, 438, 440, 98, 99,
|
||||
100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
|
||||
110, 111, 213, 214, 334, 335, 336, 337, 352, 353,
|
||||
354, 355, 367, 441, 491, 0, 0, 0, 208, 0,
|
||||
354, 355, 496, 441, 491, 0, 0, 0, 208, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
327, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@ -6554,8 +6554,8 @@ namespace yy {
|
||||
202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
|
||||
212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
|
||||
222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
|
||||
232, 233, 234, 235, 236, 237, 238, 239, 345, 285,
|
||||
347, 345, 345, 347, 347, 443, 217, 218, 345, 345,
|
||||
232, 233, 234, 235, 236, 237, 238, 239, 345, 208,
|
||||
347, 287, 345, 345, 347, 347, 217, 218, 345, 345,
|
||||
347, 347, 345, 345, 347, 347, 309, 310, 304, 305,
|
||||
306, 307, 308, 345, 345, 347, 347, 345, 345, 347,
|
||||
347, 345, 345, 347, 347, 345, 345, 347, 347, 345,
|
||||
@ -6563,7 +6563,7 @@ namespace yy {
|
||||
347, 345, 338, 347, 345, 345, 347, 347, 309, 310,
|
||||
309, 310, 309, 310, 312, 313, 309, 310, 312, 313,
|
||||
309, 310, 309, 310, 309, 310, 309, 310, 309, 310,
|
||||
309, 310, 208, 311, 368, -1, -1, -1, 330, -1,
|
||||
309, 310, 443, 311, 368, -1, -1, -1, 330, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
311, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
@ -7060,8 +7060,8 @@ namespace yy {
|
||||
"VARIABLE_RULE", "\"Variable ARGS_NAMES\"", "VARIABLE_ARGS_POST_NAMES",
|
||||
"\"AUTH_TYPE\"", "\"FILES_COMBINED_SIZE\"", "\"FILES_TMPNAMES\"",
|
||||
"\"FULL_REQUEST\"", "\"FULL_REQUEST_LENGTH\"", "\"INBOUND_DATA_ERROR\"",
|
||||
"\"MATCHED_VAR\"", "\"MATCHED_VAR_NAME\"",
|
||||
"VARIABLE_MULTIPART_BOUNDARY_QUOTED",
|
||||
"\"MATCHED_VAR\"", "\"MATCHED_VAR_NAME\"", "\"MSC_PCRE_ERRORED\"",
|
||||
"\"MSC_PCRE_LIMITS_EXCEEDED\"", "VARIABLE_MULTIPART_BOUNDARY_QUOTED",
|
||||
"VARIABLE_MULTIPART_BOUNDARY_WHITESPACE", "\"MULTIPART_CRLF_LF_LINES\"",
|
||||
"\"MULTIPART_DATA_AFTER\"", "VARIABLE_MULTIPART_DATA_BEFORE",
|
||||
"\"MULTIPART_FILE_LIMIT_EXCEEDED\"", "\"MULTIPART_HEADER_FOLDING\"",
|
||||
@ -7080,9 +7080,8 @@ namespace yy {
|
||||
"\"REQUEST_URI_RAW\"", "\"REQUEST_URI\"", "\"RESOURCE\"",
|
||||
"\"RESPONSE_BODY\"", "\"RESPONSE_CONTENT_LENGTH\"",
|
||||
"VARIABLE_RESPONSE_CONTENT_TYPE", "VARIABLE_RESPONSE_HEADERS_NAMES",
|
||||
"\"RESPONSE_PROTOCOL\"", "\"RESPONSE_STATUS\"", "\"RX_ERROR\"",
|
||||
"\"RX_ERROR_RULE_ID\"", "\"SERVER_ADDR\"", "\"SERVER_NAME\"",
|
||||
"\"SERVER_PORT\"", "\"SESSIONID\"", "\"UNIQUE_ID\"",
|
||||
"\"RESPONSE_PROTOCOL\"", "\"RESPONSE_STATUS\"", "\"SERVER_ADDR\"",
|
||||
"\"SERVER_NAME\"", "\"SERVER_PORT\"", "\"SESSIONID\"", "\"UNIQUE_ID\"",
|
||||
"\"URLENCODED_ERROR\"", "\"USERID\"", "\"WEBAPPID\"",
|
||||
"\"VARIABLE_STATUS\"", "\"VARIABLE_STATUS_LINE\"", "\"VARIABLE_IP\"",
|
||||
"\"VARIABLE_GLOBAL\"", "\"VARIABLE_TX\"", "\"VARIABLE_SESSION\"",
|
||||
@ -7307,7 +7306,7 @@ namespace yy {
|
||||
|
||||
|
||||
} // yy
|
||||
#line 7311 "seclang-parser.cc"
|
||||
#line 7310 "seclang-parser.cc"
|
||||
|
||||
#line 3077 "seclang-parser.yy"
|
||||
|
||||
|
@ -223,6 +223,8 @@ class Driver;
|
||||
#include "src/variables/matched_vars.h"
|
||||
#include "src/variables/matched_vars_names.h"
|
||||
#include "src/variables/modsec_build.h"
|
||||
#include "src/variables/msc_pcre_errored.h"
|
||||
#include "src/variables/msc_pcre_limits_exceeded.h"
|
||||
#include "src/variables/multipart_boundary_quoted.h"
|
||||
#include "src/variables/multipart_boundary_whitespace.h"
|
||||
#include "src/variables/multipart_crlf_lf_lines.h"
|
||||
@ -274,8 +276,6 @@ class Driver;
|
||||
#include "src/variables/response_protocol.h"
|
||||
#include "src/variables/response_status.h"
|
||||
#include "src/variables/rule.h"
|
||||
#include "src/variables/rx_error.h"
|
||||
#include "src/variables/rx_error_rule_id.h"
|
||||
#include "src/variables/server_addr.h"
|
||||
#include "src/variables/server_name.h"
|
||||
#include "src/variables/server_port.h"
|
||||
@ -1025,51 +1025,51 @@ namespace yy {
|
||||
TOK_VARIABLE_INBOUND_DATA_ERROR = 292, // "INBOUND_DATA_ERROR"
|
||||
TOK_VARIABLE_MATCHED_VAR = 293, // "MATCHED_VAR"
|
||||
TOK_VARIABLE_MATCHED_VAR_NAME = 294, // "MATCHED_VAR_NAME"
|
||||
TOK_VARIABLE_MULTIPART_BOUNDARY_QUOTED = 295, // VARIABLE_MULTIPART_BOUNDARY_QUOTED
|
||||
TOK_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE = 296, // VARIABLE_MULTIPART_BOUNDARY_WHITESPACE
|
||||
TOK_VARIABLE_MULTIPART_CRLF_LF_LINES = 297, // "MULTIPART_CRLF_LF_LINES"
|
||||
TOK_VARIABLE_MULTIPART_DATA_AFTER = 298, // "MULTIPART_DATA_AFTER"
|
||||
TOK_VARIABLE_MULTIPART_DATA_BEFORE = 299, // VARIABLE_MULTIPART_DATA_BEFORE
|
||||
TOK_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED = 300, // "MULTIPART_FILE_LIMIT_EXCEEDED"
|
||||
TOK_VARIABLE_MULTIPART_HEADER_FOLDING = 301, // "MULTIPART_HEADER_FOLDING"
|
||||
TOK_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING = 302, // "MULTIPART_INVALID_HEADER_FOLDING"
|
||||
TOK_VARIABLE_MULTIPART_INVALID_PART = 303, // VARIABLE_MULTIPART_INVALID_PART
|
||||
TOK_VARIABLE_MULTIPART_INVALID_QUOTING = 304, // "MULTIPART_INVALID_QUOTING"
|
||||
TOK_VARIABLE_MULTIPART_LF_LINE = 305, // VARIABLE_MULTIPART_LF_LINE
|
||||
TOK_VARIABLE_MULTIPART_MISSING_SEMICOLON = 306, // VARIABLE_MULTIPART_MISSING_SEMICOLON
|
||||
TOK_VARIABLE_MULTIPART_SEMICOLON_MISSING = 307, // VARIABLE_MULTIPART_SEMICOLON_MISSING
|
||||
TOK_VARIABLE_MULTIPART_STRICT_ERROR = 308, // "MULTIPART_STRICT_ERROR"
|
||||
TOK_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY = 309, // "MULTIPART_UNMATCHED_BOUNDARY"
|
||||
TOK_VARIABLE_OUTBOUND_DATA_ERROR = 310, // "OUTBOUND_DATA_ERROR"
|
||||
TOK_VARIABLE_PATH_INFO = 311, // "PATH_INFO"
|
||||
TOK_VARIABLE_QUERY_STRING = 312, // "QUERY_STRING"
|
||||
TOK_VARIABLE_REMOTE_ADDR = 313, // "REMOTE_ADDR"
|
||||
TOK_VARIABLE_REMOTE_HOST = 314, // "REMOTE_HOST"
|
||||
TOK_VARIABLE_REMOTE_PORT = 315, // "REMOTE_PORT"
|
||||
TOK_VARIABLE_REQBODY_ERROR_MSG = 316, // "REQBODY_ERROR_MSG"
|
||||
TOK_VARIABLE_REQBODY_ERROR = 317, // "REQBODY_ERROR"
|
||||
TOK_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG = 318, // "REQBODY_PROCESSOR_ERROR_MSG"
|
||||
TOK_VARIABLE_REQBODY_PROCESSOR_ERROR = 319, // "REQBODY_PROCESSOR_ERROR"
|
||||
TOK_VARIABLE_REQBODY_PROCESSOR = 320, // "REQBODY_PROCESSOR"
|
||||
TOK_VARIABLE_REQUEST_BASENAME = 321, // "REQUEST_BASENAME"
|
||||
TOK_VARIABLE_REQUEST_BODY_LENGTH = 322, // "REQUEST_BODY_LENGTH"
|
||||
TOK_VARIABLE_REQUEST_BODY = 323, // "REQUEST_BODY"
|
||||
TOK_VARIABLE_REQUEST_FILE_NAME = 324, // "REQUEST_FILENAME"
|
||||
TOK_VARIABLE_REQUEST_HEADERS_NAMES = 325, // VARIABLE_REQUEST_HEADERS_NAMES
|
||||
TOK_VARIABLE_REQUEST_LINE = 326, // "REQUEST_LINE"
|
||||
TOK_VARIABLE_REQUEST_METHOD = 327, // "REQUEST_METHOD"
|
||||
TOK_VARIABLE_REQUEST_PROTOCOL = 328, // "REQUEST_PROTOCOL"
|
||||
TOK_VARIABLE_REQUEST_URI_RAW = 329, // "REQUEST_URI_RAW"
|
||||
TOK_VARIABLE_REQUEST_URI = 330, // "REQUEST_URI"
|
||||
TOK_VARIABLE_RESOURCE = 331, // "RESOURCE"
|
||||
TOK_VARIABLE_RESPONSE_BODY = 332, // "RESPONSE_BODY"
|
||||
TOK_VARIABLE_RESPONSE_CONTENT_LENGTH = 333, // "RESPONSE_CONTENT_LENGTH"
|
||||
TOK_VARIABLE_RESPONSE_CONTENT_TYPE = 334, // VARIABLE_RESPONSE_CONTENT_TYPE
|
||||
TOK_VARIABLE_RESPONSE_HEADERS_NAMES = 335, // VARIABLE_RESPONSE_HEADERS_NAMES
|
||||
TOK_VARIABLE_RESPONSE_PROTOCOL = 336, // "RESPONSE_PROTOCOL"
|
||||
TOK_VARIABLE_RESPONSE_STATUS = 337, // "RESPONSE_STATUS"
|
||||
TOK_VARIABLE_RX_ERROR = 338, // "RX_ERROR"
|
||||
TOK_VARIABLE_RX_ERROR_RULE_ID = 339, // "RX_ERROR_RULE_ID"
|
||||
TOK_VARIABLE_MSC_PCRE_ERRORED = 295, // "MSC_PCRE_ERRORED"
|
||||
TOK_VARIABLE_MSC_PCRE_LIMITS_EXCEEDED = 296, // "MSC_PCRE_LIMITS_EXCEEDED"
|
||||
TOK_VARIABLE_MULTIPART_BOUNDARY_QUOTED = 297, // VARIABLE_MULTIPART_BOUNDARY_QUOTED
|
||||
TOK_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE = 298, // VARIABLE_MULTIPART_BOUNDARY_WHITESPACE
|
||||
TOK_VARIABLE_MULTIPART_CRLF_LF_LINES = 299, // "MULTIPART_CRLF_LF_LINES"
|
||||
TOK_VARIABLE_MULTIPART_DATA_AFTER = 300, // "MULTIPART_DATA_AFTER"
|
||||
TOK_VARIABLE_MULTIPART_DATA_BEFORE = 301, // VARIABLE_MULTIPART_DATA_BEFORE
|
||||
TOK_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED = 302, // "MULTIPART_FILE_LIMIT_EXCEEDED"
|
||||
TOK_VARIABLE_MULTIPART_HEADER_FOLDING = 303, // "MULTIPART_HEADER_FOLDING"
|
||||
TOK_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING = 304, // "MULTIPART_INVALID_HEADER_FOLDING"
|
||||
TOK_VARIABLE_MULTIPART_INVALID_PART = 305, // VARIABLE_MULTIPART_INVALID_PART
|
||||
TOK_VARIABLE_MULTIPART_INVALID_QUOTING = 306, // "MULTIPART_INVALID_QUOTING"
|
||||
TOK_VARIABLE_MULTIPART_LF_LINE = 307, // VARIABLE_MULTIPART_LF_LINE
|
||||
TOK_VARIABLE_MULTIPART_MISSING_SEMICOLON = 308, // VARIABLE_MULTIPART_MISSING_SEMICOLON
|
||||
TOK_VARIABLE_MULTIPART_SEMICOLON_MISSING = 309, // VARIABLE_MULTIPART_SEMICOLON_MISSING
|
||||
TOK_VARIABLE_MULTIPART_STRICT_ERROR = 310, // "MULTIPART_STRICT_ERROR"
|
||||
TOK_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY = 311, // "MULTIPART_UNMATCHED_BOUNDARY"
|
||||
TOK_VARIABLE_OUTBOUND_DATA_ERROR = 312, // "OUTBOUND_DATA_ERROR"
|
||||
TOK_VARIABLE_PATH_INFO = 313, // "PATH_INFO"
|
||||
TOK_VARIABLE_QUERY_STRING = 314, // "QUERY_STRING"
|
||||
TOK_VARIABLE_REMOTE_ADDR = 315, // "REMOTE_ADDR"
|
||||
TOK_VARIABLE_REMOTE_HOST = 316, // "REMOTE_HOST"
|
||||
TOK_VARIABLE_REMOTE_PORT = 317, // "REMOTE_PORT"
|
||||
TOK_VARIABLE_REQBODY_ERROR_MSG = 318, // "REQBODY_ERROR_MSG"
|
||||
TOK_VARIABLE_REQBODY_ERROR = 319, // "REQBODY_ERROR"
|
||||
TOK_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG = 320, // "REQBODY_PROCESSOR_ERROR_MSG"
|
||||
TOK_VARIABLE_REQBODY_PROCESSOR_ERROR = 321, // "REQBODY_PROCESSOR_ERROR"
|
||||
TOK_VARIABLE_REQBODY_PROCESSOR = 322, // "REQBODY_PROCESSOR"
|
||||
TOK_VARIABLE_REQUEST_BASENAME = 323, // "REQUEST_BASENAME"
|
||||
TOK_VARIABLE_REQUEST_BODY_LENGTH = 324, // "REQUEST_BODY_LENGTH"
|
||||
TOK_VARIABLE_REQUEST_BODY = 325, // "REQUEST_BODY"
|
||||
TOK_VARIABLE_REQUEST_FILE_NAME = 326, // "REQUEST_FILENAME"
|
||||
TOK_VARIABLE_REQUEST_HEADERS_NAMES = 327, // VARIABLE_REQUEST_HEADERS_NAMES
|
||||
TOK_VARIABLE_REQUEST_LINE = 328, // "REQUEST_LINE"
|
||||
TOK_VARIABLE_REQUEST_METHOD = 329, // "REQUEST_METHOD"
|
||||
TOK_VARIABLE_REQUEST_PROTOCOL = 330, // "REQUEST_PROTOCOL"
|
||||
TOK_VARIABLE_REQUEST_URI_RAW = 331, // "REQUEST_URI_RAW"
|
||||
TOK_VARIABLE_REQUEST_URI = 332, // "REQUEST_URI"
|
||||
TOK_VARIABLE_RESOURCE = 333, // "RESOURCE"
|
||||
TOK_VARIABLE_RESPONSE_BODY = 334, // "RESPONSE_BODY"
|
||||
TOK_VARIABLE_RESPONSE_CONTENT_LENGTH = 335, // "RESPONSE_CONTENT_LENGTH"
|
||||
TOK_VARIABLE_RESPONSE_CONTENT_TYPE = 336, // VARIABLE_RESPONSE_CONTENT_TYPE
|
||||
TOK_VARIABLE_RESPONSE_HEADERS_NAMES = 337, // VARIABLE_RESPONSE_HEADERS_NAMES
|
||||
TOK_VARIABLE_RESPONSE_PROTOCOL = 338, // "RESPONSE_PROTOCOL"
|
||||
TOK_VARIABLE_RESPONSE_STATUS = 339, // "RESPONSE_STATUS"
|
||||
TOK_VARIABLE_SERVER_ADDR = 340, // "SERVER_ADDR"
|
||||
TOK_VARIABLE_SERVER_NAME = 341, // "SERVER_NAME"
|
||||
TOK_VARIABLE_SERVER_PORT = 342, // "SERVER_PORT"
|
||||
@ -1391,51 +1391,51 @@ namespace yy {
|
||||
S_VARIABLE_INBOUND_DATA_ERROR = 37, // "INBOUND_DATA_ERROR"
|
||||
S_VARIABLE_MATCHED_VAR = 38, // "MATCHED_VAR"
|
||||
S_VARIABLE_MATCHED_VAR_NAME = 39, // "MATCHED_VAR_NAME"
|
||||
S_VARIABLE_MULTIPART_BOUNDARY_QUOTED = 40, // VARIABLE_MULTIPART_BOUNDARY_QUOTED
|
||||
S_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE = 41, // VARIABLE_MULTIPART_BOUNDARY_WHITESPACE
|
||||
S_VARIABLE_MULTIPART_CRLF_LF_LINES = 42, // "MULTIPART_CRLF_LF_LINES"
|
||||
S_VARIABLE_MULTIPART_DATA_AFTER = 43, // "MULTIPART_DATA_AFTER"
|
||||
S_VARIABLE_MULTIPART_DATA_BEFORE = 44, // VARIABLE_MULTIPART_DATA_BEFORE
|
||||
S_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED = 45, // "MULTIPART_FILE_LIMIT_EXCEEDED"
|
||||
S_VARIABLE_MULTIPART_HEADER_FOLDING = 46, // "MULTIPART_HEADER_FOLDING"
|
||||
S_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING = 47, // "MULTIPART_INVALID_HEADER_FOLDING"
|
||||
S_VARIABLE_MULTIPART_INVALID_PART = 48, // VARIABLE_MULTIPART_INVALID_PART
|
||||
S_VARIABLE_MULTIPART_INVALID_QUOTING = 49, // "MULTIPART_INVALID_QUOTING"
|
||||
S_VARIABLE_MULTIPART_LF_LINE = 50, // VARIABLE_MULTIPART_LF_LINE
|
||||
S_VARIABLE_MULTIPART_MISSING_SEMICOLON = 51, // VARIABLE_MULTIPART_MISSING_SEMICOLON
|
||||
S_VARIABLE_MULTIPART_SEMICOLON_MISSING = 52, // VARIABLE_MULTIPART_SEMICOLON_MISSING
|
||||
S_VARIABLE_MULTIPART_STRICT_ERROR = 53, // "MULTIPART_STRICT_ERROR"
|
||||
S_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY = 54, // "MULTIPART_UNMATCHED_BOUNDARY"
|
||||
S_VARIABLE_OUTBOUND_DATA_ERROR = 55, // "OUTBOUND_DATA_ERROR"
|
||||
S_VARIABLE_PATH_INFO = 56, // "PATH_INFO"
|
||||
S_VARIABLE_QUERY_STRING = 57, // "QUERY_STRING"
|
||||
S_VARIABLE_REMOTE_ADDR = 58, // "REMOTE_ADDR"
|
||||
S_VARIABLE_REMOTE_HOST = 59, // "REMOTE_HOST"
|
||||
S_VARIABLE_REMOTE_PORT = 60, // "REMOTE_PORT"
|
||||
S_VARIABLE_REQBODY_ERROR_MSG = 61, // "REQBODY_ERROR_MSG"
|
||||
S_VARIABLE_REQBODY_ERROR = 62, // "REQBODY_ERROR"
|
||||
S_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG = 63, // "REQBODY_PROCESSOR_ERROR_MSG"
|
||||
S_VARIABLE_REQBODY_PROCESSOR_ERROR = 64, // "REQBODY_PROCESSOR_ERROR"
|
||||
S_VARIABLE_REQBODY_PROCESSOR = 65, // "REQBODY_PROCESSOR"
|
||||
S_VARIABLE_REQUEST_BASENAME = 66, // "REQUEST_BASENAME"
|
||||
S_VARIABLE_REQUEST_BODY_LENGTH = 67, // "REQUEST_BODY_LENGTH"
|
||||
S_VARIABLE_REQUEST_BODY = 68, // "REQUEST_BODY"
|
||||
S_VARIABLE_REQUEST_FILE_NAME = 69, // "REQUEST_FILENAME"
|
||||
S_VARIABLE_REQUEST_HEADERS_NAMES = 70, // VARIABLE_REQUEST_HEADERS_NAMES
|
||||
S_VARIABLE_REQUEST_LINE = 71, // "REQUEST_LINE"
|
||||
S_VARIABLE_REQUEST_METHOD = 72, // "REQUEST_METHOD"
|
||||
S_VARIABLE_REQUEST_PROTOCOL = 73, // "REQUEST_PROTOCOL"
|
||||
S_VARIABLE_REQUEST_URI_RAW = 74, // "REQUEST_URI_RAW"
|
||||
S_VARIABLE_REQUEST_URI = 75, // "REQUEST_URI"
|
||||
S_VARIABLE_RESOURCE = 76, // "RESOURCE"
|
||||
S_VARIABLE_RESPONSE_BODY = 77, // "RESPONSE_BODY"
|
||||
S_VARIABLE_RESPONSE_CONTENT_LENGTH = 78, // "RESPONSE_CONTENT_LENGTH"
|
||||
S_VARIABLE_RESPONSE_CONTENT_TYPE = 79, // VARIABLE_RESPONSE_CONTENT_TYPE
|
||||
S_VARIABLE_RESPONSE_HEADERS_NAMES = 80, // VARIABLE_RESPONSE_HEADERS_NAMES
|
||||
S_VARIABLE_RESPONSE_PROTOCOL = 81, // "RESPONSE_PROTOCOL"
|
||||
S_VARIABLE_RESPONSE_STATUS = 82, // "RESPONSE_STATUS"
|
||||
S_VARIABLE_RX_ERROR = 83, // "RX_ERROR"
|
||||
S_VARIABLE_RX_ERROR_RULE_ID = 84, // "RX_ERROR_RULE_ID"
|
||||
S_VARIABLE_MSC_PCRE_ERRORED = 40, // "MSC_PCRE_ERRORED"
|
||||
S_VARIABLE_MSC_PCRE_LIMITS_EXCEEDED = 41, // "MSC_PCRE_LIMITS_EXCEEDED"
|
||||
S_VARIABLE_MULTIPART_BOUNDARY_QUOTED = 42, // VARIABLE_MULTIPART_BOUNDARY_QUOTED
|
||||
S_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE = 43, // VARIABLE_MULTIPART_BOUNDARY_WHITESPACE
|
||||
S_VARIABLE_MULTIPART_CRLF_LF_LINES = 44, // "MULTIPART_CRLF_LF_LINES"
|
||||
S_VARIABLE_MULTIPART_DATA_AFTER = 45, // "MULTIPART_DATA_AFTER"
|
||||
S_VARIABLE_MULTIPART_DATA_BEFORE = 46, // VARIABLE_MULTIPART_DATA_BEFORE
|
||||
S_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED = 47, // "MULTIPART_FILE_LIMIT_EXCEEDED"
|
||||
S_VARIABLE_MULTIPART_HEADER_FOLDING = 48, // "MULTIPART_HEADER_FOLDING"
|
||||
S_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING = 49, // "MULTIPART_INVALID_HEADER_FOLDING"
|
||||
S_VARIABLE_MULTIPART_INVALID_PART = 50, // VARIABLE_MULTIPART_INVALID_PART
|
||||
S_VARIABLE_MULTIPART_INVALID_QUOTING = 51, // "MULTIPART_INVALID_QUOTING"
|
||||
S_VARIABLE_MULTIPART_LF_LINE = 52, // VARIABLE_MULTIPART_LF_LINE
|
||||
S_VARIABLE_MULTIPART_MISSING_SEMICOLON = 53, // VARIABLE_MULTIPART_MISSING_SEMICOLON
|
||||
S_VARIABLE_MULTIPART_SEMICOLON_MISSING = 54, // VARIABLE_MULTIPART_SEMICOLON_MISSING
|
||||
S_VARIABLE_MULTIPART_STRICT_ERROR = 55, // "MULTIPART_STRICT_ERROR"
|
||||
S_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY = 56, // "MULTIPART_UNMATCHED_BOUNDARY"
|
||||
S_VARIABLE_OUTBOUND_DATA_ERROR = 57, // "OUTBOUND_DATA_ERROR"
|
||||
S_VARIABLE_PATH_INFO = 58, // "PATH_INFO"
|
||||
S_VARIABLE_QUERY_STRING = 59, // "QUERY_STRING"
|
||||
S_VARIABLE_REMOTE_ADDR = 60, // "REMOTE_ADDR"
|
||||
S_VARIABLE_REMOTE_HOST = 61, // "REMOTE_HOST"
|
||||
S_VARIABLE_REMOTE_PORT = 62, // "REMOTE_PORT"
|
||||
S_VARIABLE_REQBODY_ERROR_MSG = 63, // "REQBODY_ERROR_MSG"
|
||||
S_VARIABLE_REQBODY_ERROR = 64, // "REQBODY_ERROR"
|
||||
S_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG = 65, // "REQBODY_PROCESSOR_ERROR_MSG"
|
||||
S_VARIABLE_REQBODY_PROCESSOR_ERROR = 66, // "REQBODY_PROCESSOR_ERROR"
|
||||
S_VARIABLE_REQBODY_PROCESSOR = 67, // "REQBODY_PROCESSOR"
|
||||
S_VARIABLE_REQUEST_BASENAME = 68, // "REQUEST_BASENAME"
|
||||
S_VARIABLE_REQUEST_BODY_LENGTH = 69, // "REQUEST_BODY_LENGTH"
|
||||
S_VARIABLE_REQUEST_BODY = 70, // "REQUEST_BODY"
|
||||
S_VARIABLE_REQUEST_FILE_NAME = 71, // "REQUEST_FILENAME"
|
||||
S_VARIABLE_REQUEST_HEADERS_NAMES = 72, // VARIABLE_REQUEST_HEADERS_NAMES
|
||||
S_VARIABLE_REQUEST_LINE = 73, // "REQUEST_LINE"
|
||||
S_VARIABLE_REQUEST_METHOD = 74, // "REQUEST_METHOD"
|
||||
S_VARIABLE_REQUEST_PROTOCOL = 75, // "REQUEST_PROTOCOL"
|
||||
S_VARIABLE_REQUEST_URI_RAW = 76, // "REQUEST_URI_RAW"
|
||||
S_VARIABLE_REQUEST_URI = 77, // "REQUEST_URI"
|
||||
S_VARIABLE_RESOURCE = 78, // "RESOURCE"
|
||||
S_VARIABLE_RESPONSE_BODY = 79, // "RESPONSE_BODY"
|
||||
S_VARIABLE_RESPONSE_CONTENT_LENGTH = 80, // "RESPONSE_CONTENT_LENGTH"
|
||||
S_VARIABLE_RESPONSE_CONTENT_TYPE = 81, // VARIABLE_RESPONSE_CONTENT_TYPE
|
||||
S_VARIABLE_RESPONSE_HEADERS_NAMES = 82, // VARIABLE_RESPONSE_HEADERS_NAMES
|
||||
S_VARIABLE_RESPONSE_PROTOCOL = 83, // "RESPONSE_PROTOCOL"
|
||||
S_VARIABLE_RESPONSE_STATUS = 84, // "RESPONSE_STATUS"
|
||||
S_VARIABLE_SERVER_ADDR = 85, // "SERVER_ADDR"
|
||||
S_VARIABLE_SERVER_NAME = 86, // "SERVER_NAME"
|
||||
S_VARIABLE_SERVER_PORT = 87, // "SERVER_PORT"
|
||||
@ -3119,6 +3119,36 @@ switch (yykind)
|
||||
return symbol_type (token::TOK_VARIABLE_MATCHED_VAR_NAME, l);
|
||||
}
|
||||
#endif
|
||||
#if 201103L <= YY_CPLUSPLUS
|
||||
static
|
||||
symbol_type
|
||||
make_VARIABLE_MSC_PCRE_ERRORED (location_type l)
|
||||
{
|
||||
return symbol_type (token::TOK_VARIABLE_MSC_PCRE_ERRORED, std::move (l));
|
||||
}
|
||||
#else
|
||||
static
|
||||
symbol_type
|
||||
make_VARIABLE_MSC_PCRE_ERRORED (const location_type& l)
|
||||
{
|
||||
return symbol_type (token::TOK_VARIABLE_MSC_PCRE_ERRORED, l);
|
||||
}
|
||||
#endif
|
||||
#if 201103L <= YY_CPLUSPLUS
|
||||
static
|
||||
symbol_type
|
||||
make_VARIABLE_MSC_PCRE_LIMITS_EXCEEDED (location_type l)
|
||||
{
|
||||
return symbol_type (token::TOK_VARIABLE_MSC_PCRE_LIMITS_EXCEEDED, std::move (l));
|
||||
}
|
||||
#else
|
||||
static
|
||||
symbol_type
|
||||
make_VARIABLE_MSC_PCRE_LIMITS_EXCEEDED (const location_type& l)
|
||||
{
|
||||
return symbol_type (token::TOK_VARIABLE_MSC_PCRE_LIMITS_EXCEEDED, l);
|
||||
}
|
||||
#endif
|
||||
#if 201103L <= YY_CPLUSPLUS
|
||||
static
|
||||
symbol_type
|
||||
@ -3764,36 +3794,6 @@ switch (yykind)
|
||||
return symbol_type (token::TOK_VARIABLE_RESPONSE_STATUS, l);
|
||||
}
|
||||
#endif
|
||||
#if 201103L <= YY_CPLUSPLUS
|
||||
static
|
||||
symbol_type
|
||||
make_VARIABLE_RX_ERROR (location_type l)
|
||||
{
|
||||
return symbol_type (token::TOK_VARIABLE_RX_ERROR, std::move (l));
|
||||
}
|
||||
#else
|
||||
static
|
||||
symbol_type
|
||||
make_VARIABLE_RX_ERROR (const location_type& l)
|
||||
{
|
||||
return symbol_type (token::TOK_VARIABLE_RX_ERROR, l);
|
||||
}
|
||||
#endif
|
||||
#if 201103L <= YY_CPLUSPLUS
|
||||
static
|
||||
symbol_type
|
||||
make_VARIABLE_RX_ERROR_RULE_ID (location_type l)
|
||||
{
|
||||
return symbol_type (token::TOK_VARIABLE_RX_ERROR_RULE_ID, std::move (l));
|
||||
}
|
||||
#else
|
||||
static
|
||||
symbol_type
|
||||
make_VARIABLE_RX_ERROR_RULE_ID (const location_type& l)
|
||||
{
|
||||
return symbol_type (token::TOK_VARIABLE_RX_ERROR_RULE_ID, l);
|
||||
}
|
||||
#endif
|
||||
#if 201103L <= YY_CPLUSPLUS
|
||||
static
|
||||
symbol_type
|
||||
|
@ -184,6 +184,8 @@ class Driver;
|
||||
#include "src/variables/matched_vars.h"
|
||||
#include "src/variables/matched_vars_names.h"
|
||||
#include "src/variables/modsec_build.h"
|
||||
#include "src/variables/msc_pcre_errored.h"
|
||||
#include "src/variables/msc_pcre_limits_exceeded.h"
|
||||
#include "src/variables/multipart_boundary_quoted.h"
|
||||
#include "src/variables/multipart_boundary_whitespace.h"
|
||||
#include "src/variables/multipart_crlf_lf_lines.h"
|
||||
@ -235,8 +237,6 @@ class Driver;
|
||||
#include "src/variables/response_protocol.h"
|
||||
#include "src/variables/response_status.h"
|
||||
#include "src/variables/rule.h"
|
||||
#include "src/variables/rx_error.h"
|
||||
#include "src/variables/rx_error_rule_id.h"
|
||||
#include "src/variables/server_addr.h"
|
||||
#include "src/variables/server_name.h"
|
||||
#include "src/variables/server_port.h"
|
||||
@ -370,6 +370,8 @@ using namespace modsecurity::operators;
|
||||
VARIABLE_INBOUND_DATA_ERROR "INBOUND_DATA_ERROR"
|
||||
VARIABLE_MATCHED_VAR "MATCHED_VAR"
|
||||
VARIABLE_MATCHED_VAR_NAME "MATCHED_VAR_NAME"
|
||||
VARIABLE_MSC_PCRE_ERRORED "MSC_PCRE_ERRORED"
|
||||
VARIABLE_MSC_PCRE_LIMITS_EXCEEDED "MSC_PCRE_LIMITS_EXCEEDED"
|
||||
VARIABLE_MULTIPART_BOUNDARY_QUOTED
|
||||
VARIABLE_MULTIPART_BOUNDARY_WHITESPACE
|
||||
VARIABLE_MULTIPART_CRLF_LF_LINES "MULTIPART_CRLF_LF_LINES"
|
||||
@ -413,8 +415,6 @@ using namespace modsecurity::operators;
|
||||
VARIABLE_RESPONSE_HEADERS_NAMES
|
||||
VARIABLE_RESPONSE_PROTOCOL "RESPONSE_PROTOCOL"
|
||||
VARIABLE_RESPONSE_STATUS "RESPONSE_STATUS"
|
||||
VARIABLE_RX_ERROR "RX_ERROR"
|
||||
VARIABLE_RX_ERROR_RULE_ID "RX_ERROR_RULE_ID"
|
||||
VARIABLE_SERVER_ADDR "SERVER_ADDR"
|
||||
VARIABLE_SERVER_NAME "SERVER_NAME"
|
||||
VARIABLE_SERVER_PORT "SERVER_PORT"
|
||||
@ -2325,6 +2325,14 @@ var:
|
||||
{
|
||||
VARIABLE_CONTAINER($$, new variables::MatchedVarName());
|
||||
}
|
||||
| VARIABLE_MSC_PCRE_ERRORED
|
||||
{
|
||||
VARIABLE_CONTAINER($$, new variables::MscPcreErrored());
|
||||
}
|
||||
| VARIABLE_MSC_PCRE_LIMITS_EXCEEDED
|
||||
{
|
||||
VARIABLE_CONTAINER($$, new variables::MscPcreLimitsExceeded());
|
||||
}
|
||||
| VARIABLE_MULTIPART_BOUNDARY_QUOTED
|
||||
{
|
||||
VARIABLE_CONTAINER($$, new variables::MultipartBoundaryQuoted());
|
||||
@ -2481,14 +2489,6 @@ var:
|
||||
{
|
||||
VARIABLE_CONTAINER($$, new variables::ResponseStatus());
|
||||
}
|
||||
| VARIABLE_RX_ERROR
|
||||
{
|
||||
VARIABLE_CONTAINER($$, new variables::RxError());
|
||||
}
|
||||
| VARIABLE_RX_ERROR_RULE_ID
|
||||
{
|
||||
VARIABLE_CONTAINER($$, new variables::RxErrorRuleID());
|
||||
}
|
||||
| VARIABLE_SERVER_ADDR
|
||||
{
|
||||
VARIABLE_CONTAINER($$, new variables::ServerAddr());
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -186,6 +186,8 @@ VARIABLE_GLOBAL (?i:GLOBAL)
|
||||
VARIABLE_INBOUND_DATA_ERROR (?i:INBOUND_DATA_ERROR)
|
||||
VARIABLE_MATCHED_VAR (?i:MATCHED_VAR)
|
||||
VARIABLE_MATCHED_VAR_NAME (?i:MATCHED_VAR_NAME)
|
||||
VARIABLE_MSC_PCRE_ERRORED (?i:MSC_PCRE_ERRORED)
|
||||
VARIABLE_MSC_PCRE_LIMITS_EXCEEDED (?i:MSC_PCRE_LIMITS_EXCEEDED)
|
||||
VARIABLE_MULTIPART_BOUNDARY_QUOTED (?i:MULTIPART_BOUNDARY_QUOTED)
|
||||
VARIABLE_MULTIPART_BOUNDARY_WHITESPACE (?i:MULTIPART_BOUNDARY_WHITESPACE)
|
||||
VARIABLE_MULTIPART_CRLF_LF_LINES (?i:MULTIPART_CRLF_LF_LINES)
|
||||
@ -231,8 +233,6 @@ VARIABLE_RESPONSE_CONTENT_TYPE (?i:RESPONSE_CONTENT_TYPE)
|
||||
VARIABLE_RESPONSE_HEADERS_NAMES (?i:RESPONSE_HEADERS_NAMES)
|
||||
VARIABLE_RESPONSE_PROTOCOL (?i:RESPONSE_PROTOCOL)
|
||||
VARIABLE_RESPONSE_STATUS (?i:RESPONSE_STATUS)
|
||||
VARIABLE_RX_ERROR (?i:RX_ERROR)
|
||||
VARIABLE_RX_ERROR_RULE_ID (?i:RX_ERROR_RULE_ID)
|
||||
VARIABLE_SERVER_ADDR (?i:SERVER_ADDR)
|
||||
VARIABLE_SERVER_NAME (?i:SERVER_NAME)
|
||||
VARIABLE_SERVER_PORT (?i:SERVER_PORT)
|
||||
@ -912,6 +912,8 @@ EQUALS_MINUS (?i:=\-)
|
||||
{VARIABLE_INBOUND_DATA_ERROR} { return p::make_VARIABLE_INBOUND_DATA_ERROR(*driver.loc.back()); }
|
||||
{VARIABLE_MATCHED_VAR_NAME} { return p::make_VARIABLE_MATCHED_VAR_NAME(*driver.loc.back()); }
|
||||
{VARIABLE_MATCHED_VAR} { return p::make_VARIABLE_MATCHED_VAR(*driver.loc.back()); }
|
||||
{VARIABLE_MSC_PCRE_ERRORED} { return p::make_VARIABLE_MSC_PCRE_ERRORED(*driver.loc.back()); }
|
||||
{VARIABLE_MSC_PCRE_LIMITS_EXCEEDED} { return p::make_VARIABLE_MSC_PCRE_LIMITS_EXCEEDED(*driver.loc.back()); }
|
||||
{VARIABLE_MULTIPART_BOUNDARY_QUOTED} { return p::make_VARIABLE_MULTIPART_BOUNDARY_QUOTED(*driver.loc.back()); }
|
||||
{VARIABLE_MULTIPART_BOUNDARY_WHITESPACE} { return p::make_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE(*driver.loc.back()); }
|
||||
{VARIABLE_MULTIPART_CRLF_LF_LINES} { return p::make_VARIABLE_MULTIPART_CRLF_LF_LINES(*driver.loc.back()); }
|
||||
@ -961,8 +963,6 @@ EQUALS_MINUS (?i:=\-)
|
||||
{VARIABLE_RESPONSE_HEADERS_NAMES}[:.] { BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_RESPONSE_HEADERS_NAMES(*driver.loc.back()); }
|
||||
{VARIABLE_RESPONSE_PROTOCOL} { return p::make_VARIABLE_RESPONSE_PROTOCOL(*driver.loc.back()); }
|
||||
{VARIABLE_RESPONSE_STATUS} { return p::make_VARIABLE_RESPONSE_STATUS(*driver.loc.back()); }
|
||||
{VARIABLE_RX_ERROR} { return p::make_VARIABLE_RX_ERROR(*driver.loc.back()); }
|
||||
{VARIABLE_RX_ERROR_RULE_ID} { return p::make_VARIABLE_RX_ERROR_RULE_ID(*driver.loc.back()); }
|
||||
{VARIABLE_SERVER_ADDR} { return p::make_VARIABLE_SERVER_ADDR(*driver.loc.back()); }
|
||||
{VARIABLE_SERVER_NAME} { return p::make_VARIABLE_SERVER_NAME(*driver.loc.back()); }
|
||||
{VARIABLE_SERVER_PORT} { return p::make_VARIABLE_SERVER_PORT(*driver.loc.back()); }
|
||||
|
@ -19,8 +19,8 @@
|
||||
#include <list>
|
||||
#include <utility>
|
||||
|
||||
#ifndef SRC_VARIABLES_RX_ERROR_H_
|
||||
#define SRC_VARIABLES_RX_ERROR_H_
|
||||
#ifndef SRC_VARIABLES_MSC_PCRE_ERRORED_H_
|
||||
#define SRC_VARIABLES_MSC_PCRE_ERRORED_H_
|
||||
|
||||
#include "src/variables/variable.h"
|
||||
|
||||
@ -30,10 +30,10 @@ class Transaction;
|
||||
namespace variables {
|
||||
|
||||
|
||||
DEFINE_VARIABLE(RxError, RX_ERROR, m_variableRxError)
|
||||
DEFINE_VARIABLE(MscPcreErrored, MSC_PCRE_ERRORED, m_variableMscPcreErrored)
|
||||
|
||||
|
||||
} // namespace variables
|
||||
} // namespace modsecurity
|
||||
|
||||
#endif // SRC_VARIABLES_RX_ERROR_H_
|
||||
#endif // SRC_VARIABLES_MSC_PCRE_ERRORED_H_
|
@ -19,8 +19,8 @@
|
||||
#include <list>
|
||||
#include <utility>
|
||||
|
||||
#ifndef SRC_VARIABLES_RX_ERROR_RULE_ID_H_
|
||||
#define SRC_VARIABLES_RX_ERROR_RULE_ID_H_
|
||||
#ifndef SRC_VARIABLES_MSC_PCRE_LIMITS_EXCEEDED_H_
|
||||
#define SRC_VARIABLES_MSC_PCRE_LIMITS_EXCEEDED_H_
|
||||
|
||||
#include "src/variables/variable.h"
|
||||
|
||||
@ -30,10 +30,10 @@ class Transaction;
|
||||
namespace variables {
|
||||
|
||||
|
||||
DEFINE_VARIABLE(RxErrorRuleID, RX_ERROR_RULE_ID, m_variableRxErrorRuleID)
|
||||
DEFINE_VARIABLE(MscPcreLimitsExceeded, MSC_PCRE_LIMITS_EXCEEDED, m_variableMscPcreLimitsExceeded)
|
||||
|
||||
|
||||
} // namespace variables
|
||||
} // namespace modsecurity
|
||||
|
||||
#endif // SRC_VARIABLES_RX_ERROR_RULE_ID_H_
|
||||
#endif // SRC_VARIABLES_MSC_PCRE_LIMITS_EXCEEDED_H_
|
@ -202,6 +202,10 @@ class VariableMonkeyResolution {
|
||||
t->m_variableMatchedVar.evaluate(l);
|
||||
} else if (comp(variable, "MATCHED_VAR_NAME")) {
|
||||
t->m_variableMatchedVarName.evaluate(l);
|
||||
} else if (comp(variable, "MSC_PCRE_ERRORED")) {
|
||||
t->m_variableMscPcreErrored.evaluate(l);
|
||||
} else if (comp(variable, "MSC_PCRE_LIMITS_EXCEEDED")) {
|
||||
t->m_variableMscPcreLimitsExceeded.evaluate(l);
|
||||
} else if (comp(variable, "MULTIPART_CRLF_LF_LINES")) {
|
||||
t->m_variableMultipartCrlfLFLines.evaluate(l);
|
||||
} else if (comp(variable, "MULTIPART_DATA_AFTER")) {
|
||||
@ -282,10 +286,6 @@ class VariableMonkeyResolution {
|
||||
t->m_variableUrlEncodedError.evaluate(l);
|
||||
} else if (comp(variable, "USERID")) {
|
||||
t->m_variableUserID.evaluate(l);
|
||||
} else if (comp(variable, "RX_ERROR")) {
|
||||
t->m_variableRxError.evaluate(l);
|
||||
} else if (comp(variable, "RX_ERROR_RULE_ID")) {
|
||||
t->m_variableRxErrorRuleID.evaluate(l);
|
||||
} else {
|
||||
throw std::invalid_argument("Variable not found.");
|
||||
}
|
||||
@ -369,6 +369,10 @@ class VariableMonkeyResolution {
|
||||
vv = t->m_variableMatchedVar.resolveFirst();
|
||||
} else if (comp(variable, "MATCHED_VAR_NAME")) {
|
||||
vv = t->m_variableMatchedVarName.resolveFirst();
|
||||
} else if (comp(variable, "MSC_PCRE_ERRORED")) {
|
||||
vv = t->m_variableMscPcreErrored.resolveFirst();
|
||||
} else if (comp(variable, "MSC_PCRE_LIMITS_EXCEEDED")) {
|
||||
vv = t->m_variableMscPcreLimitsExceeded.resolveFirst();
|
||||
} else if (comp(variable, "MULTIPART_CRLF_LF_LINES")) {
|
||||
vv = t->m_variableMultipartCrlfLFLines.resolveFirst();
|
||||
} else if (comp(variable, "MULTIPART_DATA_AFTER")) {
|
||||
@ -466,10 +470,6 @@ class VariableMonkeyResolution {
|
||||
} else if (comp(variable, "GLOBAL")) {
|
||||
vv = t->m_collections.m_global_collection->resolveFirst("",
|
||||
t->m_collections.m_global_collection_key, t->m_rules->m_secWebAppId.m_value);
|
||||
} else if (comp(variable, "RX_ERROR")) {
|
||||
vv = t->m_variableRxError.resolveFirst();
|
||||
} else if (comp(variable, "RX_ERROR_RULE_ID")) {
|
||||
vv = t->m_variableRxErrorRuleID.resolveFirst();
|
||||
} else {
|
||||
throw std::invalid_argument("Variable not found.");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user