mirror of
https://github.com/apache/httpd.git
synced 2025-11-08 04:22:21 +03:00
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>] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@450042 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
4
CHANGES
4
CHANGES
@@ -2,6 +2,10 @@
|
|||||||
Changes with Apache 2.3.0
|
Changes with Apache 2.3.0
|
||||||
[Remove entries to the current 2.0 and 2.2 section below, when backported]
|
[Remove entries to the current 2.0 and 2.2 section below, when backported]
|
||||||
|
|
||||||
|
*) 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_proxy_balancer: Set the new environment variable BALANCER_ROUTE_CHANGED
|
*) mod_proxy_balancer: Set the new environment variable BALANCER_ROUTE_CHANGED
|
||||||
if a worker with a route different from the one supplied by the client
|
if a worker with a route different from the one supplied by the client
|
||||||
had been chosen or if the client supplied no routing information for
|
had been chosen or if the client supplied no routing information for
|
||||||
|
|||||||
22
modules/cache/mod_disk_cache.c
vendored
22
modules/cache/mod_disk_cache.c
vendored
@@ -334,14 +334,14 @@ static int create_entity(cache_handle_t *h, request_rec *r, const char *key, apr
|
|||||||
if (len > conf->maxfs) {
|
if (len > conf->maxfs) {
|
||||||
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
|
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
|
||||||
"disk_cache: URL %s failed the size check "
|
"disk_cache: URL %s failed the size check "
|
||||||
"(%" APR_OFF_T_FMT " > %" APR_SIZE_T_FMT ")",
|
"(%" APR_OFF_T_FMT " > %" APR_OFF_T_FMT ")",
|
||||||
key, len, conf->maxfs);
|
key, len, conf->maxfs);
|
||||||
return DECLINED;
|
return DECLINED;
|
||||||
}
|
}
|
||||||
if (len >= 0 && len < conf->minfs) {
|
if (len >= 0 && len < conf->minfs) {
|
||||||
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
|
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
|
||||||
"disk_cache: URL %s failed the size check "
|
"disk_cache: URL %s failed the size check "
|
||||||
"(%" APR_OFF_T_FMT " < %" APR_SIZE_T_FMT ")",
|
"(%" APR_OFF_T_FMT " < %" APR_OFF_T_FMT ")",
|
||||||
key, len, conf->minfs);
|
key, len, conf->minfs);
|
||||||
return DECLINED;
|
return DECLINED;
|
||||||
}
|
}
|
||||||
@@ -1026,7 +1026,7 @@ static apr_status_t store_body(cache_handle_t *h, request_rec *r,
|
|||||||
if (dobj->file_size > conf->maxfs) {
|
if (dobj->file_size > conf->maxfs) {
|
||||||
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
|
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
|
||||||
"disk_cache: URL %s failed the size check "
|
"disk_cache: 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);
|
h->cache_obj->key, dobj->file_size, conf->maxfs);
|
||||||
/* Remove the intermediate cache file and return non-APR_SUCCESS */
|
/* Remove the intermediate cache file and return non-APR_SUCCESS */
|
||||||
file_cache_errorcleanup(dobj, r);
|
file_cache_errorcleanup(dobj, r);
|
||||||
@@ -1050,7 +1050,7 @@ static apr_status_t store_body(cache_handle_t *h, request_rec *r,
|
|||||||
if (dobj->file_size < conf->minfs) {
|
if (dobj->file_size < conf->minfs) {
|
||||||
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
|
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
|
||||||
"disk_cache: URL %s failed the size check "
|
"disk_cache: 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);
|
h->cache_obj->key, dobj->file_size, conf->minfs);
|
||||||
/* Remove the intermediate cache file and return non-APR_SUCCESS */
|
/* Remove the intermediate cache file and return non-APR_SUCCESS */
|
||||||
file_cache_errorcleanup(dobj, r);
|
file_cache_errorcleanup(dobj, r);
|
||||||
@@ -1137,15 +1137,25 @@ static const char
|
|||||||
{
|
{
|
||||||
disk_cache_conf *conf = ap_get_module_config(parms->server->module_config,
|
disk_cache_conf *conf = ap_get_module_config(parms->server->module_config,
|
||||||
&disk_cache_module);
|
&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;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char
|
static const char
|
||||||
*set_cache_maxfs(cmd_parms *parms, void *in_struct_ptr, const char *arg)
|
*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_conf *conf = ap_get_module_config(parms->server->module_config,
|
||||||
&disk_cache_module);
|
&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;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
4
modules/cache/mod_disk_cache.h
vendored
4
modules/cache/mod_disk_cache.h
vendored
@@ -88,8 +88,8 @@ typedef struct {
|
|||||||
apr_size_t cache_root_len;
|
apr_size_t cache_root_len;
|
||||||
int dirlevels; /* Number of levels of subdirectories */
|
int dirlevels; /* Number of levels of subdirectories */
|
||||||
int dirlength; /* Length of subdirectory names */
|
int dirlength; /* Length of subdirectory names */
|
||||||
apr_size_t minfs; /* minumum file size for cached files */
|
apr_off_t minfs; /* minimum file size for cached files */
|
||||||
apr_size_t maxfs; /* maximum file size for cached files */
|
apr_off_t maxfs; /* maximum file size for cached files */
|
||||||
} disk_cache_conf;
|
} disk_cache_conf;
|
||||||
|
|
||||||
#endif /*MOD_DISK_CACHE_H*/
|
#endif /*MOD_DISK_CACHE_H*/
|
||||||
|
|||||||
Reference in New Issue
Block a user