From: Dmitry Stogov Date: Wed, 5 Sep 2007 08:26:32 +0000 (+0000) Subject: Fixed bug #42523 (PHP_SELF duplicates path) X-Git-Tag: php-5.2.5RC1~218 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5d238efaa65ed24bfbec64fcb921e23ffbf55f52;p=php Fixed bug #42523 (PHP_SELF duplicates path) --- diff --git a/NEWS b/NEWS index a0a9446690..77dd9b23d3 100644 --- a/NEWS +++ b/NEWS @@ -9,6 +9,7 @@ PHP NEWS - Upgraded PCRE to version 7.3 (Nuno) - Added optional parameter $provide_object to debug_backtrace(). (Sebastian) +- Fixed bug #42523 (PHP_SELF duplicates path). (Dmitry) - Fixed bug #42512 (ip2long('255.255.255.255') should return 4294967295 on 64-bit PHP). (Derick) - Fixed bug #42506 (php_pgsql_convert() timezone parse bug) (nonunnet at diff --git a/sapi/cgi/cgi_main.c b/sapi/cgi/cgi_main.c index a6ce49271a..9034479997 100644 --- a/sapi/cgi/cgi_main.c +++ b/sapi/cgi/cgi_main.c @@ -778,6 +778,21 @@ static void init_request_info(TSRMLS_D) char *env_redirect_url = sapi_cgibin_getenv("REDIRECT_URL", sizeof("REDIRECT_URL")-1 TSRMLS_CC); char *env_document_root = sapi_cgibin_getenv("DOCUMENT_ROOT", sizeof("DOCUMENT_ROOT")-1 TSRMLS_CC); + /* Hack for buggy IIS that sets incorrect PATH_INFO */ + char *env_server_software = sapi_cgibin_getenv("SERVER_SOFTWARE", sizeof("SERVER_SOFTWARE")-1 TSRMLS_CC); + if (env_server_software && + env_script_name && + env_path_info && + strncmp(env_server_software, "Microsoft-IIS", sizeof("Microsoft-IIS")-1) == 0 && + strncmp(env_path_info, env_script_name, strlen(env_script_name)) == 0) { + env_path_info = _sapi_cgibin_putenv("ORIG_PATH_INFO", env_path_info TSRMLS_CC); + env_path_info += strlen(env_script_name); + if (*env_path_info == 0) { + env_path_info = NULL; + } + env_path_info = _sapi_cgibin_putenv("PATH_INFO", env_path_info TSRMLS_CC); + } + if (CGIG(fix_pathinfo)) { char *real_path = NULL; char *orig_path_translated = env_path_translated;