summaryrefslogtreecommitdiff
path: root/sapi/cgi/cgi_main.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2007-09-05 08:26:49 +0000
committerDmitry Stogov <dmitry@php.net>2007-09-05 08:26:49 +0000
commitcbc9348dae3706d75fdf9bdeea2328d9bfc5ee6a (patch)
tree610f7e1d6295445e5fcd492bdf1f133f120575c0 /sapi/cgi/cgi_main.c
parent45c6b4db99e82f218a5a91b4d94c6e29fccec5dc (diff)
downloadphp-git-cbc9348dae3706d75fdf9bdeea2328d9bfc5ee6a.tar.gz
Fixed bug #42523 (PHP_SELF duplicates path)
Diffstat (limited to 'sapi/cgi/cgi_main.c')
-rw-r--r--sapi/cgi/cgi_main.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/sapi/cgi/cgi_main.c b/sapi/cgi/cgi_main.c
index d77d695436..f42764f6e6 100644
--- a/sapi/cgi/cgi_main.c
+++ b/sapi/cgi/cgi_main.c
@@ -751,6 +751,21 @@ static void init_request_info(TSRMLS_D)
char *env_path_info = sapi_cgibin_getenv("PATH_INFO", sizeof("PATH_INFO")-1 TSRMLS_CC);
char *env_script_name = sapi_cgibin_getenv("SCRIPT_NAME", sizeof("SCRIPT_NAME")-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)) {
struct stat st;
char *real_path = NULL;