mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
- When mode is specified the flag is a don't care
This commit is contained in:
parent
1956fb48d2
commit
6da2eaf600
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user