diff --git a/main/fopen_wrappers.c b/main/fopen_wrappers.c index eae53f70024..e09e157c88f 100644 --- a/main/fopen_wrappers.c +++ b/main/fopen_wrappers.c @@ -390,6 +390,7 @@ PHPAPI FILE *php_fopen_with_path(char *filename, char *mode, char *path, char ** char trypath[MAXPATHLEN + 1]; struct stat sb; FILE *fp; + int filename_length; PLS_FETCH(); if (opened_path) { @@ -403,12 +404,10 @@ PHPAPI FILE *php_fopen_with_path(char *filename, char *mode, char *path, char ** } return php_fopen_and_set_opened_path(filename, mode, opened_path); } + + filename_length = strlen(filename); /* Absolute path open - prepend document_root in safe mode */ -#ifdef PHP_WIN32 - if (IS_SLASH(*filename) || (filename[1] == ':')) { -#else - if (IS_SLASH(*filename)) { -#endif + if (IS_ABSOLUTE_PATH(filename, filename_length)) { if (PG(safe_mode) && PG(doc_root)) { snprintf(trypath, MAXPATHLEN, "%s%s", PG(doc_root), filename); if (!php_checkuid(trypath, mode, 0)) {