File tree 5 files changed +28
-4
lines changed
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 *>;
68
68
class Rule {
69
69
public:
70
70
Rule (std::unique_ptr<std::string> fileName, int lineNumber)
71
- : m_fileName(std::move( fileName)),
71
+ : m_fileName(std::make_shared<std::string>(* fileName)),
72
72
m_lineNumber (lineNumber),
73
73
m_phase(modsecurity::Phases::RequestHeadersPhase) {
74
74
}
@@ -103,7 +103,10 @@ class Rule {
103
103
void setPhase (int phase) { m_phase = phase; }
104
104
105
105
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);
107
110
}
108
111
109
112
Original file line number Diff line number Diff line change @@ -44,6 +44,16 @@ class RuleMarker : public Rule {
44
44
: Rule(std::move(fileName), lineNumber),
45
45
m_name (std::make_shared<std::string>(name)) { }
46
46
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
+ }
47
57
48
58
virtual bool evaluate (Transaction *transaction,
49
59
std::shared_ptr<RuleMessage> rm) override {
Original file line number Diff line number Diff line change @@ -46,6 +46,15 @@ class RuleUnconditional : public RuleWithActions {
46
46
int lineNumber)
47
47
: RuleWithActions(actions, transformations, std::move(fileName), lineNumber) { }
48
48
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
+
49
58
virtual bool evaluate (Transaction *transaction, std::shared_ptr<RuleMessage> ruleMessage) override ;
50
59
51
60
private:
Original file line number Diff line number Diff line change @@ -45,8 +45,8 @@ Driver::~Driver() {
45
45
int Driver::addSecMarker (std::string marker, std::unique_ptr<std::string> fileName, int lineNumber) {
46
46
// FIXME: we might move this to the parser.
47
47
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 );
50
50
rule->setPhase (i);
51
51
m_rulesSetPhases.insert (std::move (rule));
52
52
}
Original file line number Diff line number Diff line change @@ -53,6 +53,8 @@ class RuleScript : public RuleWithActions {
53
53
m_name (name),
54
54
m_lua() { }
55
55
56
+ RuleScript (const RuleWithActions& r) = delete;
57
+
56
58
bool init (std::string *err);
57
59
bool evaluate (Transaction *trans,
58
60
std::shared_ptr<RuleMessage> ruleMessage) override ;
You can’t perform that action at this time.
0 commit comments