diff options
| author | Christoph M. Becker <cmbecker69@gmx.de> | 2018-08-22 15:40:26 +0200 |
|---|---|---|
| committer | Christoph M. Becker <cmbecker69@gmx.de> | 2018-08-22 15:40:26 +0200 |
| commit | 20c4923d5cef2ac8932426198887cdb4abe6f845 (patch) | |
| tree | ca8af1dbdded2f6a935f8d42420c2a7685e355ca | |
| parent | 4b5d26596af5c7a6281819da6b870c97d06692a2 (diff) | |
| parent | 3278b3347cd020d86b1f8cc1d0829eb55bbc2be9 (diff) | |
| download | php-git-20c4923d5cef2ac8932426198887cdb4abe6f845.tar.gz | |
Merge branch 'PHP-7.3'
* PHP-7.3:
Fix #68825: Exception in DirectoryIterator::getLinkTarget()
| -rw-r--r-- | ext/spl/spl_directory.c | 3 | ||||
| -rw-r--r-- | ext/spl/tests/bug68825.phpt | 25 |
2 files changed, 28 insertions, 0 deletions
diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index e37bd87d87..09f7093ace 100644 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -1243,6 +1243,9 @@ SPL_METHOD(SplFileInfo, getLinkTarget) zend_replace_error_handling(EH_THROW, spl_ce_RuntimeException, &error_handling); + if (intern->file_name == NULL) { + spl_filesystem_object_get_file_name(intern); + } #if defined(PHP_WIN32) || HAVE_SYMLINK if (intern->file_name == NULL) { php_error_docref(NULL, E_WARNING, "Empty filename"); diff --git a/ext/spl/tests/bug68825.phpt b/ext/spl/tests/bug68825.phpt new file mode 100644 index 0000000000..b1ed5fb60f --- /dev/null +++ b/ext/spl/tests/bug68825.phpt @@ -0,0 +1,25 @@ +--TEST-- +Bug #68825 (Exception in DirectoryIterator::getLinkTarget()) +--FILE-- +<?php +$dir = __DIR__ . '/bug68825'; +mkdir($dir); +symlink(__FILE__, "$dir/foo"); + +$di = new \DirectoryIterator($dir); +foreach ($di as $entry) { + if ('foo' === $entry->getFilename()) { + var_dump($entry->getLinkTarget()); + } +} +?> +===DONE=== +--EXPECTF-- +string(%d) "%s%eext%espl%etests%ebug68825.php" +===DONE=== +--CLEAN-- +<?php +$dir = __DIR__ . '/bug68825'; +unlink("$dir/foo"); +rmdir($dir); +?> |
