From 5c4733f1abba4f8e3398a42fa5d18e3e7117c086 Mon Sep 17 00:00:00 2001 From: ivanr Date: Tue, 2 Feb 2010 13:48:30 +0000 Subject: [PATCH] Add REQUEST_BODY_LENGTH. --- CHANGES | 5 ++++- apache2/re_variables.c | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 17cfb62a..e745cc79 100644 --- a/CHANGES +++ b/CHANGES @@ -1,7 +1,10 @@ -1 Feb 2010 - trunk +2 Feb 2010 - trunk ------------------- + * Add REQUEST_BODY_LENGTH, which contains the number of request body + bytes read. [Ivan Ristic] + * Integrate with mod_log_config using the %{VARNAME}M format string. (MODSEC-108) [Ivan Ristic] diff --git a/apache2/re_variables.c b/apache2/re_variables.c index 1b0dab18..bc9b9b1d 100644 --- a/apache2/re_variables.c +++ b/apache2/re_variables.c @@ -1765,6 +1765,15 @@ static int var_request_body_generate(modsec_rec *msr, msre_var *var, msre_rule * return 0; } +/* REQUEST_BODY_LENGTH */ + +static int var_request_body_length_generate(modsec_rec *msr, msre_var *var, msre_rule *rule, + apr_table_t *vartab, apr_pool_t *mptmp) +{ + char *value = apr_psprintf(mptmp, "%d", msr->msc_reqbody_length); + return var_simple_generate(var, vartab, mptmp, value); +} + /* REQUEST_COOKIES */ static int var_request_cookies_generate(modsec_rec *msr, msre_var *var, msre_rule *rule, @@ -2778,6 +2787,17 @@ void msre_engine_register_default_variables(msre_engine *engine) { VAR_CACHE, PHASE_REQUEST_BODY ); + + /* REQUEST_BODY_LENGTH */ + msre_engine_variable_register(engine, + "REQUEST_BODY_LENGTH", + VAR_SIMPLE, + 0, 0, + NULL, + var_request_body_length_generate, + VAR_CACHE, + PHASE_REQUEST_BODY + ); /* REQUEST_COOKIES */ msre_engine_variable_register(engine,