mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-10-01 12:07:46 +03:00
Makes Rule a shared pointer
This commit is contained in:
@@ -1076,16 +1076,15 @@ expression:
|
||||
}
|
||||
|
||||
Operator *op = $3.release();
|
||||
Rule *rule = new Rule(
|
||||
std::unique_ptr<Rule> rule(new Rule(
|
||||
/* op */ op,
|
||||
/* variables */ v,
|
||||
/* actions */ a,
|
||||
/* file name */ *@1.end.filename,
|
||||
/* line number */ @1.end.line
|
||||
);
|
||||
));
|
||||
|
||||
if (driver.addSecRule(rule) == false) {
|
||||
delete rule;
|
||||
if (driver.addSecRule(std::move(rule)) == false) {
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
@@ -1096,15 +1095,14 @@ expression:
|
||||
v->push_back(i.release());
|
||||
}
|
||||
|
||||
Rule *rule = new Rule(
|
||||
std::unique_ptr<Rule> rule(new Rule(
|
||||
/* op */ $3.release(),
|
||||
/* variables */ v,
|
||||
/* actions */ NULL,
|
||||
/* file name */ *@1.end.filename,
|
||||
/* line number */ @1.end.line
|
||||
);
|
||||
if (driver.addSecRule(rule) == false) {
|
||||
delete rule;
|
||||
));
|
||||
if (driver.addSecRule(std::move(rule)) == false) {
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
@@ -1114,14 +1112,14 @@ expression:
|
||||
for (auto &i : *$2.get()) {
|
||||
a->push_back(i.release());
|
||||
}
|
||||
Rule *rule = new Rule(
|
||||
std::unique_ptr<Rule> rule(new Rule(
|
||||
/* op */ NULL,
|
||||
/* variables */ NULL,
|
||||
/* actions */ a,
|
||||
/* file name */ *@1.end.filename,
|
||||
/* line number */ @1.end.line
|
||||
);
|
||||
driver.addSecAction(rule);
|
||||
));
|
||||
driver.addSecAction(std::move(rule));
|
||||
}
|
||||
| DIRECTIVE_SECRULESCRIPT actions
|
||||
{
|
||||
@@ -1130,20 +1128,18 @@ expression:
|
||||
for (auto &i : *$2.get()) {
|
||||
a->push_back(i.release());
|
||||
}
|
||||
RuleScript *r = new RuleScript(
|
||||
std::unique_ptr<RuleScript> r(new RuleScript(
|
||||
/* path to script */ $1,
|
||||
/* actions */ a,
|
||||
/* file name */ *@1.end.filename,
|
||||
/* line number */ @1.end.line
|
||||
);
|
||||
));
|
||||
|
||||
if (r->init(&err) == false) {
|
||||
driver.error(@0, "Failed to load script: " + err);
|
||||
delete r;
|
||||
YYERROR;
|
||||
}
|
||||
if (driver.addSecRuleScript(r) == false) {
|
||||
delete r;
|
||||
if (driver.addSecRuleScript(std::move(r)) == false) {
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user