lbarnaud Mon Aug 11 15:33:14 2008 UTC Modified files: (Branch: PHP_5_2) /php-src/main fopen_wrappers.c fopen_wrappers.h Log: MFH: Missing files in previous commit (Check the relevant path for open_basedir in symlink()) http://cvs.php.net/viewvc.cgi/php-src/main/fopen_wrappers.c?r1=1.175.2.3.2.19&r2=1.175.2.3.2.20&diff_format=u Index: php-src/main/fopen_wrappers.c diff -u php-src/main/fopen_wrappers.c:1.175.2.3.2.19 php-src/main/fopen_wrappers.c:1.175.2.3.2.20 --- php-src/main/fopen_wrappers.c:1.175.2.3.2.19 Tue Jan 29 14:23:19 2008 +++ php-src/main/fopen_wrappers.c Mon Aug 11 15:33:14 2008 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: fopen_wrappers.c,v 1.175.2.3.2.19 2008/01/29 14:23:19 dmitry Exp $ */ +/* $Id: fopen_wrappers.c,v 1.175.2.3.2.20 2008/08/11 15:33:14 lbarnaud Exp $ */ /* {{{ includes */ @@ -601,6 +601,14 @@ */ PHPAPI char *expand_filepath(const char *filepath, char *real_path TSRMLS_DC) { + return expand_filepath_ex(filepath, real_path, NULL, 0 TSRMLS_CC); +} +/* }}} */ + +/* {{{ expand_filepath_ex + */ +PHPAPI char *expand_filepath_ex(const char *filepath, char *real_path, const char *relative_to, size_t relative_to_len TSRMLS_DC) +{ cwd_state new_state; char cwd[MAXPATHLEN]; int copy_len; @@ -611,7 +619,16 @@ cwd[0] = '\0'; } else { const char *iam = SG(request_info).path_translated; - char *result = VCWD_GETCWD(cwd, MAXPATHLEN); + const char *result; + if (relative_to) { + if (relative_to_len > MAXPATHLEN-1U) { + return NULL; + } + result = relative_to; + memcpy(cwd, relative_to, relative_to_len+1U); + } else { + result = VCWD_GETCWD(cwd, MAXPATHLEN); + } if (!result && (iam != filepath)) { int fdtest = -1; http://cvs.php.net/viewvc.cgi/php-src/main/fopen_wrappers.h?r1=1.44.2.1.2.4&r2=1.44.2.1.2.5&diff_format=u Index: php-src/main/fopen_wrappers.h diff -u php-src/main/fopen_wrappers.h:1.44.2.1.2.4 php-src/main/fopen_wrappers.h:1.44.2.1.2.5 --- php-src/main/fopen_wrappers.h:1.44.2.1.2.4 Mon Dec 31 07:20:14 2007 +++ php-src/main/fopen_wrappers.h Mon Aug 11 15:33:14 2008 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: fopen_wrappers.h,v 1.44.2.1.2.4 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: fopen_wrappers.h,v 1.44.2.1.2.5 2008/08/11 15:33:14 lbarnaud Exp $ */ #ifndef FOPEN_WRAPPERS_H #define FOPEN_WRAPPERS_H @@ -26,6 +26,7 @@ PHPAPI int php_fopen_primary_script(zend_file_handle *file_handle TSRMLS_DC); PHPAPI char *expand_filepath(const char *filepath, char *real_path TSRMLS_DC); +PHPAPI char *expand_filepath_ex(const char *filepath, char *real_path, const char *relative_to, size_t relative_to_len TSRMLS_DC); PHPAPI int php_check_open_basedir(const char *path TSRMLS_DC); PHPAPI int php_check_open_basedir_ex(const char *path, int warn TSRMLS_DC);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php