ID: 34415
Comment by: aarondoom at cookiedoom dot com
Reported By: worthbob01 at yahoo dot com
Status: No Feedback
Bug Type: Reproducible crash
Operating System: RHES3
PHP Version: 5CVS-2005-09-09 (snap)
New Comment:
Your function is stuck in a recursive loop, eventually this will seg
fault.
If you wanna see it in action add the following lines to the top of the
function.
static $depth = 0;
echo $depth++;
To fix the problem remove the . "\\" from the tail of
"scandir_recursive($directory.$folderItem."\\");".
Here's a cleaned up function to not display errors and so forth.
function scandir_recursive($directory)
{
$folderContents = array();
$directory = realpath($directory) . DIRECTORY_SEPARATOR;
$folderItems = @scandir($directory);
if (!is_array($folderItems)) return "No access";
foreach ($folderItems as $folderItem) {
if (substr($folderItem, 0, 1) != ".") { // Ignore anything
hidden
if (is_dir($directory . $folderItem .
DIRECTORY_SEPARATOR))
$folderContents[$folderItem] =
scandir_recursive($directory . $folderItem);
else
$folderContents[] = $folderItem;
}
}
return $folderContents;
}
^_^
Previous Comments:
------------------------------------------------------------------------
[2005-09-18 01:00:02] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
------------------------------------------------------------------------
[2005-09-10 23:21:24] [EMAIL PROTECTED]
Thank you for this bug report. To properly diagnose the problem, we
need a backtrace to see what is happening behind the scenes. To
find out how to generate a backtrace, please read
http://bugs.php.net/bugs-generating-backtrace.php
Once you have generated a backtrace, please submit it to this bug
report and change the status back to "Open". Thank you for helping
us make PHP better.
------------------------------------------------------------------------
[2005-09-10 17:04:50] worthbob01 at yahoo dot com
[EMAIL PROTECTED] design]# date; php --version; php sample.php ; date
Sat Sep 10 10:02:20 CDT 2005
PHP 5.1.0-dev (cli) (built: Sep 9 2005 12:59:00)
Copyright (c) 1997-2005 The PHP Group
Zend Engine v2.1.0-dev, Copyright (c) 1998-2005 Zend Technologies
Segmentation fault
Sat Sep 10 10:02:21 CDT 2005
------------------------------------------------------------------------
[2005-09-07 23:43:42] [EMAIL PROTECTED]
Please try using this CVS snapshot:
http://snaps.php.net/php5-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5-win32-latest.zip
------------------------------------------------------------------------
[2005-09-07 23:13:41] worthbob01 at yahoo dot com
Description:
------------
recursive scandir causes seg fault. code example from
http://us2.php.net/scandir User Contributed Notes.
Reproduce code:
---------------
<?php
$afiles = scandir_recursive("/tmp");
function scandir_recursive($directory)
{
$folderContents = array();
$directory = realpath($directory).DIRECTORY_SEPARATOR;
foreach (scandir($directory) as $folderItem) {
if ($folderItem != "." AND $folderItem != "..") {
if (is_dir($directory.$folderItem.DIRECTORY_SEPARATOR)) {
$folderContents[$folderItem] = scandir_recursive(
$directory.$folderItem."\\");
}
else {
$folderContents[] = $folderItem;
}
}
}
return $folderContents;
}
?>
Expected result:
----------------
nothing as there is not output in the sample. just expected it to run
without a seg fault.
Actual result:
--------------
[EMAIL PROTECTED] design]# date;php sample.php;date
Wed Sep 7 16:11:11 CDT 2005
Segmentation fault
Wed Sep 7 16:11:12 CDT 2005
[EMAIL PROTECTED] design]#
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=34415&edit=1