mirror of
https://github.com/apache/httpd.git
synced 2025-08-06 11:06:17 +00:00
PR50349: Honor 'AcceptPathInfo OFF' during internal redirects,
such as per-directory mod_rewrite substitutions. This would be left floating around in the request_rec with a pcalloc'ed value, so the core fixup hook thought some module had overridden it. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1043023 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@ -73,6 +73,9 @@
|
||||
#define AP_MAX_INCLUDE_DEPTH (128)
|
||||
#endif
|
||||
|
||||
/* valid in core-conf, but not in runtime r->used_path_info */
|
||||
#define AP_ACCEPT_PATHINFO_UNSET 3
|
||||
|
||||
APR_HOOK_STRUCT(
|
||||
APR_HOOK_LINK(get_mgmt_items)
|
||||
)
|
||||
@ -120,7 +123,7 @@ static void *create_core_dir_config(apr_pool_t *a, char *dir)
|
||||
conf->override_opts = OPT_UNSET | OPT_ALL | OPT_SYM_OWNER | OPT_MULTI;
|
||||
|
||||
conf->content_md5 = 2;
|
||||
conf->accept_path_info = 3;
|
||||
conf->accept_path_info = AP_ACCEPT_PATHINFO_UNSET;
|
||||
|
||||
conf->use_canonical_name = USE_CANONICAL_NAME_UNSET;
|
||||
conf->use_canonical_phys_port = USE_CANONICAL_PHYS_PORT_UNSET;
|
||||
@ -3759,15 +3762,17 @@ static int core_override_type(request_rec *r)
|
||||
/* Deal with the poor soul who is trying to force path_info to be
|
||||
* accepted within the core_handler, where they will let the subreq
|
||||
* address its contents. This is toggled by the user in the very
|
||||
* beginning of the fixup phase, so modules should override the user's
|
||||
* beginning of the fixup phase (here!), so modules should override the user's
|
||||
* discretion in their own module fixup phase. It is tristate, if
|
||||
* the user doesn't specify, the result is 2 (which the module may
|
||||
* interpret to its own customary behavior.) It won't be touched
|
||||
* if the value is no longer undefined (2), so any module changing
|
||||
* the value prior to the fixup phase OVERRIDES the user's choice.
|
||||
* the user doesn't specify, the result is AP_REQ_DEFAULT_PATH_INFO.
|
||||
* (which the module may interpret to its own customary behavior.)
|
||||
* It won't be touched if the value is no longer AP_ACCEPT_PATHINFO_UNSET,
|
||||
* so any module changing the value prior to the fixup phase
|
||||
* OVERRIDES the user's choice.
|
||||
*/
|
||||
if ((r->used_path_info == AP_REQ_DEFAULT_PATH_INFO)
|
||||
&& (conf->accept_path_info != 3)) {
|
||||
&& (conf->accept_path_info != AP_ACCEPT_PATHINFO_UNSET)) {
|
||||
/* No module knew better, and the user coded AcceptPathInfo */
|
||||
r->used_path_info = conf->accept_path_info;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user