iliaa Mon Jul 21 21:32:01 2003 EDT
Modified files:
/php-src/main fopen_wrappers.c
Log:
Make php_check_safe_mode_include_dir check independent of unrelated
open_basedir directive and make it properly handle undefined/empty
safe_mode_include_dir directive when safe_mode is enabled.
Index: php-src/main/fopen_wrappers.c
diff -u php-src/main/fopen_wrappers.c:1.164 php-src/main/fopen_wrappers.c:1.165
--- php-src/main/fopen_wrappers.c:1.164 Tue Jun 24 10:36:01 2003
+++ php-src/main/fopen_wrappers.c Mon Jul 21 21:32:01 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: fopen_wrappers.c,v 1.164 2003/06/24 14:36:01 iliaa Exp $ */
+/* $Id: fopen_wrappers.c,v 1.165 2003/07/22 01:32:01 iliaa Exp $ */
/* {{{ includes
*/
@@ -213,45 +213,44 @@
*/
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));
+ 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++;
+ }
- 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;
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php