Skip to content

Commit 61b33e9

Browse files
committed
Add additional initialization checks to SplFileInfo
1 parent d0c2db4 commit 61b33e9

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

ext/spl/spl_directory.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -899,6 +899,11 @@ PHP_METHOD(SplFileInfo, getFilename)
899899
RETURN_THROWS();
900900
}
901901

902+
if (!intern->file_name) {
903+
zend_throw_error(NULL, "Object not initialized");
904+
RETURN_THROWS();
905+
}
906+
902907
spl_filesystem_object_get_path(intern, &path_len);
903908

904909
if (path_len && path_len < intern->file_name_len) {
@@ -937,6 +942,11 @@ PHP_METHOD(SplFileInfo, getExtension)
937942
RETURN_THROWS();
938943
}
939944

945+
if (!intern->file_name) {
946+
zend_throw_error(NULL, "Object not initialized");
947+
RETURN_THROWS();
948+
}
949+
940950
spl_filesystem_object_get_path(intern, &path_len);
941951

942952
if (path_len && path_len < intern->file_name_len) {
@@ -1000,6 +1010,11 @@ PHP_METHOD(SplFileInfo, getBasename)
10001010
RETURN_THROWS();
10011011
}
10021012

1013+
if (!intern->file_name) {
1014+
zend_throw_error(NULL, "Object not initialized");
1015+
RETURN_THROWS();
1016+
}
1017+
10031018
spl_filesystem_object_get_path(intern, &path_len);
10041019

10051020
if (path_len && path_len < intern->file_name_len) {

ext/spl/tests/bug79987.phpt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,24 @@ try {
1515
} catch (Throwable $e) {
1616
echo $e->getMessage() . "\n";
1717
}
18+
try {
19+
var_dump($x->getFilename());
20+
} catch (Throwable $e) {
21+
echo $e->getMessage() . "\n";
22+
}
23+
try {
24+
var_dump($x->getExtension());
25+
} catch (Throwable $e) {
26+
echo $e->getMessage() . "\n";
27+
}
28+
try {
29+
var_dump($x->getBasename());
30+
} catch (Throwable $e) {
31+
echo $e->getMessage() . "\n";
32+
}
33+
?>
1834
--EXPECT--
1935
Object not initialized
36+
Object not initialized
37+
Object not initialized
38+
Object not initialized

0 commit comments

Comments
 (0)