diff --git a/src/operators/operator.cc b/src/operators/operator.cc index 9dee2d16..2571407a 100644 --- a/src/operators/operator.cc +++ b/src/operators/operator.cc @@ -109,9 +109,9 @@ Operator *Operator::instantiate(std::string op_string) { std::string param = ""; if (op.find(" ") != std::string::npos) { param = op; - param.erase(0, op_string.find(" ")); - op.erase(op_string.find(" "), - op_string.length() - op_string.find(" ")); + param.erase(0, param.find(" ") + 1); + op.erase(op.find(" "), + op.length() - op.find(" ")); } for (std::basic_string::iterator p = op.begin(); diff --git a/src/parser/seclang-scanner.ll b/src/parser/seclang-scanner.ll index c81bda2b..f3579536 100755 --- a/src/parser/seclang-scanner.ll +++ b/src/parser/seclang-scanner.ll @@ -174,7 +174,7 @@ VAR_FREE_TEXT_SPACE_COMMA [^, \t\"]+ VAR_FREE_TEXT_SPACE [^ \t\"]+ -SOMETHING ["]{1}[^@]{1}([^"]|([^\\"]\\\"))*["]{1} +SOMETHING ["]{1}[^@|!]{1}([^"]|([^\\"]\\\"))*["]{1} CONFIG_DIR_UNICODE_MAP_FILE (?i:SecUnicodeMapFile) diff --git a/test/test-cases/regression/config-include.json b/test/test-cases/regression/config-include.json index 1c2874c9..39984a9a 100644 --- a/test/test-cases/regression/config-include.json +++ b/test/test-cases/regression/config-include.json @@ -31,7 +31,7 @@ ] }, "expected":{ - "debug_log":"Executing operator \"@contains \" with param \"config_example2\" against ARGS." + "debug_log":"Executing operator \"@contains\" with param \"config_example2\" against ARGS." }, "rules":[ "SecRuleEngine On", @@ -73,7 +73,7 @@ ] }, "expected":{ - "debug_log":"Executing operator \"@contains \" with param \"config_example\" against ARGS." + "debug_log":"Executing operator \"@contains\" with param \"config_example\" against ARGS." }, "rules":[ "SecRuleEngine On", @@ -115,7 +115,7 @@ ] }, "expected":{ - "debug_log":"Executing operator \"@contains \" with param \"config_example2\" against ARGS." + "debug_log":"Executing operator \"@contains\" with param \"config_example2\" against ARGS." }, "rules":[ "SecRuleEngine On", @@ -157,7 +157,7 @@ ] }, "expected":{ - "debug_log":"Executing operator \"@contains \" with param \"test\" against ARGS." + "debug_log":"Executing operator \"@contains\" with param \"test\" against ARGS." }, "rules":[ "SecRuleEngine On", @@ -199,7 +199,7 @@ ] }, "expected":{ - "debug_log":"Executing operator \"@contains \" with param \"config_example2\" against ARGS." + "debug_log":"Executing operator \"@contains\" with param \"config_example2\" against ARGS." }, "rules":[ "SecRuleEngine On", @@ -242,7 +242,7 @@ ] }, "expected":{ - "debug_log":"Executing operator \"@contains \" with param \"test\" against ARGS." + "debug_log":"Executing operator \"@contains\" with param \"test\" against ARGS." }, "rules":[ "SecRuleEngine On", diff --git a/test/test-cases/regression/config-secremoterules.json b/test/test-cases/regression/config-secremoterules.json index fcc61927..55557d97 100644 --- a/test/test-cases/regression/config-secremoterules.json +++ b/test/test-cases/regression/config-secremoterules.json @@ -31,7 +31,7 @@ ] }, "expected":{ - "debug_log":"Executing operator \"@pmfromfile \" with param \"https://www.modsecurity.org/modsecurity-regression-test.txt\" against REQUEST_FILENAME" + "debug_log":"Executing operator \"@pmfromfile\" with param \"https://www.modsecurity.org/modsecurity-regression-test.txt\" against REQUEST_FILENAME" }, "rules":[ "SecRuleEngine On", @@ -88,7 +88,7 @@ ] }, "expected":{ - "debug_log":"Executing operator \"@contains \" with param \"somethingelse\" against ARGS." + "debug_log":"Executing operator \"@contains\" with param \"somethingelse\" against ARGS." }, "rules":[ "SecRuleEngine On", diff --git a/test/test-cases/regression/misc.json b/test/test-cases/regression/misc.json index 2ae8b09e..0ca21636 100644 --- a/test/test-cases/regression/misc.json +++ b/test/test-cases/regression/misc.json @@ -6,7 +6,7 @@ "title":"Testing action :: SecRule directives should be case insensitive", "expected":{ "audit_log":"", - "debug_log":"Executing operator \"@contains \" with param \"PHPSESSID\" against REQUEST_HEADERS.", + "debug_log":"Executing operator \"@contains\" with param \"PHPSESSID\" against REQUEST_HEADERS.", "error_log":"" }, "rules":[