mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-08-15 23:55:03 +03:00
Eliminates the sec language grammar shift-reduce problem
This commit is contained in:
parent
a324ff9317
commit
2ff0a44df2
@ -120,18 +120,14 @@ using ModSecurity::Variables::Variable;
|
|||||||
%define api.token.prefix {TOK_}
|
%define api.token.prefix {TOK_}
|
||||||
%token
|
%token
|
||||||
END 0 "end of file"
|
END 0 "end of file"
|
||||||
CONFIG_DIR_VAL "+"
|
COMMA ","
|
||||||
COMMA "*"
|
|
||||||
QUOTATION_MARK ")"
|
QUOTATION_MARK ")"
|
||||||
SPACE
|
SPACE
|
||||||
PIPE
|
PIPE
|
||||||
UNKNOWN
|
|
||||||
FREE_TEXT
|
|
||||||
;
|
;
|
||||||
|
|
||||||
%left ARGS CONFIG_VALUE_RELEVANT_ONLY CONFIG_VALUE_ON CONFIG_VALUE_OFF CONFIG_VALUE
|
%left CONFIG_VALUE_RELEVANT_ONLY CONFIG_VALUE_ON CONFIG_VALUE_OFF
|
||||||
%token <std::string> DIRECTIVE
|
%token <std::string> DIRECTIVE
|
||||||
%token <std::string> CONFIG_DIRECTIVE
|
|
||||||
%token <std::string> CONFIG_DIR_REQ_BODY_LIMIT
|
%token <std::string> CONFIG_DIR_REQ_BODY_LIMIT
|
||||||
%token <std::string> CONFIG_DIR_RES_BODY_LIMIT
|
%token <std::string> CONFIG_DIR_RES_BODY_LIMIT
|
||||||
%token <std::string> CONFIG_DIR_REQ_BODY_LIMIT_ACTION
|
%token <std::string> CONFIG_DIR_REQ_BODY_LIMIT_ACTION
|
||||||
@ -139,7 +135,6 @@ using ModSecurity::Variables::Variable;
|
|||||||
%token <std::string> CONFIG_DIR_RULE_ENG
|
%token <std::string> CONFIG_DIR_RULE_ENG
|
||||||
%token <std::string> CONFIG_DIR_REQ_BODY
|
%token <std::string> CONFIG_DIR_REQ_BODY
|
||||||
%token <std::string> CONFIG_DIR_RES_BODY
|
%token <std::string> CONFIG_DIR_RES_BODY
|
||||||
%token <std::string> CONFIG_VALUE
|
|
||||||
%token <std::string> CONFIG_VALUE_ON
|
%token <std::string> CONFIG_VALUE_ON
|
||||||
%token <std::string> CONFIG_VALUE_OFF
|
%token <std::string> CONFIG_VALUE_OFF
|
||||||
%token <std::string> CONFIG_VALUE_DETC
|
%token <std::string> CONFIG_VALUE_DETC
|
||||||
@ -182,8 +177,6 @@ using ModSecurity::Variables::Variable;
|
|||||||
%token <std::string> RUN_TIME_VAR_TIME_WDAY
|
%token <std::string> RUN_TIME_VAR_TIME_WDAY
|
||||||
%token <std::string> RUN_TIME_VAR_TIME_YEAR
|
%token <std::string> RUN_TIME_VAR_TIME_YEAR
|
||||||
|
|
||||||
%token <std::string> CONFIG_INCLUDE
|
|
||||||
%token <std::string> CONFIG_SEC_REMOTE_RULES
|
|
||||||
%token <std::string> CONFIG_SEC_REMOTE_RULES_FAIL_ACTION
|
%token <std::string> CONFIG_SEC_REMOTE_RULES_FAIL_ACTION
|
||||||
|
|
||||||
%token <std::string> CONFIG_DIR_GEO_DB
|
%token <std::string> CONFIG_DIR_GEO_DB
|
||||||
@ -197,8 +190,6 @@ using ModSecurity::Variables::Variable;
|
|||||||
%token <std::string> ACTION_REV
|
%token <std::string> ACTION_REV
|
||||||
%token <std::string> TRANSFORMATION
|
%token <std::string> TRANSFORMATION
|
||||||
|
|
||||||
%token <double> CONFIG_VALUE_NUMBER
|
|
||||||
|
|
||||||
%type <std::vector<Action *> *> actions
|
%type <std::vector<Action *> *> actions
|
||||||
%type <std::vector<Variable *> *> variables
|
%type <std::vector<Variable *> *> variables
|
||||||
%type <Variable *> var
|
%type <Variable *> var
|
||||||
@ -206,19 +197,17 @@ using ModSecurity::Variables::Variable;
|
|||||||
|
|
||||||
%printer { yyoutput << $$; } <*>;
|
%printer { yyoutput << $$; } <*>;
|
||||||
%%
|
%%
|
||||||
%start secrule;
|
%start input;
|
||||||
|
|
||||||
|
|
||||||
secrule:
|
input:
|
||||||
| secrule line
|
%empty
|
||||||
|
| input line
|
||||||
|
;
|
||||||
|
|
||||||
line:
|
line: expression
|
||||||
expression
|
|
||||||
| SPACE expression
|
| SPACE expression
|
||||||
| SPACE
|
;
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
audit_log:
|
audit_log:
|
||||||
/* SecAuditLogDirMode */
|
/* SecAuditLogDirMode */
|
||||||
@ -289,7 +278,7 @@ audit_log:
|
|||||||
{
|
{
|
||||||
driver.audit_log->setType(ModSecurity::AuditLog::ParallelAuditLogType);
|
driver.audit_log->setType(ModSecurity::AuditLog::ParallelAuditLogType);
|
||||||
}
|
}
|
||||||
|
;
|
||||||
|
|
||||||
expression:
|
expression:
|
||||||
audit_log
|
audit_log
|
||||||
@ -387,7 +376,7 @@ expression:
|
|||||||
{
|
{
|
||||||
driver.remoteRulesActionOnFailed = Rules::OnFailedRemoteRulesAction::WarnOnFailedRemoteRulesAction;
|
driver.remoteRulesActionOnFailed = Rules::OnFailedRemoteRulesAction::WarnOnFailedRemoteRulesAction;
|
||||||
}
|
}
|
||||||
|
;
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
variables PIPE var
|
variables PIPE var
|
||||||
@ -402,6 +391,7 @@ variables:
|
|||||||
variables->push_back($1);
|
variables->push_back($1);
|
||||||
$$ = variables;
|
$$ = variables;
|
||||||
}
|
}
|
||||||
|
;
|
||||||
|
|
||||||
var:
|
var:
|
||||||
VARIABLE
|
VARIABLE
|
||||||
@ -530,6 +520,7 @@ var:
|
|||||||
if (!var) { var = new TimeYear(name); }
|
if (!var) { var = new TimeYear(name); }
|
||||||
$$ = var;
|
$$ = var;
|
||||||
}
|
}
|
||||||
|
;
|
||||||
|
|
||||||
actions:
|
actions:
|
||||||
actions COMMA SPACE ACTION
|
actions COMMA SPACE ACTION
|
||||||
@ -718,6 +709,7 @@ actions:
|
|||||||
actions->push_back(rev);
|
actions->push_back(rev);
|
||||||
$$ = actions;
|
$$ = actions;
|
||||||
}
|
}
|
||||||
|
;
|
||||||
|
|
||||||
%%
|
%%
|
||||||
void
|
void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user