Fix rules chain and action execution

- Rules chains are respecting the phase of the first rule in chain.
- The actions are only executed if all chain match.
This commit is contained in:
Felipe Zimmerle
2015-08-25 13:44:20 -03:00
parent f2da6bb81d
commit 004ef066ed
2 changed files with 14 additions and 17 deletions

View File

@@ -42,21 +42,13 @@ int Driver::addSecRule(Rule *rule) {
return -1;
}
int size = this->rules[rule->phase].size();
if (size == 0) {
this->rules[rule->phase].push_back(rule);
lastRule = rule;
return true;
}
if (lastRule->chained && lastRule->chainedRule == NULL) {
if (lastRule && lastRule->chained && lastRule->chainedRule == NULL) {
rule->phase = lastRule->phase;
lastRule->chainedRule = rule;
return true;
}
if (lastRule->chained && lastRule->chainedRule != NULL) {
if (lastRule && lastRule->chained && lastRule->chainedRule != NULL) {
Rule *a = lastRule->chainedRule;
while (a->chained && a->chainedRule != NULL) {
a = a->chainedRule;
@@ -66,6 +58,7 @@ int Driver::addSecRule(Rule *rule) {
return true;
}
}
lastRule = rule;
rules[rule->phase].push_back(rule);
return true;