diff --git a/CHANGES b/CHANGES index 952b30ab..917c1275 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ 20 May 2009 - trunk ------------------- + * Truncate long parameters in log message for "Match of ... against ... + required" messages. + * Correctly resolve chained rule actions in logs. * Cleanup some code for portability. diff --git a/apache2/re.c b/apache2/re.c index ce219745..77e36828 100644 --- a/apache2/re.c +++ b/apache2/re.c @@ -1762,9 +1762,16 @@ static int execute_operator(msre_var *var, msre_rule *rule, modsec_rec *msr, else { /* Match. */ if (rc == 0) { + char *op_param = log_escape(msr->mp, rule->op_param); + + /* Truncate op parameter. */ + if (strlen(op_param) > 252) { + op_param = apr_psprintf(msr->mp, "%.252s ...", op_param); + } + /* Operator did not match so we need to provide a message. */ my_error_msg = apr_psprintf(msr->mp, "Match of \"%s %s\" against \"%s\" required.", - log_escape(msr->mp, rule->op_name), log_escape(msr->mp, rule->op_param), + log_escape(msr->mp, rule->op_name), op_param, log_escape(msr->mp, full_varname)); }