components/apache2/patches/CVE-2014-0118.patch
author Petr Sumbera <petr.sumbera@oracle.com>
Thu, 14 Aug 2014 07:20:57 -0700
branchs11u2-sru
changeset 3268 17a417ef54a5
permissions -rw-r--r--
19262807 problem in UTILITY/APACHE
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3268
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     1
Patch origin: upstream
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     2
Patch status: will be part of next version
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     3
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     4
http://svn.apache.org/viewvc?view=revision&revision=1611426
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     5
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     6
--- modules/filters/mod_deflate.c	2014/07/17 18:19:00	1611425
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     7
+++ modules/filters/mod_deflate.c	2014/07/17 18:20:46	1611426
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     8
@@ -37,6 +37,7 @@
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     9
 #include "httpd.h"
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    10
 #include "http_config.h"
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    11
 #include "http_log.h"
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    12
+#include "http_core.h"
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    13
 #include "apr_lib.h"
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    14
 #include "apr_strings.h"
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    15
 #include "apr_general.h"
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    16
@@ -51,6 +52,9 @@
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    17
 static const char deflateFilterName[] = "DEFLATE";
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    18
 module AP_MODULE_DECLARE_DATA deflate_module;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    19
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    20
+#define AP_INFLATE_RATIO_LIMIT 200
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    21
+#define AP_INFLATE_RATIO_BURST 3
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    22
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    23
 typedef struct deflate_filter_config_t
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    24
 {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    25
     int windowSize;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    26
@@ -62,6 +66,12 @@
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    27
     char *note_output_name;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    28
 } deflate_filter_config;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    29
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    30
+typedef struct deflate_dirconf_t {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    31
+    apr_off_t inflate_limit;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    32
+    int ratio_limit,
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    33
+        ratio_burst;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    34
+} deflate_dirconf_t;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    35
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    36
 /* RFC 1952 Section 2.3 defines the gzip header:
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    37
  *
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    38
  * +---+---+---+---+---+---+---+---+---+---+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    39
@@ -193,6 +203,14 @@
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    40
     return c;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    41
 }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    42
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    43
+static void *create_deflate_dirconf(apr_pool_t *p, char *dummy)
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    44
+{
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    45
+    deflate_dirconf_t *dc = apr_pcalloc(p, sizeof(*dc));
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    46
+    dc->ratio_limit = AP_INFLATE_RATIO_LIMIT;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    47
+    dc->ratio_burst = AP_INFLATE_RATIO_BURST;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    48
+    return dc;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    49
+}
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    50
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    51
 static const char *deflate_set_window_size(cmd_parms *cmd, void *dummy,
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    52
                                            const char *arg)
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    53
 {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    54
@@ -284,6 +302,55 @@
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    55
     return NULL;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    56
 }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    57
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    58
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    59
+static const char *deflate_set_inflate_limit(cmd_parms *cmd, void *dirconf,
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    60
+                                      const char *arg)
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    61
+{
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    62
+    deflate_dirconf_t *dc = (deflate_dirconf_t*) dirconf;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    63
+    char *errp;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    64
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    65
+    if (APR_SUCCESS != apr_strtoff(&dc->inflate_limit, arg, &errp, 10)) {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    66
+        return "DeflateInflateLimitRequestBody is not parsable.";
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    67
+    }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    68
+    if (*errp || dc->inflate_limit < 0) {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    69
+        return "DeflateInflateLimitRequestBody requires a non-negative integer.";
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    70
+    }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    71
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    72
+    return NULL;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    73
+}
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    74
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    75
+static const char *deflate_set_inflate_ratio_limit(cmd_parms *cmd,
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    76
+                                                   void *dirconf,
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    77
+                                                   const char *arg)
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    78
+{
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    79
+    deflate_dirconf_t *dc = (deflate_dirconf_t*) dirconf;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    80
+    int i;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    81
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    82
+    i = atoi(arg);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    83
+    if (i <= 0)
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    84
+        return "DeflateInflateRatioLimit must be positive";
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    85
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    86
+    dc->ratio_limit = i;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    87
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    88
+    return NULL;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    89
+}
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    90
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    91
+static const char *deflate_set_inflate_ratio_burst(cmd_parms *cmd,
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    92
+                                                   void *dirconf,
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    93
+                                                   const char *arg)
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    94
+{
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    95
+    deflate_dirconf_t *dc = (deflate_dirconf_t*) dirconf;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    96
+    int i;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    97
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    98
+    i = atoi(arg);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    99
+    if (i <= 0)
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   100
+        return "DeflateInflateRatioBurst must be positive";
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   101
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   102
+    dc->ratio_burst = i;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   103
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   104
+    return NULL;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   105
+}
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   106
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   107
 typedef struct deflate_ctx_t
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   108
 {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   109
     z_stream stream;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   110
@@ -294,8 +361,26 @@
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   111
     unsigned char *validation_buffer;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   112
     apr_size_t validation_buffer_length;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   113
     int inflate_init;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   114
+    int ratio_hits;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   115
+    apr_off_t inflate_total;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   116
 } deflate_ctx;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   117
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   118
+/* Check whether the (inflate) ratio exceeds the configured limit/burst. */
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   119
+static int check_ratio(request_rec *r, deflate_ctx *ctx,
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   120
+                       const deflate_dirconf_t *dc)
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   121
+{
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   122
+    if (ctx->stream.total_in) {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   123
+        int ratio = ctx->stream.total_out / ctx->stream.total_in;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   124
+        if (ratio < dc->ratio_limit) {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   125
+            ctx->ratio_hits = 0;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   126
+        }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   127
+        else if (++ctx->ratio_hits > dc->ratio_burst) {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   128
+            return 0;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   129
+        }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   130
+    }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   131
+    return 1;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   132
+}
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   133
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   134
 /* Number of validation bytes (CRC and length) after the compressed data */
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   135
 #define VALIDATION_SIZE 8
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   136
 /* Do not update ctx->crc, see comment in flush_libz_buffer */
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   137
@@ -744,6 +829,8 @@
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   138
     int zRC;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   139
     apr_status_t rv;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   140
     deflate_filter_config *c;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   141
+    deflate_dirconf_t *dc;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   142
+    apr_off_t inflate_limit;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   143
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   144
     /* just get out of the way of things we don't want. */
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   145
     if (mode != AP_MODE_READBYTES) {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   146
@@ -751,6 +838,7 @@
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   147
     }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   148
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   149
     c = ap_get_module_config(r->server->module_config, &deflate_module);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   150
+    dc = ap_get_module_config(r->per_dir_config, &deflate_module);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   151
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   152
     if (!ctx) {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   153
         char deflate_hdr[10];
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   154
@@ -803,11 +891,13 @@
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   155
         if (len != 10 ||
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   156
             deflate_hdr[0] != deflate_magic[0] ||
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   157
             deflate_hdr[1] != deflate_magic[1]) {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   158
+            ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "Failed to inflate input: wrong/partial magic bytes");
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   159
             return APR_EGENERAL;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   160
         }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   161
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   162
         /* We can't handle flags for now. */
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   163
         if (deflate_hdr[3] != 0) {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   164
+            ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "Failed to inflate input: cannot handle deflate flags");
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   165
             return APR_EGENERAL;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   166
         }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   167
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   168
@@ -831,6 +921,12 @@
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   169
         apr_brigade_cleanup(ctx->bb);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   170
     }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   171
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   172
+    inflate_limit = dc->inflate_limit; 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   173
+    if (inflate_limit == 0) { 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   174
+        /* The core is checking the deflated body, we'll check the inflated */
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   175
+        inflate_limit = ap_get_limit_req_body(f->r);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   176
+    }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   177
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   178
     if (APR_BRIGADE_EMPTY(ctx->proc_bb)) {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   179
         rv = ap_get_brigade(f->next, ctx->bb, mode, block, readbytes);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   180
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   181
@@ -863,6 +959,17 @@
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   182
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   183
                 ctx->stream.next_out = ctx->buffer;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   184
                 len = c->bufferSize - ctx->stream.avail_out;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   185
+ 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   186
+                ctx->inflate_total += len;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   187
+                if (inflate_limit && ctx->inflate_total > inflate_limit) { 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   188
+                    inflateEnd(&ctx->stream);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   189
+                    ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, r, 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   190
+                            "Inflated content length of %" APR_OFF_T_FMT
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   191
+                            " is larger than the configured limit"
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   192
+                            " of %" APR_OFF_T_FMT, 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   193
+                            ctx->inflate_total, inflate_limit);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   194
+                    return APR_ENOSPC;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   195
+                }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   196
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   197
                 ctx->crc = crc32(ctx->crc, (const Bytef *)ctx->buffer, len);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   198
                 tmp_heap = apr_bucket_heap_create((char *)ctx->buffer, len,
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   199
@@ -891,6 +998,26 @@
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   200
                     ctx->stream.next_out = ctx->buffer;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   201
                     len = c->bufferSize - ctx->stream.avail_out;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   202
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   203
+                      ctx->inflate_total += len;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   204
+                      if (inflate_limit && ctx->inflate_total > inflate_limit) { 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   205
+                          inflateEnd(&ctx->stream);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   206
+                          ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, r,
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   207
+                                  "Inflated content length of %" APR_OFF_T_FMT
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   208
+                                  " is larger than the configured limit"
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   209
+                                  " of %" APR_OFF_T_FMT, 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   210
+                                  ctx->inflate_total, inflate_limit);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   211
+                          return APR_ENOSPC;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   212
+                      }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   213
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   214
+                      if (!check_ratio(r, ctx, dc)) {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   215
+                          inflateEnd(&ctx->stream);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   216
+                          ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, r, 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   217
+                                  "Inflated content ratio is larger than the "
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   218
+                                  "configured limit %i by %i time(s)",
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   219
+                                  dc->ratio_limit, dc->ratio_burst);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   220
+                          return APR_EINVAL;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   221
+                      }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   222
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   223
                     ctx->crc = crc32(ctx->crc, (const Bytef *)ctx->buffer, len);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   224
                     tmp_heap = apr_bucket_heap_create((char *)ctx->buffer, len,
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   225
                                                       NULL, f->c->bucket_alloc);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   226
@@ -1003,6 +1130,7 @@
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   227
     int zRC;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   228
     apr_status_t rv;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   229
     deflate_filter_config *c;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   230
+    deflate_dirconf_t *dc;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   231
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   232
     /* Do nothing if asked to filter nothing. */
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   233
     if (APR_BRIGADE_EMPTY(bb)) {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   234
@@ -1010,6 +1138,7 @@
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   235
     }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   236
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   237
     c = ap_get_module_config(r->server->module_config, &deflate_module);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   238
+    dc = ap_get_module_config(r->per_dir_config, &deflate_module);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   239
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   240
     if (!ctx) {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   241
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   242
@@ -1272,6 +1401,14 @@
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   243
         while (ctx->stream.avail_in != 0) {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   244
             if (ctx->stream.avail_out == 0) {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   245
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   246
+                if (!check_ratio(r, ctx, dc)) {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   247
+                    ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, r, 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   248
+                            "Inflated content ratio is larger than the "
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   249
+                            "configured limit %i by %i time(s)",
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   250
+                            dc->ratio_limit, dc->ratio_burst);
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   251
+                    return APR_EINVAL;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   252
+                }
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   253
+
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   254
                 ctx->stream.next_out = ctx->buffer;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   255
                 len = c->bufferSize - ctx->stream.avail_out;
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   256
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   257
@@ -1346,12 +1483,20 @@
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   258
                   "Set the Deflate Memory Level (1-9)"),
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   259
     AP_INIT_TAKE1("DeflateCompressionLevel", deflate_set_compressionlevel, NULL, RSRC_CONF,
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   260
                   "Set the Deflate Compression Level (1-9)"),
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   261
+    AP_INIT_TAKE1("DeflateInflateLimitRequestBody", deflate_set_inflate_limit, NULL, OR_ALL,
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   262
+                  "Set a limit on size of inflated input"),
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   263
+    AP_INIT_TAKE1("DeflateInflateRatioLimit", deflate_set_inflate_ratio_limit, NULL, OR_ALL,
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   264
+                  "Set the inflate ratio limit above which inflation is "
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   265
+                  "aborted (default: " APR_STRINGIFY(AP_INFLATE_RATIO_LIMIT) ")"),
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   266
+    AP_INIT_TAKE1("DeflateInflateRatioBurst", deflate_set_inflate_ratio_burst, NULL, OR_ALL,
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   267
+                  "Set the maximum number of following inflate ratios above limit "
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   268
+                  "(default: " APR_STRINGIFY(AP_INFLATE_RATIO_BURST) ")"),
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   269
     {NULL}
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   270
 };
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   271
 
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   272
 module AP_MODULE_DECLARE_DATA deflate_module = {
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   273
     STANDARD20_MODULE_STUFF,
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   274
-    NULL,                         /* dir config creater */
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   275
+    create_deflate_dirconf,       /* dir config creater */
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   276
     NULL,                         /* dir merger --- default is to override */
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   277
     create_deflate_server_config, /* server config */
17a417ef54a5 19262807 problem in UTILITY/APACHE
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   278
     NULL,                         /* merge server config */