--- /home/ivanr/tmp/modsecurity-apache_1.9.4/apache1/mod_security.c	2006-05-15 09:29:33.000000000 +0100
+++ mod_security.c	2007-03-11 16:25:27.653394016 +0000
@@ -79,7 +79,7 @@
 #define SMALL_BUF_SIZE 255
 
 #define MODULE_NAME "ModSecurity"
-#define MODULE_RELEASE "1.9.4"
+#define MODULE_RELEASE "1.9.5-rc1"
 #define MODULE_NAME_FULL (MODULE_NAME " v" MODULE_RELEASE " (Apache 1.3.x)")
 
 #define UNICODE_ERROR_CHARACTERS_MISSING    -1
@@ -3452,6 +3452,20 @@
             && (strncasecmp(content_type, "application/x-www-form-urlencoded", 33) == 0)
             && (msr->r->method_number == M_POST))
         {
+            int j;
+
+            /* Check that the byte range is OK. */
+
+            sec_debug_log(r, 3, "Checking byte range in POST payload");
+
+            for (j = 0; j < msr->ctx_in->length; j++) {
+                int c = ((unsigned char *)msr->ctx_in->buffer)[j];
+                if ((c < msr->dcfg->range_start) || (c > msr->dcfg->range_end)) {
+                    msr->tmp_message = ap_psprintf(r->pool, "Invalid character detected in POST payload [%i]", c);
+                    return perform_action(msr, msr->dcfg->actionset, NULL);
+                }
+            }
+
             /* parse variables before normalising the bufffer */
             sec_debug_log(r, 3, "Parsing variables from POST payload");
             if (parse_arguments(msr->_post_payload, msr->parsed_args, r, msr->dcfg, &my_error_msg) < 0) {
