File tree Expand file tree Collapse file tree 5 files changed +28
-4
lines changed Expand file tree Collapse file tree 5 files changed +28
-4
lines changed Original file line number Diff line number Diff line change @@ -68,7 +68,7 @@ using MatchActions = std::vector<actions::Action *>;
6868class Rule {
6969 public:
7070 Rule (std::unique_ptr<std::string> fileName, int lineNumber)
71- : m_fileName(std::move( fileName)),
71+ : m_fileName(std::make_shared<std::string>(* fileName)),
7272 m_lineNumber (lineNumber),
7373 m_phase(modsecurity::Phases::RequestHeadersPhase) {
7474 }
@@ -103,7 +103,10 @@ class Rule {
103103 void setPhase (int phase) { m_phase = phase; }
104104
105105 virtual std::string getReference () {
106- return *m_fileName + " :" + std::to_string (m_lineNumber);
106+ if (m_fileName) {
107+ return *m_fileName + " :" + std::to_string (m_lineNumber);
108+ }
109+ return " <<no file>>:" + std::to_string (m_lineNumber);
107110 }
108111
109112
Original file line number Diff line number Diff line change @@ -44,6 +44,16 @@ class RuleMarker : public Rule {
4444 : Rule(std::move(fileName), lineNumber),
4545 m_name (std::make_shared<std::string>(name)) { }
4646
47+ RuleMarker (const RuleMarker& r) :
48+ Rule(r),
49+ m_name(r.m_name)
50+ { }
51+
52+ RuleMarker &operator =(const RuleMarker& r) {
53+ Rule::operator = (r);
54+ m_name = r.m_name ;
55+ return *this ;
56+ }
4757
4858 virtual bool evaluate (Transaction *transaction,
4959 std::shared_ptr<RuleMessage> rm) override {
Original file line number Diff line number Diff line change @@ -46,6 +46,15 @@ class RuleUnconditional : public RuleWithActions {
4646 int lineNumber)
4747 : RuleWithActions(actions, transformations, std::move(fileName), lineNumber) { }
4848
49+ RuleUnconditional (const RuleUnconditional& r)
50+ : RuleWithActions(r)
51+ { }
52+
53+ RuleUnconditional &operator =(const RuleUnconditional& r) {
54+ RuleWithActions::operator = (r);
55+ return *this ;
56+ }
57+
4958 virtual bool evaluate (Transaction *transaction, std::shared_ptr<RuleMessage> ruleMessage) override ;
5059
5160 private:
Original file line number Diff line number Diff line change @@ -45,8 +45,8 @@ Driver::~Driver() {
4545int Driver::addSecMarker (std::string marker, std::unique_ptr<std::string> fileName, int lineNumber) {
4646 // FIXME: we might move this to the parser.
4747 for (int i = 0 ; i < modsecurity::Phases::NUMBER_OF_PHASES; i++) {
48- RuleMarker *r = new RuleMarker (marker, std::move ( fileName), lineNumber);
49- std::unique_ptr<RuleMarker> rule (std::move (r) );
48+ RuleMarker *r = new RuleMarker (marker, std::unique_ptr<std::string>( new std::string (* fileName) ), lineNumber);
49+ std::unique_ptr<RuleMarker> rule (r );
5050 rule->setPhase (i);
5151 m_rulesSetPhases.insert (std::move (rule));
5252 }
Original file line number Diff line number Diff line change @@ -53,6 +53,8 @@ class RuleScript : public RuleWithActions {
5353 m_name (name),
5454 m_lua() { }
5555
56+ RuleScript (const RuleWithActions& r) = delete;
57+
5658 bool init (std::string *err);
5759 bool evaluate (Transaction *trans,
5860 std::shared_ptr<RuleMessage> ruleMessage) override ;
You can’t perform that action at this time.
0 commit comments