diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2020-10-19 10:34:17 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2020-10-19 10:35:22 +0200 |
commit | 61b33e900cd92b89b02d7c6f9d85aa5888240de5 (patch) | |
tree | 554a7aa7ec34970d89a64c4d007bc28465120e7f | |
parent | d0c2db4179d0b02ea9c6097752167ad61ee00651 (diff) | |
download | php-git-61b33e900cd92b89b02d7c6f9d85aa5888240de5.tar.gz |
Add additional initialization checks to SplFileInfo
-rw-r--r-- | ext/spl/spl_directory.c | 15 | ||||
-rw-r--r-- | ext/spl/tests/bug79987.phpt | 19 |
2 files changed, 34 insertions, 0 deletions
diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index a67b9efb03..3d0dae2435 100644 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -899,6 +899,11 @@ PHP_METHOD(SplFileInfo, getFilename) RETURN_THROWS(); } + if (!intern->file_name) { + zend_throw_error(NULL, "Object not initialized"); + RETURN_THROWS(); + } + spl_filesystem_object_get_path(intern, &path_len); if (path_len && path_len < intern->file_name_len) { @@ -937,6 +942,11 @@ PHP_METHOD(SplFileInfo, getExtension) RETURN_THROWS(); } + if (!intern->file_name) { + zend_throw_error(NULL, "Object not initialized"); + RETURN_THROWS(); + } + spl_filesystem_object_get_path(intern, &path_len); if (path_len && path_len < intern->file_name_len) { @@ -1000,6 +1010,11 @@ PHP_METHOD(SplFileInfo, getBasename) RETURN_THROWS(); } + if (!intern->file_name) { + zend_throw_error(NULL, "Object not initialized"); + RETURN_THROWS(); + } + spl_filesystem_object_get_path(intern, &path_len); if (path_len && path_len < intern->file_name_len) { diff --git a/ext/spl/tests/bug79987.phpt b/ext/spl/tests/bug79987.phpt index bda5841ee7..b6ea8e2a9c 100644 --- a/ext/spl/tests/bug79987.phpt +++ b/ext/spl/tests/bug79987.phpt @@ -15,5 +15,24 @@ try { } catch (Throwable $e) { echo $e->getMessage() . "\n"; } +try { + var_dump($x->getFilename()); +} catch (Throwable $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($x->getExtension()); +} catch (Throwable $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($x->getBasename()); +} catch (Throwable $e) { + echo $e->getMessage() . "\n"; +} +?> --EXPECT-- Object not initialized +Object not initialized +Object not initialized +Object not initialized |