summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-10-19 10:35:40 +0200
committerNikita Popov <nikita.ppv@gmail.com>2020-10-19 10:35:40 +0200
commitd2ac772510997c58add50c2582f863b5252ef275 (patch)
tree826d723003729453a42c5f97ae9771bc67c85feb
parent3fe95c75ee06d212400a68c5c716f693f4006488 (diff)
parent61b33e900cd92b89b02d7c6f9d85aa5888240de5 (diff)
downloadphp-git-d2ac772510997c58add50c2582f863b5252ef275.tar.gz
Merge branch 'PHP-8.0'
* PHP-8.0: Add additional initialization checks to SplFileInfo Updated to version 2020.3 (2020c)
-rw-r--r--ext/spl/spl_directory.c15
-rw-r--r--ext/spl/tests/bug79987.phpt19
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