File modsecurity-2.9.3-input_filtering_errors.patch of Package apache2-mod_security2

Index: modsecurity-2.9.2/apache2/apache2_io.c
===================================================================
--- modsecurity-2.9.2.orig/apache2/apache2_io.c	2017-07-18 20:45:57.000000000 +0200
+++ modsecurity-2.9.2/apache2/apache2_io.c	2021-03-03 11:06:50.932291849 +0100
@@ -208,6 +208,10 @@ apr_status_t read_request_body(modsec_re
              *      too large and APR_EGENERAL when the client disconnects.
              */
             switch(rc) {
+                case AP_FILTER_ERROR :
+                    *error_msg = apr_pstrdup(msr->mp, "Error reading request body: filter error");
+                    return -8;
+
                 case APR_INCOMPLETE :
                     *error_msg = apr_psprintf(msr->mp, "Error reading request body: %s", get_apr_error(msr->mp, rc));
                     return -7;
@@ -217,7 +221,7 @@ apr_status_t read_request_body(modsec_re
                 case APR_TIMEUP :
                     *error_msg = apr_psprintf(msr->mp, "Error reading request body: %s", get_apr_error(msr->mp, rc));
                     return -4;
-                case AP_FILTER_ERROR :
+                case APR_ENOSPC:
                     *error_msg = apr_psprintf(msr->mp, "Error reading request body: HTTP Error 413 - Request entity too large. (Most likely.)");
                     return -3;
                 case APR_EGENERAL :
Index: modsecurity-2.9.2/apache2/mod_security2.c
===================================================================
--- modsecurity-2.9.2.orig/apache2/mod_security2.c	2017-07-18 20:45:57.000000000 +0200
+++ modsecurity-2.9.2/apache2/mod_security2.c	2021-03-03 11:06:50.932291849 +0100
@@ -1021,6 +1021,21 @@ static int hook_request_late(request_rec
                 }
                 return HTTP_INTERNAL_SERVER_ERROR;
                 break;
+            case -2 : /* Bad request. */
+            case -6 : /* EOF when reading request body. */
+            case -7 : /* Partial recieved */
+                if (my_error_msg != NULL) {
+                    msr_log(msr, 4, "%s", my_error_msg);
+                }
+                r->connection->keepalive = AP_CONN_CLOSE;
+                return HTTP_BAD_REQUEST;
+                break;
+            case -3 : /* Apache's LimitRequestBody. */
+                if (my_error_msg != NULL) {
+                    msr_log(msr, 1, "%s", my_error_msg);
+                }
+                return HTTP_REQUEST_ENTITY_TOO_LARGE;
+                break;
             case -4 : /* Timeout. */
                 if (my_error_msg != NULL) {
                     msr_log(msr, 4, "%s", my_error_msg);
@@ -1042,19 +1057,11 @@ static int hook_request_late(request_rec
                     }
                 }
                 break;
-            case -6 : /* EOF when reading request body. */
+            case -8 : /* Filter error. */
                 if (my_error_msg != NULL) {
-                    msr_log(msr, 4, "%s", my_error_msg);
+                    msr_log(msr, 1, "%s", my_error_msg);
                 }
-                r->connection->keepalive = AP_CONN_CLOSE;
-                return HTTP_BAD_REQUEST;
-                break;
-            case -7 : /* Partial recieved */
-                if (my_error_msg != NULL) {
-                    msr_log(msr, 4, "%s", my_error_msg);
-                }
-                r->connection->keepalive = AP_CONN_CLOSE;
-                return HTTP_BAD_REQUEST;
+                return AP_FILTER_ERROR;
                 break;
             default :
                 /* allow through */
openSUSE Build Service is sponsored by