Commit 732243fb662 for php.net
commit 732243fb662b17daed566eb7b72ee79900158329
Author: Gina Peter Banyard <girgias@php.net>
Date: Thu Jul 17 22:40:05 2025 +0100
ext/standard: Refactor php_stat() API
diff --git a/ext/standard/filestat.c b/ext/standard/filestat.c
index de4fcd82a62..96669a80934 100644
--- a/ext/standard/filestat.c
+++ b/ext/standard/filestat.c
@@ -730,14 +730,12 @@ PHPAPI void php_stat(zend_string *filename, int type, zval *return_value)
const char *local = NULL;
php_stream_wrapper *wrapper = NULL;
+ ZEND_ASSERT(!zend_str_has_nul_byte(filename));
+ /* Quick check for empty file paths */
+ if (!ZSTR_LEN(filename)) {
+ RETURN_FALSE;
+ }
if (IS_ACCESS_CHECK(type)) {
- if (!ZSTR_LEN(filename) || zend_str_has_nul_byte(filename)) {
- if (ZSTR_LEN(filename) && !IS_EXISTS_CHECK(type)) {
- php_error_docref(NULL, E_WARNING, "Filename contains null byte");
- }
- RETURN_FALSE;
- }
-
if ((wrapper = php_stream_locate_url_wrapper(ZSTR_VAL(filename), &local, 0)) == &php_plain_files_wrapper
&& php_check_open_basedir(local)) {
RETURN_FALSE;
@@ -799,13 +797,6 @@ PHPAPI void php_stat(zend_string *filename, int type, zval *return_value)
}
if (!wrapper) {
- if (!ZSTR_LEN(filename) || zend_str_has_nul_byte(filename)) {
- if (ZSTR_LEN(filename) && !IS_EXISTS_CHECK(type)) {
- php_error_docref(NULL, E_WARNING, "Filename contains null byte");
- }
- RETURN_FALSE;
- }
-
if ((wrapper = php_stream_locate_url_wrapper(ZSTR_VAL(filename), &local, 0)) == &php_plain_files_wrapper
&& php_check_open_basedir(local)) {
RETURN_FALSE;