Bug #77263 [Opn->Ver]: Segfault when using 2 RecursiveFilterIterator
Edit report at https://bugs.php.net/bug.php?id=77263&edit=1
ID: 77263
Updated by: cmb@php.net
Reported by: yani at iliev dot me
Summary: Segfault when using 2 RecursiveFilterIterator
-Status: Open
+Status: Verified
Type: Bug
Package: Reproducible crash
Operating System: Any
PHP Version: 7.3.0
-Assigned To:
+Assigned To: dmitry
Block user comment: N
Private report: N
New Comment:
Apparently, this regression has been introduced by commit
40551e0[1]. Dmitry, could you please have a look at this issue?
[1] <http://git.php.net/?p=php-src.git;a=commit;h=40551e0255b3ad773dcc058305fa5a61c6ae7f39>
Previous Comments:
------------------------------------------------------------------------
[2018-12-07 16:48:43] yani at iliev dot me
PHP Version should be 7.3.0
------------------------------------------------------------------------
[2018-12-07 16:34:18] yani at iliev dot me
Fixed a typo in the title
------------------------------------------------------------------------
[2018-12-07 16:03:10] yani at iliev dot me
Description:
------------
When two RecursiveFilterIterator are added to RecursiveDirectoryIterator it results in a segfault.
The same code works in PHP 7.2.x and below
Test script:
---------------
<?php
mkdir("/tmp/dir");
mkdir("/tmp/dir/subdir");
touch("/tmp/dir/file1");
touch("/tmp/dir/subdir/file2");
class Filter1 extends RecursiveFilterIterator {
public function accept() { return $this->getInnerIterator()->getSubPathname() !=
''; }
}
class Filter2 extends RecursiveFilterIterator {
public function accept() { return $this->getInnerIterator()->getSubPathname() != '
'; }
}
$iterator = new RecursiveDirectoryIterator( '/tmp', FilesystemIterator::SKIP_DOTS );
$iterator = new Filter1( $iterator );
$iterator = new Filter2( $iterator );
$iterator = new RecursiveIteratorIterator( $iterator, RecursiveIteratorIterator::LEAVES_ONLY,
RecursiveIteratorIterator::CATCH_GET_CHILD );
foreach ( $iterator as $item ) {
echo $iterator->getSubPathName() . PHP_EOL;
}
Expected result:
----------------
dir/file1
dir/subdir/file2
Actual result:
--------------
dir/file1
Process exited with code 139.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=77263&edit=1
Thread (5 messages)