@@ -117,16 +117,29 @@ static PHP_INI_MH(OnUpdateSerializer)
117
117
return SUCCESS ;
118
118
}
119
119
120
+ static PHP_INI_MH (OnUpdateSaveDir ) {
121
+ /* Only do the safemode/open_basedir check at runtime */
122
+ if (stage == PHP_INI_STAGE_RUNTIME ) {
123
+ if (PG (safe_mode ) && (!php_checkuid (new_value , NULL , CHECKUID_ALLOW_ONLY_DIR ))) {
124
+ return FAILURE ;
125
+ }
126
+
127
+ if (php_check_open_basedir (new_value TSRMLS_CC )) {
128
+ return FAILURE ;
129
+ }
130
+ }
131
+ OnUpdateString (entry , new_value , new_value_length , mh_arg1 , mh_arg2 , mh_arg3 , stage TSRMLS_CC );
132
+ }
120
133
121
134
/* {{{ PHP_INI
122
135
*/
123
136
PHP_INI_BEGIN ()
124
137
STD_PHP_INI_BOOLEAN ("session.bug_compat_42" , "1" , PHP_INI_ALL , OnUpdateBool , bug_compat , php_ps_globals , ps_globals )
125
138
STD_PHP_INI_BOOLEAN ("session.bug_compat_warn" , "1" , PHP_INI_ALL , OnUpdateBool , bug_compat_warn , php_ps_globals , ps_globals )
126
139
#ifdef PHP_WIN32
127
- STD_PHP_INI_ENTRY ("session.save_path" , "" , PHP_INI_ALL , OnUpdateString , save_path , php_ps_globals , ps_globals )
140
+ STD_PHP_INI_ENTRY ("session.save_path" , "" , PHP_INI_ALL , OnUpdateSaveDir , save_path , php_ps_globals , ps_globals )
128
141
#else
129
- STD_PHP_INI_ENTRY ("session.save_path" , "/tmp" , PHP_INI_ALL , OnUpdateString , save_path , php_ps_globals , ps_globals )
142
+ STD_PHP_INI_ENTRY ("session.save_path" , "/tmp" , PHP_INI_ALL , OnUpdateSaveDir , save_path , php_ps_globals , ps_globals )
130
143
#endif
131
144
STD_PHP_INI_ENTRY ("session.name" , "PHPSESSID" , PHP_INI_ALL , OnUpdateString , session_name , php_ps_globals , ps_globals )
132
145
PHP_INI_ENTRY ("session.save_handler" , "files" , PHP_INI_ALL , OnUpdateSaveHandler )
0 commit comments