Edit report at http://bugs.php.net/bug.php?id=39863&edit=1
ID: 39863 Updated by: paj...@php.net Reported by: djcapelis at gmail dot com Summary: file_exists() silently truncates after a null byte -Status: Open +Status: Assigned Type: Feature/Change Request Package: *General Issues Operating System: Linux, MacOSX PHP Version: 4.4.4, 5.1.5 -Assigned To: +Assigned To: pajoye Block user comment: N Private report: N New Comment: Fixed in PHP_5_3, will be part of 5.3.4. trunk still needs the fix, it will be done soonish. Previous Comments: ------------------------------------------------------------------------ [2010-11-18 16:22:24] paj...@php.net Automatic comment from SVN on behalf of pajoye Revision: http://svn.php.net/viewvc/?view=revision&revision=305507 Log: - fix #39863, do not accept paths with NULL in them. See http://news.php.net/php.internals/50191, trunk will have the patch later (adding a macro and/or changing (some) APIs. Patch by Rasmus ------------------------------------------------------------------------ [2010-06-05 21:45:27] s...@php.net I've merged the test as ext/standard/tests/file/bug39863.phpt ------------------------------------------------------------------------ [2010-06-05 21:44:50] s...@php.net Automatic comment from SVN on behalf of sixd Revision: http://svn.php.net/viewvc/?view=revision&revision=300213 Log: New test for file_exists (bug #39863). It currently xfail's ------------------------------------------------------------------------ [2010-05-12 13:25:42] vanderaj at owasp dot org I've tested this on CentOS 5.0 with a hand built 5.2.11 and Apple's build of PHP 5.3.1 on MacOS X 10.6.3, and both have this issue. If you don't want to run a phpt, here's some a more readable version of the previous test: <?php $filename = "/etc/passwd" . chr(0). ".ridiculous"; if (file_exists($filename)) { echo "FAIL: The file [" . $filename . "] exists, but clearly shouldn't.\n"; } else { echo "PASS: The file [" . $filename . "] does not exist.\n"; } ?> I've included a PHP test script. It's my first phpt, so please be gentle. ------------------------------------------------------------------------ [2006-12-20 09:47:27] djcapelis at gmail dot com Sorry, testing was originally done using the hardened php patch here: http://www.hardened-php.net/downloads.13.html Without the patch, include_once() is just as vulnerable and silently readily embeds /etc/passwd right into the file. Perhaps it would be a good idea to include that part of the patch into the main PHP distribution and fix the rest of the functions where this is a problem. I just tested and PHP 5.1.5 is also vulnerable to both these issues. (As was a Mac OSX system.) ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/bug.php?id=39863 -- Edit this bug report at http://bugs.php.net/bug.php?id=39863&edit=1