lbarnaud Mon Aug 11 15:32:52 2008 UTC Modified files: /php-src/main fopen_wrappers.c fopen_wrappers.h Log: 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.208&r2=1.209&diff_format=u Index: php-src/main/fopen_wrappers.c diff -u php-src/main/fopen_wrappers.c:1.208 php-src/main/fopen_wrappers.c:1.209 --- php-src/main/fopen_wrappers.c:1.208 Mon Aug 4 07:20:44 2008 +++ php-src/main/fopen_wrappers.c Mon Aug 11 15:32:52 2008 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: fopen_wrappers.c,v 1.208 2008/08/04 07:20:44 dmitry Exp $ */ +/* $Id: fopen_wrappers.c,v 1.209 2008/08/11 15:32:52 lbarnaud Exp $ */ /* {{{ includes */ @@ -695,6 +695,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; @@ -705,7 +713,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.52&r2=1.53&diff_format=u Index: php-src/main/fopen_wrappers.h diff -u php-src/main/fopen_wrappers.h:1.52 php-src/main/fopen_wrappers.h:1.53 --- php-src/main/fopen_wrappers.h:1.52 Wed Mar 5 13:35:02 2008 +++ php-src/main/fopen_wrappers.h Mon Aug 11 15:32:52 2008 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: fopen_wrappers.h,v 1.52 2008/03/05 13:35:02 dmitry Exp $ */ +/* $Id: fopen_wrappers.h,v 1.53 2008/08/11 15:32:52 lbarnaud Exp $ */ #ifndef FOPEN_WRAPPERS_H #define FOPEN_WRAPPERS_H @@ -27,6 +27,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