rasmus          Sat May 21 14:54:58 2005 EDT

  Modified files:              (Branch: PHP_5_0)
    /php-src    NEWS 
    /php-src/ext/session        session.c 
  Log:
  MFH Fixed bug 33072 - safemode/open_basedir check for runtime save_path
  change
  
  
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1760.2.392&r2=1.1760.2.393&ty=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1760.2.392 php-src/NEWS:1.1760.2.393
--- php-src/NEWS:1.1760.2.392   Sat May 21 04:54:50 2005
+++ php-src/NEWS        Sat May 21 14:54:57 2005
@@ -14,6 +14,8 @@
 - Fixed bug #33090 (mysqli_prepare doesn't return an error). (Georg)
 - Fixed bug #33076 (str_ireplace() incorrectly counts result string length 
   and may cause segfault). (Tony)
+- Fixed bug #33072 (Add a safemode/open_basedir check for runtime save_path 
+  change) (Rasmus)
 - Fixed bug #33059 (crash when moving xml attribute set in dtd). (Ilia)
 - Fixed bug #33057 (Don't send extraneous entity-headers on a 304 as per
   RFC 2616 section 10.3.5) (Rasmus, Choitel)
http://cvs.php.net/diff.php/php-src/ext/session/session.c?r1=1.391.2.12&r2=1.391.2.13&ty=u
Index: php-src/ext/session/session.c
diff -u php-src/ext/session/session.c:1.391.2.12 
php-src/ext/session/session.c:1.391.2.13
--- php-src/ext/session/session.c:1.391.2.12    Fri May 20 06:28:16 2005
+++ php-src/ext/session/session.c       Sat May 21 14:54:57 2005
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: session.c,v 1.391.2.12 2005/05/20 10:28:16 tony2001 Exp $ */
+/* $Id: session.c,v 1.391.2.13 2005/05/21 18:54:57 rasmus Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -131,13 +131,26 @@
        return SUCCESS;
 }
 
+static PHP_INI_MH(OnUpdateSaveDir) {
+       /* Only do the safemode/open_basedir check at runtime */
+       if(stage == PHP_INI_STAGE_RUNTIME) {
+               if (PG(safe_mode) && (!php_checkuid(new_value, NULL, 
CHECKUID_ALLOW_ONLY_DIR))) {
+                       return FAILURE;
+               }
+
+               if (php_check_open_basedir(new_value TSRMLS_CC)) {
+                       return FAILURE;
+               }
+       }
+       OnUpdateString(entry, new_value, new_value_length, mh_arg1, mh_arg2, 
mh_arg3, stage TSRMLS_CC);
+}
 
 /* {{{ PHP_INI
  */
 PHP_INI_BEGIN()
        STD_PHP_INI_BOOLEAN("session.bug_compat_42",    "1",         
PHP_INI_ALL, OnUpdateBool,   bug_compat,         php_ps_globals,    ps_globals)
        STD_PHP_INI_BOOLEAN("session.bug_compat_warn",  "1",         
PHP_INI_ALL, OnUpdateBool,   bug_compat_warn,    php_ps_globals,    ps_globals)
-       STD_PHP_INI_ENTRY("session.save_path",          "",          
PHP_INI_ALL, OnUpdateString, save_path,          php_ps_globals,    ps_globals)
+       STD_PHP_INI_ENTRY("session.save_path",          "",          
PHP_INI_ALL, OnUpdateSaveDir,save_path,          php_ps_globals,    ps_globals)
        STD_PHP_INI_ENTRY("session.name",               "PHPSESSID", 
PHP_INI_ALL, OnUpdateString, session_name,       php_ps_globals,    ps_globals)
        PHP_INI_ENTRY("session.save_handler",           "files",     
PHP_INI_ALL, OnUpdateSaveHandler)
        STD_PHP_INI_BOOLEAN("session.auto_start",       "0",         
PHP_INI_ALL, OnUpdateBool,   auto_start,         php_ps_globals,    ps_globals)

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to