Commit 7f9ccf36 authored by Graham Leggett's avatar Graham Leggett
Browse files

mod_disk_cache: Make sure that only positive integers are accepted

for the CacheMaxFileSize and CacheMinFileSize parameters in the
config file. PR39380

+1: minfrin, jim, trawick


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@463506 13f79535-47bb-0310-9956-ffa450edef68
parent bd547b4b
Loading
Loading
Loading
Loading
+4 −0
Changes for CHANGES: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
                                                        -*- coding: utf-8 -*-
Changes with Apache 2.2.4
  *) mod_disk_cache: Make sure that only positive integers are accepted
     for the CacheMaxFileSize and CacheMinFileSize parameters in the
     config file. PR39380 [Niklas Edmundsson <nikke acc.umu.se>]
  *) mod_cache: From RFC3986 (section 6.2.3.) if a URI contains an
     authority component and an empty path, the empty path is to be equivalent
     to "/". It explicitly cites the following four URIs as equivalents:
+0 −16
Changes for STATUS: 0 added lines, 16 removed lines.
Original line number Diff line number Diff line
@@ -77,22 +77,6 @@ RELEASE SHOWSTOPPERS:
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
  [ start all new proposals below, under PATCHES PROPOSED. ]

    * mod_cache: From RFC3986 (section 6.2.3.) if a URI contains an
      authority component and an empty path, the empty path is to be equivalent
      to "/". It explicitly cites the following four URIs as equivalents:
        http://example.com
        http://example.com/
        http://example.com:/
        http://example.com:80/
      Trunk: http://svn.apache.org/viewvc?view=rev&revision=450063
      +1: minfrin, rpluem, jim

    * mod_disk_cache: Make sure that only positive integers are accepted
      for the CacheMaxFileSize and CacheMinFileSize parameters in the
      config file. PR39380
      Trunk: http://svn.apache.org/viewvc?view=rev&revision=450042
      2.2.x: http://people.apache.org/~minfrin/mod_disk_cache-lfsconfig-2.2.patch
      +1: minfrin, jim, trawick

PATCHES PROPOSED TO BACKPORT FROM TRUNK:

+14 −4
Changes for modules/cache/mod_disk_cache.c: 14 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -1006,7 +1006,7 @@ static apr_status_t store_body(cache_handle_t *h, request_rec *r,
        if (dobj->file_size > conf->maxfs) {
            ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
                         "cache_disk: URL %s failed the size check "
                         "(%" APR_OFF_T_FMT ">%" APR_SIZE_T_FMT ")",
                         "(%" APR_OFF_T_FMT " > %" APR_OFF_T_FMT ")",
                         h->cache_obj->key, dobj->file_size, conf->maxfs);
            /* Remove the intermediate cache file and return non-APR_SUCCESS */
            file_cache_errorcleanup(dobj, r);
@@ -1030,7 +1030,7 @@ static apr_status_t store_body(cache_handle_t *h, request_rec *r,
        if (dobj->file_size < conf->minfs) {
            ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
                         "cache_disk: URL %s failed the size check "
                         "(%" APR_OFF_T_FMT "<%" APR_SIZE_T_FMT ")",
                         "(%" APR_OFF_T_FMT " < %" APR_OFF_T_FMT ")",
                         h->cache_obj->key, dobj->file_size, conf->minfs);
            /* Remove the intermediate cache file and return non-APR_SUCCESS */
            file_cache_errorcleanup(dobj, r);
@@ -1117,15 +1117,25 @@ static const char
{
    disk_cache_conf *conf = ap_get_module_config(parms->server->module_config,
                                                 &disk_cache_module);
    conf->minfs = atoi(arg);

    if (apr_strtoff(&conf->minfs, arg, NULL, 0) != APR_SUCCESS ||
            conf->minfs < 0) 
    {
        return "CacheMinFileSize argument must be a non-negative integer representing the min size of a file to cache in bytes.";
    }
    return NULL;
}

static const char
*set_cache_maxfs(cmd_parms *parms, void *in_struct_ptr, const char *arg)
{
    disk_cache_conf *conf = ap_get_module_config(parms->server->module_config,
                                                 &disk_cache_module);
    conf->maxfs = atoi(arg);
    if (apr_strtoff(&conf->maxfs, arg, NULL, 0) != APR_SUCCESS ||
            conf->maxfs < 0) 
    {
        return "CacheMaxFileSize argument must be a non-negative integer representing the max size of a file to cache in bytes.";
    }
    return NULL;
}

+2 −2
Changes for modules/cache/mod_disk_cache.h: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -88,8 +88,8 @@ typedef struct {
    apr_size_t cache_root_len;
    int dirlevels;               /* Number of levels of subdirectories */
    int dirlength;               /* Length of subdirectory names */
    apr_size_t minfs;            /* minumum file size for cached files */
    apr_size_t maxfs;            /* maximum file size for cached files */
    apr_off_t minfs;             /* minimum file size for cached files */
    apr_off_t maxfs;             /* maximum file size for cached files */
} disk_cache_conf;

#endif /*MOD_DISK_CACHE_H*/