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

Reply via email to