From a9e6716c6a6181a50d334b7a2bf3f3b04a333eb8 Mon Sep 17 00:00:00 2001 From: Felipe Zimmerle Date: Tue, 17 May 2016 15:45:35 -0300 Subject: [PATCH] Variables are now receiving the rule instance as parameter --- src/rule.cc | 4 ++-- src/variables/variable.h | 20 ++++++++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/rule.cc b/src/rule.cc index 2dfb35a8..15b54183 100644 --- a/src/rule.cc +++ b/src/rule.cc @@ -306,7 +306,7 @@ bool Rule::evaluate(Transaction *trasn) { Variable *variable = variables->at(i); if (variable->m_isExclusion) { std::vector z; - variable->evaluateInternal(trasn, &z); + variable->evaluateInternal(trasn, this, &z); for (auto &y : z) { exclusions.push_back(y->m_key); } @@ -322,7 +322,7 @@ bool Rule::evaluate(Transaction *trasn) { } std::vector e; - variable->evaluateInternal(trasn, &e); + variable->evaluateInternal(trasn, this, &e); for (auto &v : e) { if (std::find(exclusions.begin(), exclusions.end(), diff --git a/src/variables/variable.h b/src/variables/variable.h index 11c3361e..a625a994 100644 --- a/src/variables/variable.h +++ b/src/variables/variable.h @@ -18,6 +18,7 @@ #include #include #include "modsecurity/transaction.h" +#include "modsecurity/rule.h" #ifndef SRC_VARIABLES_VARIABLE_H_ #define SRC_VARIABLES_VARIABLE_H_ @@ -66,14 +67,29 @@ class Variable { static std::string to_s(std::vector *variables); + virtual std::vector *evaluate(Transaction *transaction); + + virtual void evaluateInternal(Transaction *transaction, + std::vector *l); + + virtual void evaluateInternal(Transaction *transaction, + Rule *rule, + std::vector *l) { + evaluateInternal(transaction, l); + } + + virtual void evaluate(Transaction *transaction, std::vector *l); - virtual void evaluateInternal(Transaction *transaction, - std::vector *l); + virtual void evaluate(Transaction *transaction, + Rule *rule, + std::vector *l) { + evaluate(transaction, l); + } std::string m_name;