From: Ilia Alshanetsky Date: Wed, 2 Feb 2005 23:43:47 +0000 (+0000) Subject: MFH: Fixed bug #31514 (open_basedir uses path_translated rather then cwd for . X-Git-Tag: php-5.0.4RC1~207 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=33372e4d5d7b131b3817dd8fd35328bee7ebdcc3;p=php MFH: Fixed bug #31514 (open_basedir uses path_translated rather then cwd for . translation). --- diff --git a/NEWS b/NEWS index 993a3cc33d..4d5e256ee6 100644 --- a/NEWS +++ b/NEWS @@ -33,6 +33,8 @@ PHP NEWS (Marcus) - Fixed bug #31623 (OCILogin does not support password grace period). (daniel dot beet at accuratesoftware dot com, Tony) +- Fixed bug #31514 (open_basedir uses path_translated rather then cwd for . + translation). (Ilia) - Fixed bug #31480 (Possible infinite loop in imap_mail_compose()). (Ilia) - Fixed bug #31479 (Fixed crash in chunk_split(), when chunklen > strlen). (Ilia) - Fixed bug #31465 (False warning in unpack() when working with *). (Ilia) diff --git a/main/fopen_wrappers.c b/main/fopen_wrappers.c index d29a33b5b7..d316f4ef11 100644 --- a/main/fopen_wrappers.c +++ b/main/fopen_wrappers.c @@ -105,24 +105,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)); }