diff --git a/main/fopen_wrappers.c b/main/fopen_wrappers.c index eeaba65390c..48e567b9d2f 100644 --- a/main/fopen_wrappers.c +++ b/main/fopen_wrappers.c @@ -256,7 +256,7 @@ PHPAPI FILE *php_fopen_wrapper(char *path, char *mode, int options, int *issock, if (options & USE_PATH && PG(include_path) != NULL) { return php_fopen_with_path(path, mode, PG(include_path), opened_path); } else { - if (options & ENFORCE_SAFE_MODE && PG(safe_mode) && (!php_checkuid(path, mode, CHECKUID_DISALLOW_FILE_NOT_EXISTS))) { + if (options & ENFORCE_SAFE_MODE && PG(safe_mode) && (!php_checkuid(path, mode, CHECKUID_CHECK_MODE_PARAM))) { return NULL; } return php_fopen_and_set_opened_path(path, mode, opened_path); @@ -373,14 +373,14 @@ PHPAPI FILE *php_fopen_with_path(char *filename, char *mode, char *path, char ** /* Absolute & relative path open */ if ((*filename == '.') || (IS_ABSOLUTE_PATH(filename, filename_length))) { - if (PG(safe_mode) && (!php_checkuid(filename, mode, CHECKUID_DISALLOW_FILE_NOT_EXISTS))) { + if (PG(safe_mode) && (!php_checkuid(filename, mode, CHECKUID_CHECK_MODE_PARAM))) { return NULL; } return php_fopen_and_set_opened_path(filename, mode, opened_path); } if (!path || (path && !*path)) { - if (PG(safe_mode) && (!php_checkuid(filename, mode, CHECKUID_DISALLOW_FILE_NOT_EXISTS))) { + if (PG(safe_mode) && (!php_checkuid(filename, mode, CHECKUID_CHECK_MODE_PARAM))) { return NULL; } return php_fopen_and_set_opened_path(filename, mode, opened_path); @@ -401,7 +401,7 @@ PHPAPI FILE *php_fopen_with_path(char *filename, char *mode, char *path, char ** } snprintf(trypath, MAXPATHLEN, "%s/%s", ptr, filename); if (PG(safe_mode)) { - if (V_STAT(trypath, &sb) == 0 && (!php_checkuid(trypath, mode, CHECKUID_DISALLOW_FILE_NOT_EXISTS))) { + if (V_STAT(trypath, &sb) == 0 && (!php_checkuid(trypath, mode, CHECKUID_CHECK_MODE_PARAM))) { efree(pathbuf); return NULL; } @@ -464,7 +464,7 @@ static FILE *php_fopen_url_wrapper(const char *path, char *mode, int options, in if (options & USE_PATH) { fp = php_fopen_with_path((char *) path, mode, PG(include_path), opened_path); } else { - if (options & ENFORCE_SAFE_MODE && PG(safe_mode) && (!php_checkuid(path, mode, CHECKUID_DISALLOW_FILE_NOT_EXISTS))) { + if (options & ENFORCE_SAFE_MODE && PG(safe_mode) && (!php_checkuid(path, mode, CHECKUID_CHECK_MODE_PARAM))) { fp = NULL; } else { fp = php_fopen_and_set_opened_path(path, mode, opened_path); diff --git a/main/safe_mode.h b/main/safe_mode.h index d34f7dc9119..9f012689f4b 100644 --- a/main/safe_mode.h +++ b/main/safe_mode.h @@ -6,6 +6,7 @@ #define CHECKUID_ALLOW_FILE_NOT_EXISTS 1 #define CHECKUID_CHECK_FILE_AND_DIR 2 #define CHECKUID_ALLOW_ONLY_DIR 3 +#define CHECKUID_CHECK_MODE_PARAM 4 extern PHPAPI int php_checkuid(const char *filename, char *fopen_mode, int mode); extern PHPAPI char *php_get_current_user(void);