Skip to content

Commit a9e6716

Browse files
committed
Variables are now receiving the rule instance as parameter
1 parent 8c714af commit a9e6716

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

src/rule.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ bool Rule::evaluate(Transaction *trasn) {
306306
Variable *variable = variables->at(i);
307307
if (variable->m_isExclusion) {
308308
std::vector<const collection::Variable *> z;
309-
variable->evaluateInternal(trasn, &z);
309+
variable->evaluateInternal(trasn, this, &z);
310310
for (auto &y : z) {
311311
exclusions.push_back(y->m_key);
312312
}
@@ -322,7 +322,7 @@ bool Rule::evaluate(Transaction *trasn) {
322322
}
323323

324324
std::vector<const collection::Variable *> e;
325-
variable->evaluateInternal(trasn, &e);
325+
variable->evaluateInternal(trasn, this, &e);
326326

327327
for (auto &v : e) {
328328
if (std::find(exclusions.begin(), exclusions.end(),

src/variables/variable.h

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include <list>
1919
#include <utility>
2020
#include "modsecurity/transaction.h"
21+
#include "modsecurity/rule.h"
2122

2223
#ifndef SRC_VARIABLES_VARIABLE_H_
2324
#define SRC_VARIABLES_VARIABLE_H_
@@ -66,15 +67,30 @@ class Variable {
6667

6768
static std::string to_s(std::vector<Variable *> *variables);
6869

70+
6971
virtual std::vector<const collection::Variable *>
7072
*evaluate(Transaction *transaction);
7173

72-
virtual void evaluate(Transaction *transaction,
74+
75+
virtual void evaluateInternal(Transaction *transaction,
7376
std::vector<const collection::Variable *> *l);
7477

7578
virtual void evaluateInternal(Transaction *transaction,
79+
Rule *rule,
80+
std::vector<const collection::Variable *> *l) {
81+
evaluateInternal(transaction, l);
82+
}
83+
84+
85+
virtual void evaluate(Transaction *transaction,
7686
std::vector<const collection::Variable *> *l);
7787

88+
virtual void evaluate(Transaction *transaction,
89+
Rule *rule,
90+
std::vector<const collection::Variable *> *l) {
91+
evaluate(transaction, l);
92+
}
93+
7894

7995
std::string m_name;
8096
std::string m_collectionName;

0 commit comments

Comments
 (0)