com php-src: Fixed bug #67359 (Segfault in recursiveDirectoryIterator): ext/spl/spl_directory.c ext/spl/spl_iterators.c ext /spl/tests/bug67359.phpt

From: Date: Fri, 18 Jul 2014 23:28:58 +0000
Subject: com php-src: Fixed bug #67359 (Segfault in recursiveDirectoryIterator): ext/spl/spl_directory.c ext/spl/spl_iterators.c ext /spl/tests/bug67359.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-79624@lists.php.net to get a copy of this message
Commit: b5051ff939eb9dbada8ce10fbea8cf37e50b5a36 Author: Xinchen Hui <laruence@php.net> Sun, 1 Jun 2014 19:41:01 +0800 Committer: Stanislav Malyshev <stas@php.net> Fri, 18 Jul 2014 16:28:58 -0700 Parents: e2ba5c7987141fc11706207b0ce24ea2eb6dea87 Branches: PHP-5.3 Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=b5051ff939eb9dbada8ce10fbea8cf37e50b5a36 Log: Fixed bug #67359 (Segfault in recursiveDirectoryIterator) Bugs: https://bugs.php.net/67359 Changed paths: M ext/spl/spl_directory.c M ext/spl/spl_iterators.c A ext/spl/tests/bug67359.phpt Diff: diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index 13af781..149db9a 100644 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -819,6 +819,7 @@ SPL_METHOD(DirectoryIterator, seek) zend_call_method_with_0_params(&this_ptr, Z_OBJCE_P(getThis()), &intern->u.dir.func_rewind, "rewind", &retval); if (retval) { zval_ptr_dtor(&retval); + retval = NULL; } } @@ -828,6 +829,7 @@ SPL_METHOD(DirectoryIterator, seek) if (retval) { valid = zend_is_true(retval); zval_ptr_dtor(&retval); + retval = NULL; } if (!valid) { break; diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c index cd0af8f..d83f450 100644 --- a/ext/spl/spl_iterators.c +++ b/ext/spl/spl_iterators.c @@ -858,6 +858,8 @@ static union _zend_function *spl_recursive_it_get_method(zval **object_ptr, char *object_ptr = zobj; function_handler = Z_OBJ_HT_P(*object_ptr)->get_method(object_ptr, method, method_len TSRMLS_CC); } + } else { + *object_ptr = zobj; } } return function_handler; diff --git a/ext/spl/tests/bug67359.phpt b/ext/spl/tests/bug67359.phpt new file mode 100644 index 0000000..e2e6113 --- /dev/null +++ b/ext/spl/tests/bug67359.phpt @@ -0,0 +1,28 @@ +--TEST-- +Bug #67359 (Segfault in recursiveDirectoryIterator) +--FILE-- +<?php +try +{ + $rdi = new recursiveDirectoryIterator(dirname(__FILE__), FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS); + $it = new recursiveIteratorIterator( $rdi ); + $it->seek(1); + while( $it->valid()) + { + if( $it->isFile() ) + { + $it->current(); + } + + $it->next(); + } + + $it->current(); +} +catch(Exception $e) +{ +} +echo "okey" +?> +--EXPECTF-- +okey

« previous php.cvs (#79624) next »