From 736183b7f1110293ec832837b9353d8a290a1c1f Mon Sep 17 00:00:00 2001 From: Felipe Zimmerle Date: Wed, 9 Sep 2015 22:43:18 -0300 Subject: [PATCH] Adds ctl:forceRequestBodyVariable to the seclang parser --- src/parser/seclang-parser.yy | 9 +++++++++ src/parser/seclang-scanner.ll | 3 +++ 2 files changed, 12 insertions(+) diff --git a/src/parser/seclang-parser.yy b/src/parser/seclang-parser.yy index 465e45b6..2a93489c 100644 --- a/src/parser/seclang-parser.yy +++ b/src/parser/seclang-parser.yy @@ -239,6 +239,7 @@ using ModSecurity::Variables::Variable; %token ACTION_CTL_BDY_JSON %token ACTION_CTL_BDY_XML %token ACTION_CTL_RULE_ENGINE +%token ACTION_CTL_FORCE_REQ_BODY_VAR %type *> actions %type *> variables @@ -773,6 +774,14 @@ act: { $$ = new CtlAuditLogParts($1); } + | ACTION_CTL_FORCE_REQ_BODY_VAR CONFIG_VALUE_ON + { + $$ = Action::instantiate($1); + } + | ACTION_CTL_FORCE_REQ_BODY_VAR CONFIG_VALUE_OFF + { + $$ = Action::instantiate($1); + } | ACTION_CTL_RULE_ENGINE CONFIG_VALUE_ON { $$ = Action::instantiate($1); diff --git a/src/parser/seclang-scanner.ll b/src/parser/seclang-scanner.ll index 2c90d427..8aea0695 100755 --- a/src/parser/seclang-scanner.ll +++ b/src/parser/seclang-scanner.ll @@ -44,6 +44,7 @@ ACTION_CTL_BDY_JSON (?i:ctl:requestBodyProcessor=JSON) ACTION_CTL_AUDIT_LOG_PARTS (?i:ctl:auditLogParts) ACTION_CTL_RULE_ENGINE (?i:ctl:ruleEngine) ACTION_CTL_AUDIT_ENGINE (?i:ctl:auditEngine) +ACTION_CTL_FORCE_REQ_BODY_VAR (?i:ctl:forceRequestBodyVariable) DIRECTIVE (?i:SecRule) LOG_DATA (?i:logdata) @@ -186,6 +187,8 @@ CONFIG_DIR_UNICODE_MAP_FILE (?i:SecUnicodeMapFile) {ACTION_CTL_AUDIT_LOG_PARTS}=[+|-]{AUDIT_PARTS} { return yy::seclang_parser::make_ACTION_CTL_AUDIT_LOG_PARTS(yytext, *driver.loc.back()); } {ACTION_CTL_RULE_ENGINE}= { return yy::seclang_parser::make_ACTION_CTL_RULE_ENGINE(yytext, *driver.loc.back()); } {ACTION_CTL_AUDIT_ENGINE}= { return yy::seclang_parser::make_ACTION_CTL_AUDIT_ENGINE(yytext, *driver.loc.back()); } +{ACTION_CTL_FORCE_REQ_BODY_VAR}= { return yy::seclang_parser::make_ACTION_CTL_FORCE_REQ_BODY_VAR(yytext, *driver.loc.back()); } + %{ /* Debug log entries */ %} {CONFIG_DIR_DEBUG_LOG}[ ]{CONFIG_VALUE_PATH} { return yy::seclang_parser::make_CONFIG_DIR_DEBUG_LOG(strchr(yytext, ' ') + 1, *driver.loc.back()); }