From 2ec640fd76bae2b6b9610aeff29f4c41b3f320e2 Mon Sep 17 00:00:00 2001 From: Eduardo Arias Date: Sun, 2 Jun 2024 02:03:34 +0000 Subject: [PATCH] Delete unused copy constructor & assignment operator in Rule, RuleMarker & Action - Declare other unsupported copy constructor & assignment operators as deleted too (RuleWithActions, RuleUnconditional & RuleScript) --- headers/modsecurity/actions/action.h | 16 +------ headers/modsecurity/rule.h | 28 ++++-------- headers/modsecurity/rule_marker.h | 39 +++++------------ headers/modsecurity/rule_unconditional.h | 31 +++---------- headers/modsecurity/rule_with_actions.h | 56 ++---------------------- headers/modsecurity/rule_with_operator.h | 2 +- src/rule_script.h | 12 ++--- 7 files changed, 37 insertions(+), 147 deletions(-) diff --git a/headers/modsecurity/actions/action.h b/headers/modsecurity/actions/action.h index 24f0da6d..41c24abf 100644 --- a/headers/modsecurity/actions/action.h +++ b/headers/modsecurity/actions/action.h @@ -81,21 +81,9 @@ class Action { set_name_and_payload(_action); } - Action(const Action &a) - : m_isNone(a.m_isNone), - temporaryAction(a.temporaryAction), - action_kind(a.action_kind), - m_name(a.m_name), - m_parser_payload(a.m_parser_payload) { } + Action(const Action &a) = delete; - Action &operator=(const Action& a) { - m_isNone = a.m_isNone; - temporaryAction = a.temporaryAction; - action_kind = a.action_kind; - m_name = a.m_name; - m_parser_payload = a.m_parser_payload; - return *this; - } + Action &operator=(const Action& a) = delete; virtual ~Action() { } diff --git a/headers/modsecurity/rule.h b/headers/modsecurity/rule.h index 18e64c0a..34ccd064 100644 --- a/headers/modsecurity/rule.h +++ b/headers/modsecurity/rule.h @@ -13,15 +13,6 @@ * */ -#ifdef __cplusplus -#include -#include -#include -#include -#include -#include -#endif - #ifndef HEADERS_MODSECURITY_RULE_H_ #define HEADERS_MODSECURITY_RULE_H_ @@ -31,6 +22,12 @@ #ifdef __cplusplus +#include +#include +#include +#include +#include + namespace modsecurity { namespace variables { class Variable; @@ -73,18 +70,9 @@ class Rule { m_phase(modsecurity::Phases::RequestHeadersPhase) { } - Rule(const Rule &other) : - m_fileName(other.m_fileName), - m_lineNumber(other.m_lineNumber), - m_phase(other.m_phase) - { } + Rule(const Rule &other) = delete; - Rule &operator=(const Rule& other) { - m_fileName = other.m_fileName; - m_lineNumber = other.m_lineNumber; - m_phase = other.m_phase; - return *this; - } + Rule &operator=(const Rule &other) = delete; virtual ~Rule() {} diff --git a/headers/modsecurity/rule_marker.h b/headers/modsecurity/rule_marker.h index b8b835ef..b23bf9b4 100644 --- a/headers/modsecurity/rule_marker.h +++ b/headers/modsecurity/rule_marker.h @@ -13,15 +13,6 @@ * */ -#ifdef __cplusplus -#include -#include -#include -#include -#include -#include -#endif - #ifndef HEADERS_MODSECURITY_RULE_MARKER_H_ #define HEADERS_MODSECURITY_RULE_MARKER_H_ @@ -32,6 +23,9 @@ #ifdef __cplusplus +#include +#include + namespace modsecurity { @@ -42,45 +36,32 @@ class RuleMarker : public Rule { std::unique_ptr fileName, int lineNumber) : Rule(std::move(fileName), lineNumber), - m_name(std::make_shared(name)) { } + m_name(name) { } - RuleMarker(const RuleMarker& r) : - Rule(r), - m_name(r.m_name) - { } - - RuleMarker &operator =(const RuleMarker& r) { - Rule::operator = (r); - m_name = r.m_name; - return *this; - } + RuleMarker(const RuleMarker &r) = delete; + RuleMarker &operator=(const RuleMarker &r) = delete; + virtual bool evaluate(Transaction *transaction, std::shared_ptr rm) override { return evaluate(transaction); } virtual bool evaluate(Transaction *transaction) override { - if (transaction->isInsideAMarker()) { - if (*transaction->getCurrentMarker() == *m_name) { + if (transaction->isInsideAMarker() && + *transaction->getCurrentMarker() == m_name) { transaction->removeMarker(); // FIXME: Move this to .cc // ms_dbg_a(transaction, 4, "Out of a SecMarker " + *m_name); - } } return true; }; - - std::shared_ptr getName() { - return m_name; - } - bool isMarker() override { return true; } private: - std::shared_ptr m_name; + const std::string m_name; }; diff --git a/headers/modsecurity/rule_unconditional.h b/headers/modsecurity/rule_unconditional.h index c66fa7c1..69339566 100644 --- a/headers/modsecurity/rule_unconditional.h +++ b/headers/modsecurity/rule_unconditional.h @@ -13,15 +13,6 @@ * */ -#ifdef __cplusplus -#include -#include -#include -#include -#include -#include -#endif - #ifndef HEADERS_MODSECURITY_RULE_UNCONDITIONAL_H_ #define HEADERS_MODSECURITY_RULE_UNCONDITIONAL_H_ @@ -34,30 +25,18 @@ #ifdef __cplusplus +#include +#include +#include + namespace modsecurity { class RuleUnconditional : public RuleWithActions { public: - RuleUnconditional( - std::vector *actions, - Transformations *transformations, - std::unique_ptr fileName, - int lineNumber) - : RuleWithActions(actions, transformations, std::move(fileName), lineNumber) { } - - RuleUnconditional(const RuleUnconditional& r) - : RuleWithActions(r) - { } - - RuleUnconditional &operator=(const RuleUnconditional& r) { - RuleWithActions::operator = (r); - return *this; - } + using RuleWithActions::RuleWithActions; virtual bool evaluate(Transaction *transaction, std::shared_ptr ruleMessage) override; - - private: }; diff --git a/headers/modsecurity/rule_with_actions.h b/headers/modsecurity/rule_with_actions.h index 26967f2a..65411c45 100644 --- a/headers/modsecurity/rule_with_actions.h +++ b/headers/modsecurity/rule_with_actions.h @@ -43,63 +43,15 @@ class RuleWithActions : public Rule { std::unique_ptr fileName, int lineNumber); - ~RuleWithActions(); + ~RuleWithActions() override; - RuleWithActions(const RuleWithActions& r) - : Rule(r), - m_rev(r.m_rev), - m_ver(r.m_ver), - m_accuracy(r.m_accuracy), - m_maturity(r.m_maturity), - m_ruleId(r.m_ruleId), - m_chainedRuleChild(r.m_chainedRuleChild), - m_chainedRuleParent(r.m_chainedRuleParent), - m_disruptiveAction(r.m_disruptiveAction), - m_logData(r.m_logData), - m_msg(r.m_msg), - m_severity(r.m_severity), - m_actionsRuntimePos(r.m_actionsRuntimePos), - m_actionsSetVar(r.m_actionsSetVar), - m_actionsTag(r.m_actionsTag), - m_transformations(r.m_transformations), - m_containsCaptureAction(r.m_containsCaptureAction), - m_containsMultiMatchAction(r.m_containsMultiMatchAction), - m_containsStaticBlockAction(r.m_containsStaticBlockAction), - m_isChained(r.m_isChained) - { } + RuleWithActions(const RuleWithActions &r) = delete; - RuleWithActions &operator=(const RuleWithActions& r) { - Rule::operator = (r); - m_rev = r.m_rev; - m_ver = r.m_ver; - m_accuracy = r.m_accuracy; - m_maturity = r.m_maturity; - m_ruleId = r.m_ruleId; - m_chainedRuleChild = r.m_chainedRuleChild; - m_chainedRuleParent = r.m_chainedRuleParent; - - m_disruptiveAction = r.m_disruptiveAction; - m_logData = r.m_logData; - m_msg = r.m_msg; - m_severity = r.m_severity; - m_actionsRuntimePos = r.m_actionsRuntimePos; - m_actionsSetVar = r.m_actionsSetVar; - m_actionsTag = r.m_actionsTag; - - m_transformations = r.m_transformations; - - m_containsCaptureAction = r.m_containsCaptureAction; - m_containsMultiMatchAction = r.m_containsMultiMatchAction; - m_containsStaticBlockAction = r.m_containsStaticBlockAction; - m_isChained = r.m_isChained; - - return *this; - } - - virtual bool evaluate(Transaction *transaction, std::shared_ptr ruleMessage) override; + RuleWithActions &operator=(const RuleWithActions &r) = delete; virtual bool evaluate(Transaction *transaction) override; + virtual bool evaluate(Transaction *transaction, std::shared_ptr ruleMessage) override; void executeActionsIndependentOfChainedRuleResult( Transaction *trasn, diff --git a/headers/modsecurity/rule_with_operator.h b/headers/modsecurity/rule_with_operator.h index 42fa0f9e..9cee5d6c 100644 --- a/headers/modsecurity/rule_with_operator.h +++ b/headers/modsecurity/rule_with_operator.h @@ -45,7 +45,7 @@ class RuleWithOperator : public RuleWithActions { std::unique_ptr fileName, int lineNumber); - virtual ~RuleWithOperator(); + ~RuleWithOperator() override; bool evaluate(Transaction *transaction, std::shared_ptr rm) override; diff --git a/src/rule_script.h b/src/rule_script.h index 237ad6ab..1c22ad60 100644 --- a/src/rule_script.h +++ b/src/rule_script.h @@ -14,6 +14,9 @@ * */ +#ifndef SRC_RULE_SCRIPT_H_ +#define SRC_RULE_SCRIPT_H_ + #include #include #include @@ -33,9 +36,6 @@ #include "src/actions/severity.h" #include "src/variables/variable.h" -#ifndef SRC_RULE_SCRIPT_H_ -#define SRC_RULE_SCRIPT_H_ - namespace modsecurity { @@ -53,13 +53,15 @@ class RuleScript : public RuleWithActions { m_name(name), m_lua() { } - RuleScript(const RuleWithActions& r) = delete; + RuleScript(const RuleScript& r) = delete; + + RuleScript &operator=(const RuleScript &r) = delete; bool init(std::string *err); + bool evaluate(Transaction *trans, std::shared_ptr ruleMessage) override; - std::string m_name; engine::Lua m_lua; };