ab5602 Mon Oct 8 02:49:27 2007 UTC Modified files: (Branch: PHP_5_2) /php-src/main fopen_wrappers.c Log: Fix for bug 41822 and 41899. expand_filepath() will now return a relative path under the specific situation where getcwd() returns NULL and the file is still readable. As far as I have been able to tell, this fix only applies to the Solaris OS where files in directories with (--x) cannot getcwd(). http://cvs.php.net/viewvc.cgi/php-src/main/fopen_wrappers.c?r1=1.175.2.3.2.13&r2=1.175.2.3.2.14&diff_format=u Index: php-src/main/fopen_wrappers.c diff -u php-src/main/fopen_wrappers.c:1.175.2.3.2.13 php-src/main/fopen_wrappers.c:1.175.2.3.2.14 --- php-src/main/fopen_wrappers.c:1.175.2.3.2.13 Tue Jul 10 13:21:11 2007 +++ php-src/main/fopen_wrappers.c Mon Oct 8 02:49:26 2007 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: fopen_wrappers.c,v 1.175.2.3.2.13 2007/07/10 13:21:11 dmitry Exp $ */ +/* $Id: fopen_wrappers.c,v 1.175.2.3.2.14 2007/10/08 02:49:26 ab5602 Exp $ */ /* {{{ includes */ @@ -604,18 +604,30 @@ { cwd_state new_state; char cwd[MAXPATHLEN]; - char *result; if (!filepath[0]) { return NULL; } else if (IS_ABSOLUTE_PATH(filepath, strlen(filepath))) { cwd[0] = '\0'; - } else{ - result = VCWD_GETCWD(cwd, MAXPATHLEN); - if (!result) { + } else { + const char *iam = SG(request_info).path_translated; + char *result = VCWD_GETCWD(cwd, MAXPATHLEN); + if (!result && (iam != filepath)) { + int fdtest = -1; + fdtest = VCWD_OPEN(filepath, O_RDONLY); + if (fdtest != -1) { + /* return a relative file path if for any reason + we cannot cannot getcwd() and the requested, + relatively referenced file is accessible */ + int copy_len = strlen(filepath)>MAXPATHLEN-1?MAXPATHLEN-1:strlen(filepath); + real_path = estrndup(filepath, copy_len); + return real_path; + } + } + else { cwd[0] = '\0'; + } } - } new_state.cwd = strdup(cwd); new_state.cwd_length = strlen(cwd);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php