From 1c542af144180ea9fb130d9f57b6a71054869ae8 Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Thu, 17 Oct 2024 18:35:17 +0200 Subject: [PATCH] Revert undoing of partial spl_filesystem_object initialization We're intentionally not initializing spl_filesystem_object.u.dir.entry, as it will later be initialized, and we don't need to zero the entire buffer anyway. --- ext/spl/spl_directory.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index 3097e95e18a..10134c21e1e 100644 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -187,7 +187,11 @@ static zend_object *spl_filesystem_object_new(zend_class_entry *class_type) { spl_filesystem_object *intern; - intern = ecalloc(1, sizeof(spl_filesystem_object) + zend_object_properties_size(class_type)); + intern = emalloc(sizeof(spl_filesystem_object) + zend_object_properties_size(class_type)); + /* Avoid initializing the entirety of spl_filesystem_object.u.dir.entry. */ + memset(intern, 0, + MAX(XtOffsetOf(spl_filesystem_object, u.dir.entry), + XtOffsetOf(spl_filesystem_object, u.file.escape) + sizeof(int))); /* intern->type = SPL_FS_INFO; done by set 0 */ intern->file_class = spl_ce_SplFileObject; intern->info_class = spl_ce_SplFileInfo;