From: Ilia Alshanetsky Date: Tue, 22 Jul 2003 01:32:21 +0000 (+0000) Subject: MFH: r1.165 safe_mode patch X-Git-Tag: php-4.3.3RC2~71 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9e09a7c02b4e557c6cc7b01a979bd613adfd7449;p=php MFH: r1.165 safe_mode patch --- diff --git a/main/fopen_wrappers.c b/main/fopen_wrappers.c index 647fc18385..759d080bf2 100644 --- a/main/fopen_wrappers.c +++ b/main/fopen_wrappers.c @@ -214,45 +214,44 @@ PHPAPI int php_check_open_basedir_ex(const char *path, int warn TSRMLS_DC) */ PHPAPI int php_check_safe_mode_include_dir(char *path TSRMLS_DC) { - /* Only check when safe_mode or open_basedir is on and safe_mode_include_dir is available */ - if (((PG(open_basedir) && *PG(open_basedir)) || PG(safe_mode)) && - PG(safe_mode_include_dir) && *PG(safe_mode_include_dir)) - { - char *pathbuf; - char *ptr; - char *end; - char resolved_name[MAXPATHLEN]; - - /* Resolve the real path into resolved_name */ - if (expand_filepath(path, resolved_name TSRMLS_CC) == NULL) - return -1; - - pathbuf = estrdup(PG(safe_mode_include_dir)); - - ptr = pathbuf; - - while (ptr && *ptr) { - end = strchr(ptr, DEFAULT_DIR_SEPARATOR); - if (end != NULL) { - *end = '\0'; - end++; - } + if (PG(safe_mode)) { + if (PG(safe_mode_include_dir) && *PG(safe_mode_include_dir)) { + char *pathbuf; + char *ptr; + char *end; + char resolved_name[MAXPATHLEN]; + + /* Resolve the real path into resolved_name */ + if (expand_filepath(path, resolved_name TSRMLS_CC) == NULL) + return -1; + + pathbuf = estrdup(PG(safe_mode_include_dir)); + + ptr = pathbuf; + + while (ptr && *ptr) { + end = strchr(ptr, DEFAULT_DIR_SEPARATOR); + if (end != NULL) { + *end = '\0'; + end++; + } - /* Check the path */ + /* Check the path */ #ifdef PHP_WIN32 - if (strncasecmp(ptr, resolved_name, strlen(ptr)) == 0) + if (strncasecmp(ptr, resolved_name, strlen(ptr)) == 0) #else - if (strncmp(ptr, resolved_name, strlen(ptr)) == 0) + if (strncmp(ptr, resolved_name, strlen(ptr)) == 0) #endif - { - /* File is in the right directory */ - efree(pathbuf); - return 0; - } + { + /* File is in the right directory */ + efree(pathbuf); + return 0; + } - ptr = end; + ptr = end; + } + efree(pathbuf); } - efree(pathbuf); return -1; }