diff --git a/headers/modsecurity/rules_properties.h b/headers/modsecurity/rules_properties.h index 78cf8addee..171d87e2b5 100644 --- a/headers/modsecurity/rules_properties.h +++ b/headers/modsecurity/rules_properties.h @@ -415,7 +415,7 @@ class RulesProperties { to->m_responseBodyTypeToBeInspected.m_set = true; } - for (int i = 0; i <= modsecurity::Phases::NUMBER_OF_PHASES; i++) { + for (int i = 0; i < modsecurity::Phases::NUMBER_OF_PHASES; i++) { std::vector *actions_from = \ from->m_defaultActions+i; std::vector *actions_to = to->m_defaultActions+i; @@ -535,8 +535,8 @@ class RulesProperties { ConfigString m_uploadTmpDirectory; ConfigString m_secArgumentSeparator; ConfigString m_secWebAppId; - std::vector m_defaultActions[8]; - std::vector m_rules[8]; + std::vector m_defaultActions[modsecurity::Phases::NUMBER_OF_PHASES]; + std::vector m_rules[modsecurity::Phases::NUMBER_OF_PHASES]; ConfigUnicodeMap m_unicodeMapTable; }; diff --git a/src/actions/phase.cc b/src/actions/phase.cc index 9cf68f518e..1c6d47931f 100644 --- a/src/actions/phase.cc +++ b/src/actions/phase.cc @@ -51,6 +51,9 @@ bool Phase::init(std::string *error) { } else if (m_phase == 5) { m_phase = modsecurity::Phases::LoggingPhase; m_secRulesPhase = 5; + } else { + error->assign("Unknown phase: " + m_parser_payload); + return false; } } catch (...) { if (a == "request") { @@ -64,16 +67,6 @@ bool Phase::init(std::string *error) { m_secRulesPhase = 5; } } - if (m_phase == -1) { - error->assign("Not able to associate the given rule to any phase: " + \ - m_parser_payload); - return false; - } - - if (m_phase > modsecurity::Phases::NUMBER_OF_PHASES) { - error->assign("Unknown phase: " + std::to_string(m_phase)); - return false; - } return true; } diff --git a/src/parser/driver.cc b/src/parser/driver.cc index 49aaa5a0c1..f4b722acd4 100644 --- a/src/parser/driver.cc +++ b/src/parser/driver.cc @@ -52,7 +52,7 @@ int Driver::addSecMarker(std::string marker) { int Driver::addSecAction(Rule *rule) { - if (rule->m_phase > modsecurity::Phases::NUMBER_OF_PHASES) { + if (rule->m_phase >= modsecurity::Phases::NUMBER_OF_PHASES) { m_parserError << "Unknown phase: " << std::to_string(rule->m_phase); m_parserError << std::endl; return false; @@ -71,7 +71,7 @@ int Driver::addSecRuleScript(RuleScript *rule) { int Driver::addSecRule(Rule *rule) { - if (rule->m_phase > modsecurity::Phases::NUMBER_OF_PHASES) { + if (rule->m_phase >= modsecurity::Phases::NUMBER_OF_PHASES) { m_parserError << "Unknown phase: " << std::to_string(rule->m_phase); m_parserError << std::endl; return false; diff --git a/src/rules.cc b/src/rules.cc index 1eee60b066..f5b16cab9a 100644 --- a/src/rules.cc +++ b/src/rules.cc @@ -152,7 +152,7 @@ std::string Rules::getParserError() { int Rules::evaluate(int phase, Transaction *t) { - if (phase > modsecurity::Phases::NUMBER_OF_PHASES) { + if (phase >= modsecurity::Phases::NUMBER_OF_PHASES) { return 0; } @@ -293,7 +293,7 @@ void Rules::debug(int level, const std::string &id, void Rules::dump() { std::cout << "Rules: " << std::endl; - for (int i = 0; i <= modsecurity::Phases::NUMBER_OF_PHASES; i++) { + for (int i = 0; i < modsecurity::Phases::NUMBER_OF_PHASES; i++) { std::vector rules = m_rules[i]; std::cout << "Phase: " << std::to_string(i); std::cout << " (" << std::to_string(rules.size());