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; };