Rule: isMarker is no longer necessary

This commit is contained in:
Felipe Zimmerle 2019-02-25 11:32:43 -03:00
parent 766b373c3b
commit 5c40997028
No known key found for this signature in database
GPG Key ID: E6DFB08CE8B11277
3 changed files with 10 additions and 12 deletions

View File

@ -101,9 +101,6 @@ class Rule {
return *m_fileName + ":" + std::to_string(m_lineNumber);
}
virtual bool isMarker() { return false; }
private:
std::shared_ptr<std::string> m_fileName;
int m_lineNumber;

View File

@ -58,12 +58,10 @@ class RuleMarker : public Rule {
};
std::shared_ptr<std::string> getName() {
std::shared_ptr<std::string> getName() const {
return m_name;
}
bool isMarker() override { return true; }
private:
std::shared_ptr<std::string> m_name;
};

View File

@ -20,6 +20,7 @@
#include <vector>
#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<RuleMarker *>(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() \