Skip to content

Commit

Permalink
Add additional initialization checks to SplFileInfo
Browse files Browse the repository at this point in the history
  • Loading branch information
nikic committed Oct 19, 2020
1 parent d0c2db4 commit 61b33e9
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
15 changes: 15 additions & 0 deletions ext/spl/spl_directory.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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) {
Expand Down
19 changes: 19 additions & 0 deletions ext/spl/tests/bug79987.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 61b33e9

Please sign in to comment.