]> granicus.if.org Git - php/commitdiff
Fixed bug #31514 (open_basedir uses path_translated rather then cwd for .
authorIlia Alshanetsky <iliaa@php.net>
Wed, 2 Feb 2005 23:43:17 +0000 (23:43 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Wed, 2 Feb 2005 23:43:17 +0000 (23:43 +0000)
translation).

main/fopen_wrappers.c

index dc986ffe33de5d097e4543302ccd948397ba6be9..fc11b3c095319d1e4dbbc23088e2c190a578ae6b 100644 (file)
@@ -96,24 +96,11 @@ PHPAPI int php_check_specific_open_basedir(const char *basedir, const char *path
        char resolved_name[MAXPATHLEN];
        char resolved_basedir[MAXPATHLEN];
        char local_open_basedir[MAXPATHLEN];
-       int local_open_basedir_pos;
        int resolved_basedir_len;
        int resolved_name_len;
        
        /* Special case basedir==".": Use script-directory */
-       if ((strcmp(basedir, ".") == 0) && 
-               SG(request_info).path_translated &&
-               *SG(request_info).path_translated
-               ) {
-               strlcpy(local_open_basedir, SG(request_info).path_translated, sizeof(local_open_basedir));
-               local_open_basedir_pos = strlen(local_open_basedir) - 1;
-
-               /* Strip filename */
-               while (!IS_SLASH(local_open_basedir[local_open_basedir_pos])
-                               && (local_open_basedir_pos >= 0)) {
-                       local_open_basedir[local_open_basedir_pos--] = 0;
-               }
-       } else {
+       if (strcmp(basedir, ".") || !VCWD_GETCWD(local_open_basedir, MAXPATHLEN)) {
                /* Else use the unmodified path */
                strlcpy(local_open_basedir, basedir, sizeof(local_open_basedir));
        }