dmitry          Wed Sep  5 08:26:49 2007 UTC

  Modified files:              
    /php-src/sapi/cgi   cgi_main.c 
  Log:
  Fixed bug #42523 (PHP_SELF duplicates path)
  
  
http://cvs.php.net/viewvc.cgi/php-src/sapi/cgi/cgi_main.c?r1=1.331&r2=1.332&diff_format=u
Index: php-src/sapi/cgi/cgi_main.c
diff -u php-src/sapi/cgi/cgi_main.c:1.331 php-src/sapi/cgi/cgi_main.c:1.332
--- php-src/sapi/cgi/cgi_main.c:1.331   Fri Aug 31 12:18:04 2007
+++ php-src/sapi/cgi/cgi_main.c Wed Sep  5 08:26:49 2007
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: cgi_main.c,v 1.331 2007/08/31 12:18:04 dmitry Exp $ */
+/* $Id: cgi_main.c,v 1.332 2007/09/05 08:26:49 dmitry Exp $ */
 
 #include "php.h"
 #include "php_globals.h"
@@ -751,6 +751,21 @@
                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;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to