Hi!

I've produced a simple patch for PHP 4.0.6 which enables administrator to
allow scripts access to include dir eg. for some common php scripts, during
safe_mode of course.
Anyway it may produce a bug [dunno why :(] that causes open_basedir to be
turned on automagically when include_path is set.

-- 
email: [[EMAIL PROTECTED]] gsm: +48 606 787423
echo Ecl.Pl Al. NMP 31 Częstochowa http://www.ecl.pl/
//    Ja zacznę programować, a ty dowiedz się, czego chcą
diff -ur main.orig/main.c main/main.c
--- main.orig/main.c    Tue May  8 22:11:46 2001
+++ main/main.c Sun Oct 28 20:21:04 2001
@@ -221,6 +221,7 @@
        PHP_INI_ENTRY("max_execution_time",                     "30",           
PHP_INI_ALL,                    OnUpdateTimeout)
        STD_PHP_INI_ENTRY("open_basedir",                       NULL,           
PHP_INI_SYSTEM,         OnUpdateStringUnempty,  open_basedir,                   
php_core_globals,       core_globals)
        STD_PHP_INI_ENTRY("safe_mode_exec_dir",         "1",            
PHP_INI_SYSTEM,         OnUpdateString,                 safe_mode_exec_dir,            
 php_core_globals,       core_globals)
+       STD_PHP_INI_ENTRY("safe_mode_include_dir",              "1",            
+PHP_INI_SYSTEM,         OnUpdateString,                 safe_mode_include_dir,        
+  php_core_globals,       core_globals)
        STD_PHP_INI_ENTRY("upload_max_filesize",        "2M",           PHP_INI_ALL,   
         OnUpdateInt,                    upload_max_filesize,    php_core_globals,     
  core_globals)
        STD_PHP_INI_ENTRY("file_uploads",                       "1",            
PHP_INI_ALL,            OnUpdateBool,                   file_uploads,                  
 php_core_globals,       core_globals)
        STD_PHP_INI_ENTRY("post_max_size",                      "8M",           
PHP_INI_SYSTEM,         OnUpdateInt,                    post_max_size,                 
 sapi_globals_struct,sapi_globals)
diff -ur main.orig/php_globals.h main/php_globals.h
--- main.orig/php_globals.h     Wed Apr  4 22:46:26 2001
+++ main/php_globals.h  Sun Oct 28 20:20:35 2001
@@ -74,6 +74,7 @@
        char *output_handler;
 
        char *safe_mode_exec_dir;
+       char *safe_mode_include_dir;
 
        long memory_limit;
 
diff -ur main.orig/safe_mode.c main/safe_mode.c
--- main.orig/safe_mode.c       Mon Apr 30 14:43:40 2001
+++ main/safe_mode.c    Sun Oct 28 20:23:27 2001
@@ -69,6 +69,16 @@
                return 1;
        }
                
+       /* 
+       * Added by [EMAIL PROTECTED] - check if the file is in special
+       * directory where all system includes go [like autoprepend directives]
+       */
+
+        if ( !strncasecmp(filename, PG(safe_mode_include_dir),
+                        strlen( PG(safe_mode_include_dir) )) ) {
+                return 1;
+        }
+
        if (mode != CHECKUID_ALLOW_ONLY_DIR) {
                ret = VCWD_STAT(filename, &sb);
                if (ret < 0) {

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to