From 4462fd84ecb59610ab45ff1b89d2ee765a45a796 Mon Sep 17 00:00:00 2001 From: Felipe Zimmerle Date: Mon, 27 Jul 2015 16:00:44 -0300 Subject: [PATCH] Adds support to negative on the contains operator --- src/operators/contains.cc | 13 ++++++------- src/operators/contains.h | 3 ++- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/operators/contains.cc b/src/operators/contains.cc index 7eaa3300..8bfb7349 100644 --- a/src/operators/contains.cc +++ b/src/operators/contains.cc @@ -21,14 +21,13 @@ namespace ModSecurity { namespace operators { bool Contains::evaluate(Assay *assay, const std::string &input) { - return input.find(this->param) != std::string::npos; -} + bool contains = input.find(param) != std::string::npos; -Contains::Contains(std::string _op, std::string _param, - bool negation) - : Operator() { - this->op = _op; - this->param = _param; + if (negation) { + return !contains; + } + + return contains; } } // namespace operators diff --git a/src/operators/contains.h b/src/operators/contains.h index c4abec21..af24e0e9 100644 --- a/src/operators/contains.h +++ b/src/operators/contains.h @@ -28,7 +28,8 @@ namespace operators { class Contains : public Operator { public: /** @ingroup ModSecurity_Operator */ - Contains(std::string o, std::string p, bool i); + Contains(std::string op, std::string param, bool negation) + : Operator(op, param, negation) { } bool evaluate(Assay *assay, const std::string &exp) override; };