Skip to content

Commit a0bea73

Browse files
MinasuFelipe Zimmerle
authored andcommitted
Correction remove_by_tag and remove_by_msg
1 parent 5e8062c commit a0bea73

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/rules.cc

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ std::string Rules::getParserError() {
152152

153153

154154
int Rules::evaluate(int phase, Transaction *transaction) {
155+
bool remove_rule;
156+
155157
if (phase > modsecurity::Phases::NUMBER_OF_PHASES) {
156158
return 0;
157159
}
@@ -178,6 +180,7 @@ int Rules::evaluate(int phase, Transaction *transaction) {
178180
}
179181

180182
for (int i = 0; i < rules.size(); i++) {
183+
remove_rule = false;
181184
Rule *rule = rules[i];
182185
if (transaction->m_marker.empty() == false) {
183186
debug(9, "Skipped rule id '" + std::to_string(rule->m_ruleId) \
@@ -209,9 +212,13 @@ int Rules::evaluate(int phase, Transaction *transaction) {
209212
debug(9, "Skipped rule id '" \
210213
+ std::to_string(rule->m_ruleId) \
211214
+ "'. Removed by a SecRuleRemoveByMsg directive.");
212-
return 1;
215+
remove_rule = true;
216+
break;
213217
}
214218
}
219+
if(remove_rule) {
220+
continue;
221+
}
215222
}
216223

217224
if (m_exceptions.m_remove_rule_by_tag.empty() == false) {
@@ -220,9 +227,13 @@ int Rules::evaluate(int phase, Transaction *transaction) {
220227
debug(9, "Skipped rule id '" \
221228
+ std::to_string(rule->m_ruleId) \
222229
+ "'. Removed by a SecRuleRemoveByTag directive.");
223-
return 1;
230+
remove_rule = true;
231+
break;
224232
}
225233
}
234+
if(remove_rule) {
235+
continue;
236+
}
226237
}
227238

228239
rule->evaluate(transaction, NULL);

0 commit comments

Comments
 (0)