From 5770da30a13d58231dca3d4fb96bb9262bd415c1 Mon Sep 17 00:00:00 2001 From: Felipe Zimmerle Date: Mon, 25 Feb 2019 11:32:43 -0300 Subject: [PATCH] Rule: isMarker is no longer necessary --- headers/modsecurity/rule.h | 3 --- headers/modsecurity/rule_marker.h | 4 +--- src/rules_set.cc | 15 +++++++++------ 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/headers/modsecurity/rule.h b/headers/modsecurity/rule.h index b755d490..d888c2d8 100644 --- a/headers/modsecurity/rule.h +++ b/headers/modsecurity/rule.h @@ -101,9 +101,6 @@ class Rule { return *m_fileName + ":" + std::to_string(m_lineNumber); } - - virtual bool isMarker() { return false; } - private: std::shared_ptr m_fileName; int m_lineNumber; diff --git a/headers/modsecurity/rule_marker.h b/headers/modsecurity/rule_marker.h index 7069f256..10986f6f 100644 --- a/headers/modsecurity/rule_marker.h +++ b/headers/modsecurity/rule_marker.h @@ -58,12 +58,10 @@ class RuleMarker : public Rule { }; - std::shared_ptr getName() { + std::shared_ptr getName() const { return m_name; } - bool isMarker() override { return true; } - private: std::shared_ptr m_name; }; diff --git a/src/rules_set.cc b/src/rules_set.cc index 770fb751..f12579ac 100644 --- a/src/rules_set.cc +++ b/src/rules_set.cc @@ -20,6 +20,7 @@ #include #include "modsecurity/rules_set.h" +#include "modsecurity/rule_marker.h" #include "modsecurity/modsecurity.h" #include "modsecurity/transaction.h" #include "src/parser/driver.h" @@ -176,12 +177,14 @@ int RulesSet::evaluate(int phase, Transaction *t) { // FIXME: This is not meant to be here. At the end of this refactoring, // the shared pointer won't be used. auto rule = rules->at(i); - if (t->isInsideAMarker() && !rule->isMarker()) { - ms_dbg_a(t, 9, "Skipped rule id '" + rule->getReference() \ - + "' due to a SecMarker: " + *t->getCurrentMarker()); - - } else if (rule->isMarker()) { - rule->evaluate(t); + if (t->isInsideAMarker()) { + RuleMarker *ruleMarker = dynamic_cast(rule.get()); + if (!ruleMarker) { + ms_dbg_a(t, 9, "Skipped rule id '" + rule->getReference() \ + + "' due to a SecMarker: " + *t->getCurrentMarker()); + } else { + rule->evaluate(t); + } } else if (t->m_skip_next > 0) { t->m_skip_next--; ms_dbg_a(t, 9, "Skipped rule id '" + rule->getReference() \