From 4095ae7b52c6cb55c69c0782e264058c20c18e6b Mon Sep 17 00:00:00 2001 From: Felipe Zimmerle Date: Wed, 9 Sep 2015 22:26:35 -0300 Subject: [PATCH] Adds action accuracy to the parser --- src/parser/seclang-parser.yy | 5 +++++ src/parser/seclang-scanner.ll | 3 +++ 2 files changed, 8 insertions(+) diff --git a/src/parser/seclang-parser.yy b/src/parser/seclang-parser.yy index 9872e7e7..465e45b6 100644 --- a/src/parser/seclang-parser.yy +++ b/src/parser/seclang-parser.yy @@ -220,6 +220,7 @@ using ModSecurity::Variables::Variable; %token OPERATOR %token FREE_TEXT %token ACTION +%token ACTION_ACCURACY %token ACTION_REDIRECT %token ACTION_SKIP_AFTER %token ACTION_AUDIT_LOG @@ -698,6 +699,10 @@ act: { $$ = Transformation::instantiate($1); } + | ACTION_ACCURACY + { + $$ = Action::instantiate($1); + } | ACTION_REDIRECT { $$ = new Redirect($1); diff --git a/src/parser/seclang-scanner.ll b/src/parser/seclang-scanner.ll index edec0613..2c90d427 100755 --- a/src/parser/seclang-scanner.ll +++ b/src/parser/seclang-scanner.ll @@ -25,6 +25,7 @@ using ModSecurity::split; ACTION (?i:accuracy|allow|append|block|capture|chain|deny|deprecatevar|drop|exec|expirevar|id:[0-9]+|id:'[0-9]+'|initcol|log|multiMatch|noauditlog|nolog|pass|pause|prepend|proxy|sanitiseArg|sanitiseMatched|sanitiseMatchedBytes|sanitiseRequestHeader|sanitiseResponseHeader|setuid|setrsc|setsid|setenv|skip|status:[0-9]+|xmlns) +ACTION_ACCURACY (?i:accuracy) ACTION_REDIRECT (?i:redirect) ACTION_SKIP_AFTER (?i:skipAfter) ACTION_PHASE ((?i:phase:(?i:REQUEST|RESPONSE|LOGGING|[0-9]+))|(?i:phase:'(?i:REQUEST|RESPONSE|LOGGING|[0-9]+)')) @@ -309,6 +310,8 @@ CONFIG_DIR_UNICODE_MAP_FILE (?i:SecUnicodeMapFile) {ACTION_VER}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_ACTION_VER(strchr(yytext, ':') + 1, *driver.loc.back()); } {ACTION_MATURITY}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_ACTION_MATURITY(strchr(yytext, ':') + 1, *driver.loc.back()); } {ACTION_MATURITY}:{FREE_TEXT_QUOTE} { return yy::seclang_parser::make_ACTION_MATURITY(strchr(yytext, ':') + 1, *driver.loc.back()); } +{ACTION_ACCURACY}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_ACTION_ACCURACY(strchr(yytext, ':') + 1, *driver.loc.back()); } +{ACTION_ACCURACY}:{FREE_TEXT_QUOTE} { return yy::seclang_parser::make_ACTION_ACCURACY(strchr(yytext, ':') + 1, *driver.loc.back()); } {ACTION_CTL_BDY_XML} { return yy::seclang_parser::make_ACTION_CTL_BDY_XML(yytext, *driver.loc.back()); } {ACTION_CTL_BDY_JSON} { return yy::seclang_parser::make_ACTION_CTL_BDY_JSON(yytext, *driver.loc.back()); }