cvs: php4 /ext/session session.c
| From: | Stanislav Malyshev | Date: | Tue, 05 Sep 2000 18:41:47 +0000 |
| Subject: | cvs: php4 /ext/session session.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-1587@lists.php.net to get a copy of this message | ||
stas Tue Sep 5 11:41:47 2000 EDT
Modified files:
/php4/ext/session session.c
Log:
Try to fix session INI variables handling
This should also fix #6538.
# This code gets really hairy, I do not like it,
# but it's the only working thing I could come with.
# If original creator reviews and cleans it up, it'd be great
Index: php4/ext/session/session.c
diff -u php4/ext/session/session.c:1.159 php4/ext/session/session.c:1.160
--- php4/ext/session/session.c:1.159 Fri Sep 1 08:56:26 2000
+++ php4/ext/session/session.c Tue Sep 5 11:41:46 2000
@@ -95,23 +95,45 @@
}
+static PHP_INI_MH(OnUpdateStringCopy)
+{
+ char **p;
+#ifndef ZTS
+ char *base = (char *) mh_arg2;
+#else
+ char *base;
+
+ base = (char *) ts_resource(*((int *) mh_arg2));
+#endif
+
+ p = (char **) (base+(size_t) mh_arg1);
+
+ if(*p) {
+ STR_FREE(*p);
+ }
+ if(stage != PHP_INI_STAGE_DEACTIVATE) {
+ *p = estrdup(new_value);
+ }
+ return SUCCESS;
+}
+
PHP_INI_BEGIN()
- STD_PHP_INI_ENTRY("session.save_path", "/tmp", PHP_INI_ALL,
OnUpdateString, 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)
+ STD_PHP_INI_ENTRY("session.save_path", "/tmp", PHP_INI_ALL,
OnUpdateStringCopy, save_path, php_ps_globals, ps_globals)
+ STD_PHP_INI_ENTRY("session.name", "PHPSESSID", PHP_INI_ALL,
OnUpdateStringCopy, 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)
STD_PHP_INI_ENTRY("session.gc_probability", "1", PHP_INI_ALL,
OnUpdateInt, gc_probability, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.gc_maxlifetime", "1440", PHP_INI_ALL,
OnUpdateInt, gc_maxlifetime, php_ps_globals, ps_globals)
PHP_INI_ENTRY("session.serialize_handler", "php", PHP_INI_ALL,
OnUpdateSerializer)
STD_PHP_INI_ENTRY("session.cookie_lifetime", "0", PHP_INI_ALL,
OnUpdateInt, cookie_lifetime, php_ps_globals, ps_globals)
- STD_PHP_INI_ENTRY("session.cookie_path", "/", PHP_INI_ALL,
OnUpdateString, cookie_path, php_ps_globals, ps_globals)
- STD_PHP_INI_ENTRY("session.cookie_domain", "", PHP_INI_ALL,
OnUpdateString, cookie_domain, php_ps_globals, ps_globals)
+ STD_PHP_INI_ENTRY("session.cookie_path", "/", PHP_INI_ALL,
OnUpdateStringCopy, cookie_path, php_ps_globals, ps_globals)
+ STD_PHP_INI_ENTRY("session.cookie_domain", "", PHP_INI_ALL,
OnUpdateStringCopy, cookie_domain, php_ps_globals, ps_globals)
STD_PHP_INI_BOOLEAN("session.use_cookies", "1", PHP_INI_ALL,
OnUpdateBool, use_cookies, php_ps_globals, ps_globals)
- STD_PHP_INI_ENTRY("session.referer_check", "", PHP_INI_ALL,
OnUpdateString, extern_referer_chk, php_ps_globals, ps_globals)
- STD_PHP_INI_ENTRY("session.entropy_file", "", PHP_INI_ALL,
OnUpdateString, entropy_file, php_ps_globals, ps_globals)
+ STD_PHP_INI_ENTRY("session.referer_check", "", PHP_INI_ALL,
OnUpdateStringCopy, extern_referer_chk, php_ps_globals, ps_globals)
+ STD_PHP_INI_ENTRY("session.entropy_file", "", PHP_INI_ALL,
OnUpdateStringCopy, entropy_file, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.entropy_length", "0", PHP_INI_ALL,
OnUpdateInt, entropy_length, php_ps_globals, ps_globals)
- STD_PHP_INI_ENTRY("session.cache_limiter", "nocache", PHP_INI_ALL,
OnUpdateString, cache_limiter, php_ps_globals, ps_globals)
+ STD_PHP_INI_ENTRY("session.cache_limiter", "nocache", PHP_INI_ALL,
OnUpdateStringCopy, cache_limiter, php_ps_globals, ps_globals)
STD_PHP_INI_ENTRY("session.cache_expire", "180", PHP_INI_ALL,
OnUpdateInt, cache_expire, php_ps_globals, ps_globals)
/* Commented out until future discussion */
/* PHP_INI_ENTRY("session.encode_sources", "globals,track", PHP_INI_ALL, NULL)
*/
@@ -1403,31 +1425,26 @@
{
zend_hash_init(&PS(vars), 0, NULL, NULL, 0);
PS(define_sid) = 0;
- PS(save_path) = estrdup(INI_STR("session.save_path"));
- PS(session_name) = estrdup(INI_STR("session.name"));
- PS(entropy_file) = estrdup(INI_STR("session.entropy_file"));
- PS(extern_referer_chk) = estrdup(INI_STR("session.referer_check"));
PS(id) = NULL;
- PS(cookie_path) = estrdup(INI_STR("session.cookie_path"));
- PS(cookie_domain) = estrdup(INI_STR("session.cookie_domain"));
- PS(cache_limiter) = estrdup(INI_STR("session.cache_limiter"));
PS(nr_open_sessions) = 0;
PS(mod_data) = NULL;
}
+#define FREE_NULL(x) efree(x); (x) = NULL;
+
static void php_rshutdown_session_globals(PSLS_D)
{
if (PS(mod_data))
PS(mod)->close(&PS(mod_data));
if (PS(id))
efree(PS(id));
- efree(PS(entropy_file));
- efree(PS(extern_referer_chk));
- efree(PS(save_path));
- efree(PS(session_name));
- efree(PS(cache_limiter));
- efree(PS(cookie_path));
- efree(PS(cookie_domain));
+ FREE_NULL(PS(entropy_file));
+ FREE_NULL(PS(extern_referer_chk));
+ FREE_NULL(PS(save_path));
+ FREE_NULL(PS(session_name));
+ FREE_NULL(PS(cache_limiter));
+ FREE_NULL(PS(cookie_path));
+ FREE_NULL(PS(cookie_domain));
zend_hash_destroy(&PS(vars));
}