mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-09-29 19:24:29 +03:00
Merge pull request #3253 from eduar-hte/rule-message
Simplified handling of RuleMessage by removing usage of std::shared_ptr
This commit is contained in:
@@ -89,7 +89,7 @@ class Action {
|
||||
|
||||
virtual bool evaluate(RuleWithActions *rule, Transaction *transaction);
|
||||
virtual bool evaluate(RuleWithActions *rule, Transaction *transaction,
|
||||
std::shared_ptr<RuleMessage> ruleMessage) {
|
||||
RuleMessage &ruleMessage) {
|
||||
return evaluate(rule, transaction);
|
||||
}
|
||||
virtual bool init(std::string *error) { return true; }
|
||||
|
@@ -292,7 +292,7 @@ class ModSecurity {
|
||||
*/
|
||||
void setServerLogCb(ModSecLogCb cb, int properties);
|
||||
|
||||
void serverLog(void *data, std::shared_ptr<RuleMessage> rm);
|
||||
void serverLog(void *data, const RuleMessage &rm);
|
||||
|
||||
const std::string& getConnectorInformation() const;
|
||||
|
||||
|
@@ -78,8 +78,7 @@ class Rule {
|
||||
|
||||
virtual bool evaluate(Transaction *transaction) = 0;
|
||||
|
||||
virtual bool evaluate(Transaction *transaction,
|
||||
std::shared_ptr<RuleMessage> rm) = 0;
|
||||
virtual bool evaluate(Transaction *transaction, RuleMessage &ruleMessage) = 0;
|
||||
|
||||
const std::string& getFileName() const {
|
||||
return m_fileName;
|
||||
|
@@ -42,8 +42,7 @@ class RuleMarker : public Rule {
|
||||
|
||||
RuleMarker &operator=(const RuleMarker &r) = delete;
|
||||
|
||||
virtual bool evaluate(Transaction *transaction,
|
||||
std::shared_ptr<RuleMessage> rm) override {
|
||||
virtual bool evaluate(Transaction *transaction, RuleMessage &ruleMessage) override {
|
||||
return evaluate(transaction);
|
||||
}
|
||||
|
||||
|
@@ -13,14 +13,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
#include <stack>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <list>
|
||||
#include <cstring>
|
||||
#endif
|
||||
|
||||
#ifndef HEADERS_MODSECURITY_RULE_MESSAGE_H_
|
||||
#define HEADERS_MODSECURITY_RULE_MESSAGE_H_
|
||||
|
||||
@@ -31,8 +23,10 @@
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
namespace modsecurity {
|
||||
#include <string>
|
||||
#include <list>
|
||||
|
||||
namespace modsecurity {
|
||||
|
||||
|
||||
class RuleMessage {
|
||||
@@ -45,43 +39,51 @@ class RuleMessage {
|
||||
RuleMessage(const RuleWithActions &rule, const Transaction &trans) :
|
||||
m_rule(rule),
|
||||
m_transaction(trans)
|
||||
{ }
|
||||
{
|
||||
reset(true);
|
||||
}
|
||||
|
||||
RuleMessage(const RuleMessage &ruleMessage) = default;
|
||||
RuleMessage &operator=(const RuleMessage &ruleMessage) = delete;
|
||||
|
||||
void clean() {
|
||||
m_data = "";
|
||||
m_match = "";
|
||||
void reset(const bool resetSaveMessage)
|
||||
{
|
||||
m_data.clear();
|
||||
m_isDisruptive = false;
|
||||
m_reference = "";
|
||||
m_match.clear();
|
||||
m_message.clear();
|
||||
m_noAuditLog = false;
|
||||
m_reference.clear();
|
||||
if (resetSaveMessage == true)
|
||||
m_saveMessage = true;
|
||||
m_severity = 0;
|
||||
m_tags.clear();
|
||||
}
|
||||
|
||||
std::string log() {
|
||||
return log(this, 0);
|
||||
std::string log() const {
|
||||
return log(*this, 0);
|
||||
}
|
||||
std::string log(int props) {
|
||||
return log(this, props);
|
||||
std::string log(int props) const {
|
||||
return log(*this, props);
|
||||
}
|
||||
std::string log(int props, int responseCode) {
|
||||
return log(this, props, responseCode);
|
||||
std::string log(int props, int responseCode) const {
|
||||
return log(*this, props, responseCode);
|
||||
}
|
||||
std::string errorLog() {
|
||||
return log(this,
|
||||
ClientLogMessageInfo | ErrorLogTailLogMessageInfo);
|
||||
std::string errorLog() const {
|
||||
return log(*this,
|
||||
ClientLogMessageInfo | ErrorLogTailLogMessageInfo);
|
||||
}
|
||||
|
||||
static std::string log(const RuleMessage *rm, int props, int code);
|
||||
static std::string log(const RuleMessage *rm, int props) {
|
||||
static std::string log(const RuleMessage &rm, int props, int code);
|
||||
static std::string log(const RuleMessage &rm, int props) {
|
||||
return log(rm, props, -1);
|
||||
}
|
||||
static std::string log(const RuleMessage *rm) {
|
||||
static std::string log(const RuleMessage &rm) {
|
||||
return log(rm, 0);
|
||||
}
|
||||
|
||||
static std::string _details(const RuleMessage *rm);
|
||||
static std::string _errorLogTail(const RuleMessage *rm);
|
||||
static std::string _details(const RuleMessage &rm);
|
||||
static std::string _errorLogTail(const RuleMessage &rm);
|
||||
|
||||
int getPhase() const { return m_rule.getPhase() - 1; }
|
||||
|
||||
|
@@ -36,7 +36,7 @@ class RuleUnconditional : public RuleWithActions {
|
||||
public:
|
||||
using RuleWithActions::RuleWithActions;
|
||||
|
||||
virtual bool evaluate(Transaction *transaction, std::shared_ptr<RuleMessage> ruleMessage) override;
|
||||
virtual bool evaluate(Transaction *transaction, RuleMessage &ruleMessage) override;
|
||||
};
|
||||
|
||||
|
||||
|
@@ -51,21 +51,21 @@ class RuleWithActions : public Rule {
|
||||
|
||||
virtual bool evaluate(Transaction *transaction) override;
|
||||
|
||||
virtual bool evaluate(Transaction *transaction, std::shared_ptr<RuleMessage> ruleMessage) override;
|
||||
virtual bool evaluate(Transaction *transaction, RuleMessage &ruleMessage) override;
|
||||
|
||||
void executeActionsIndependentOfChainedRuleResult(
|
||||
Transaction *trasn,
|
||||
bool *containsDisruptive,
|
||||
std::shared_ptr<RuleMessage> ruleMessage);
|
||||
RuleMessage &ruleMessage);
|
||||
|
||||
void executeActionsAfterFullMatch(
|
||||
Transaction *trasn,
|
||||
bool containsDisruptive,
|
||||
std::shared_ptr<RuleMessage> ruleMessage);
|
||||
RuleMessage &ruleMessage);
|
||||
|
||||
void executeAction(Transaction *trans,
|
||||
bool containsBlock,
|
||||
std::shared_ptr<RuleMessage> ruleMessage,
|
||||
RuleMessage &ruleMessage,
|
||||
actions::Action *a,
|
||||
bool context);
|
||||
|
||||
@@ -74,7 +74,7 @@ class RuleWithActions : public Rule {
|
||||
const Transaction *trasn, const std::string &value, TransformationResults &ret);
|
||||
|
||||
void performLogging(Transaction *trans,
|
||||
std::shared_ptr<RuleMessage> ruleMessage,
|
||||
RuleMessage &ruleMessage,
|
||||
bool lastLog = true,
|
||||
bool chainedParentNull = false) const;
|
||||
|
||||
|
@@ -47,8 +47,7 @@ class RuleWithOperator : public RuleWithActions {
|
||||
|
||||
~RuleWithOperator() override;
|
||||
|
||||
bool evaluate(Transaction *transaction,
|
||||
std::shared_ptr<RuleMessage> rm) override;
|
||||
bool evaluate(Transaction *transaction, RuleMessage &ruleMessage) override;
|
||||
|
||||
void getVariablesExceptions(Transaction &t,
|
||||
variables::Variables *exclusion, variables::Variables *addition);
|
||||
@@ -56,7 +55,7 @@ class RuleWithOperator : public RuleWithActions {
|
||||
variables::Variables *eclusion, Transaction *trans);
|
||||
|
||||
bool executeOperatorAt(Transaction *trasn, const std::string &key,
|
||||
const std::string &value, std::shared_ptr<RuleMessage> rm);
|
||||
const std::string &value, RuleMessage &ruleMessage);
|
||||
|
||||
static void updateMatchedVars(Transaction *trasn, const std::string &key,
|
||||
const std::string &value);
|
||||
|
@@ -407,7 +407,7 @@ class Transaction : public TransactionAnchoredVariables, public TransactionSecMa
|
||||
#ifndef NO_LOGS
|
||||
void debug(int, const std::string &) const; // cppcheck-suppress functionStatic
|
||||
#endif
|
||||
void serverLog(std::shared_ptr<RuleMessage> rm);
|
||||
void serverLog(const RuleMessage &rm);
|
||||
|
||||
int getRuleEngineState() const;
|
||||
|
||||
|
Reference in New Issue
Block a user