From 50205ebf629f55a6eac08c36692b97172ee442d6 Mon Sep 17 00:00:00 2001 From: brenosilva Date: Mon, 4 Apr 2011 21:02:13 +0000 Subject: [PATCH] Improvements in detection only --- apache2/apache2_io.c | 13 ++++++++----- apache2/msc_reqbody.c | 5 +++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/apache2/apache2_io.c b/apache2/apache2_io.c index 927a223b..ef76c7d1 100644 --- a/apache2/apache2_io.c +++ b/apache2/apache2_io.c @@ -237,8 +237,9 @@ apr_status_t read_request_body(modsec_rec *msr, char **error_msg) { /* Check request body limit (should only trigger on chunked requests). */ if (msr->reqbody_length + buflen > (apr_size_t)msr->txcfg->reqbody_limit) { *error_msg = apr_psprintf(msr->mp, "Request body is larger than the " - "configured limit (%ld).", msr->txcfg->reqbody_limit); - return -5; + "configured limit (%ld).", msr->txcfg->reqbody_limit); + if(msr->txcfg->if_limit_action == REQUEST_BODY_LIMIT_ACTION_REJECT) + return -5; } if (buflen != 0) { @@ -246,11 +247,13 @@ apr_status_t read_request_body(modsec_rec *msr, char **error_msg) { if (rcbs < 0) { if (rcbs == -5) { *error_msg = apr_psprintf(msr->mp, "Request body no files data length is larger than the " - "configured limit (%ld).", msr->txcfg->reqbody_no_files_limit); - return -5; + "configured limit (%ld).", msr->txcfg->reqbody_no_files_limit); + if(msr->txcfg->if_limit_action == REQUEST_BODY_LIMIT_ACTION_REJECT) + return -5; } - return -1; + if(msr->txcfg->if_limit_action == REQUEST_BODY_LIMIT_ACTION_REJECT) + return -1; } msr->reqbody_length += buflen; diff --git a/apache2/msc_reqbody.c b/apache2/msc_reqbody.c index 1086b278..12cbf39f 100644 --- a/apache2/msc_reqbody.c +++ b/apache2/msc_reqbody.c @@ -361,7 +361,8 @@ apr_status_t modsecurity_request_body_store(modsec_rec *msr, /* Check that we are not over the request body no files limit. */ if (msr->msc_reqbody_no_files_length >= (unsigned long) msr->txcfg->reqbody_no_files_limit) { - return -5; + if(msr->txcfg->if_limit_action == REQUEST_BODY_LIMIT_ACTION_REJECT) + return -5; } /* Store data. */ @@ -369,7 +370,7 @@ apr_status_t modsecurity_request_body_store(modsec_rec *msr, return modsecurity_request_body_store_memory(msr, data, length, error_msg); } else - if (msr->msc_reqbody_storage == MSC_REQBODY_DISK) { + if (msr->msc_reqbody_storage == MSC_REQBODY_DISK) { return modsecurity_request_body_store_disk(msr, data, length, error_msg); }