ID:               24873
 Updated by:       [EMAIL PROTECTED]
 Reported By:      enrik dot berkhan at planb dot de
-Status:           Bogus
+Status:           Closed
 Bug Type:         PHP options/info functions
 Operating System: any
 PHP Version:      4.3.2
 New Comment:

This bug has been fixed in CVS.

In case this was a PHP problem, snapshots of the sources are packaged
every three hours; this change will be in the next snapshot. You can
grab the snapshot at http://snaps.php.net/.
 
In case this was a documentation problem, the fix will show up soon at
http://www.php.net/manual/.

In case this was a PHP.net website problem, the change will show
up on the PHP.net site and on the mirror sites in short time.
 
Thank you for the report, and for helping us make PHP better.

The path resolving logic dealing with addition of / is there for *nix
based systems that always use / as the directory separator.


Previous Comments:
------------------------------------------------------------------------

[2003-07-30 11:21:22] enrik dot berkhan at planb dot de

Then it should be documented not to work. But you're right, just
letting something broken fits into the all over PHP quality ;-)

What about my comment on adding `/' instead of PHP_DIR_SEPARATOR?

------------------------------------------------------------------------

[2003-07-30 11:09:21] [EMAIL PROTECTED]

It's not supposed to work as it's the same as leaving open_basedir
setting out altogether..


------------------------------------------------------------------------

[2003-07-30 10:50:01] enrik dot berkhan at planb dot de

Description:
------------
if you set open_basedir = "/" it doesn't work, as it is internally
expanded to "//" in fopen_wrappers.c.

Suggested patch:

*** fopen_wrappers.c.orig       Sun Feb 23 23:03:54 2003
--- fopen_wrappers.c    Wed Jul 30 17:38:41 2003
***************
*** 131,137 ****
        /* Resolve the real path into resolved_name */
        if ((expand_filepath(path, resolved_name TSRMLS_CC) != NULL) &&
(expand_filepath(local_open_basedir, resolved_basedir TSRMLS_CC) !=
NULL)) {
                /* Handler for basedirs that end with a / */
!               if (basedir[strlen(basedir)-1] == PHP_DIR_SEPARATOR) {
                        resolved_basedir_len =
strlen(resolved_basedir);
                        resolved_basedir[resolved_basedir_len] = '/';
                        resolved_basedir[++resolved_basedir_len] =
'\0';
--- 131,138 ----
        /* Resolve the real path into resolved_name */
        if ((expand_filepath(path, resolved_name TSRMLS_CC) != NULL) &&
(expand_filepath(local_open_basedir, resolved_basedir TSRMLS_CC) !=
NULL)) {
                /* Handler for basedirs that end with a / */
!               if (basedir[strlen(basedir)-1] == PHP_DIR_SEPARATOR &&
!                     resolved_basedir[strlen(resolved_basedir)-1] !=
PHP_DIR_SEPARATOR) {
                        resolved_basedir_len =
strlen(resolved_basedir);
                        resolved_basedir[resolved_basedir_len] = '/';
                        resolved_basedir[++resolved_basedir_len] =
'\0';
***************
*** 139,145 ****
                        resolved_basedir_len =
strlen(resolved_basedir);
                }
                                                                       
        
!               if (path[strlen(path)-1] == PHP_DIR_SEPARATOR) {
                        resolved_name_len = strlen(resolved_name);
                        resolved_name[resolved_name_len] = '/';
                        resolved_name[++resolved_name_len] = '\0';
--- 140,147 ----
                        resolved_basedir_len =
strlen(resolved_basedir);
                }
   
!               if (path[strlen(path)-1] == PHP_DIR_SEPARATOR &&
!                     resolved_name[strlen(resolved_name)-1] !=
PHP_DIR_SEPARATOR) {
                        resolved_name_len =
strlen(resolved_naPHP_DIR_SEPARATORme);
                        resolved_name[resolved_name_len] = '/';
                        resolved_name[++resolved_name_len] = '\0';

BTW, why is a literal `/' added to the names, not PHP_DIR_SEPARATOR?



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=24873&edit=1

Reply via email to