Fixed: SecPerfRuleTimes storing unwanted rules

This commit is contained in:
Breno Silva
2013-04-23 18:52:20 -04:00
parent 86d939fbee
commit eb95384577
2 changed files with 10 additions and 8 deletions

View File

@@ -391,11 +391,9 @@ apr_status_t modsecurity_tx_init(modsec_rec *msr) {
if (msr->matched_vars == NULL) return -1; if (msr->matched_vars == NULL) return -1;
apr_table_clear(msr->matched_vars); apr_table_clear(msr->matched_vars);
if(msr->txcfg->max_rule_time > 0) {
msr->perf_rules = apr_table_make(msr->mp, 8); msr->perf_rules = apr_table_make(msr->mp, 8);
if (msr->perf_rules == NULL) return -1; if (msr->perf_rules == NULL) return -1;
apr_table_clear(msr->perf_rules); apr_table_clear(msr->perf_rules);
}
/* Locate the cookie headers and parse them */ /* Locate the cookie headers and parse them */
arr = apr_table_elts(msr->request_headers); arr = apr_table_elts(msr->request_headers);

View File

@@ -2604,15 +2604,19 @@ static int execute_operator(msre_var *var, msre_rule *rule, modsec_rec *msr,
rt_time = apr_table_get(msr->perf_rules, rule->actionset->id); rt_time = apr_table_get(msr->perf_rules, rule->actionset->id);
if(rt_time == NULL) { if(rt_time == NULL) {
rt_time = apr_psprintf(msr->mp, "%" APR_TIME_T_FMT, (t1 - time_before_op)); rt_time = apr_psprintf(msr->mp, "%" APR_TIME_T_FMT, (t1 - time_before_op));
rule_time = (apr_time_t)atoi(rt_time);
if(rule_time >= msr->txcfg->max_rule_time)
apr_table_setn(msr->perf_rules, rule->actionset->id, rt_time); apr_table_setn(msr->perf_rules, rule->actionset->id, rt_time);
} else { } else {
rule_time = (apr_time_t)atoi(rt_time); rule_time = (apr_time_t)atoi(rt_time);
rule_time += (t1 - time_before_op); rule_time += (t1 - time_before_op);
if(rule_time >= msr->txcfg->max_rule_time) {
rt_time = apr_psprintf(msr->mp, "%" APR_TIME_T_FMT, rule_time); rt_time = apr_psprintf(msr->mp, "%" APR_TIME_T_FMT, rule_time);
apr_table_setn(msr->perf_rules, rule->actionset->id, rt_time); apr_table_setn(msr->perf_rules, rule->actionset->id, rt_time);
} }
} }
} }
}
#endif #endif
if (rc < 0) { if (rc < 0) {