ID:               41655
 Updated by:       [EMAIL PROTECTED]
 Reported By:      dr at peytz dot dk
-Status:           Open
+Status:           Assigned
 Bug Type:         Safe Mode/open_basedir
 Operating System: Linux
 PHP Version:      5.2.3
 Assigned To:      iliaa


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

[2007-09-18 20:36:58] [EMAIL PROTECTED]

Please, you can't break BC at this point. My example works before and
must work now.

/home/pierre/cvs/php52/ext/*/tests/../../../../../*

has nothing to do with my example except that you add relative paths
later. It is simply another case that should fail because of
open_basedir.

My example introduces a huge BC break in symfony, to list only one
widely used "app". Back to open, if you don't want to fix it yourself,
please let me know, I will have to do it myself.

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

[2007-09-18 19:08:04] [EMAIL PROTECTED]

This is unavoidable since you don't want things like:

/home/pierre/cvs/php52/ext/*/tests/../../../../../*

to be let through.

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

[2007-09-17 07:51:11] [EMAIL PROTECTED]

The fix for this bug introduced a regression.

Using:

$a =glob("/home/pierre/cvs/php52/ext/*/tests/*");'

Where:

open_basedir = /home/pierre/cvs/php52

glob fails to access this path:

Warning: glob(): Unable to access /home/pierre/cvs/php52/ext/*/tests in
Command line code on line 1





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

[2007-06-12 12:57:50] [EMAIL PROTECTED]

This bug has been fixed in CVS.

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/.
 
Thank you for the report, and for helping us make PHP better.



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

[2007-06-11 17:14:02] dr at peytz dot dk

Description:
------------
file_exists() etc. does not allow checking the existence of files
outside the directories specified in open_basedir.

This can be circumvented using glob(). glob() does check open_basedir,
but its return type still reveals whether files exist outside
open_basedir. The existence of a file can be checked using
!is_array(glob($filename)).


Reproduce code:
---------------
var_dump(glob('/etc/hosts'));
var_dump(glob('/etc/does-not-exist'));


Expected result:
----------------
bool(false)
bool(false)

or

array(0) {
}
array(0) {
}


Actual result:
--------------
bool(false)
array(0) {
}


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


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

Reply via email to