diff --git a/src/rule.cc b/src/rule.cc index d9027673..b86955ed 100644 --- a/src/rule.cc +++ b/src/rule.cc @@ -270,7 +270,7 @@ bool Rule::evaluateActions(Transaction *trasn) { bool Rule::evaluate(Transaction *trasn) { bool ret = false; std::vector *variables = this->variables; - RuleMessage *ruleMessage = new modsecurity::RuleMessage(this, m_log_message); + RuleMessage *ruleMessage = NULL; trasn->m_matched.clear(); @@ -281,6 +281,7 @@ bool Rule::evaluate(Transaction *trasn) { return evaluateActions(trasn); } + ruleMessage = new modsecurity::RuleMessage(this, m_log_message); #ifndef NO_LOGS std::string eparam = MacroExpansion::expand(this->op->param, trasn); diff --git a/src/transaction.cc b/src/transaction.cc index 19ea27ad..922fad3d 100644 --- a/src/transaction.cc +++ b/src/transaction.cc @@ -151,6 +151,7 @@ Transaction::~Transaction() { for (auto *a : m_rulesMessages) { delete a; } + m_rulesMessages.clear(); m_rules->decrementReferenceCount(); }