From 1e3cafb73447f2be5906936e8aa3e83411251d53 Mon Sep 17 00:00:00 2001 From: Felipe Zimmerle Date: Wed, 17 Feb 2016 13:32:31 -0300 Subject: [PATCH] Fix memory management on the rules' messages (try 2) --- src/rule.cc | 3 ++- src/transaction.cc | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) 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(); }