summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfoobar <sniper@php.net>2003-08-26 02:03:41 +0000
committerfoobar <sniper@php.net>2003-08-26 02:03:41 +0000
commit625600af303a67178f6836a9572f1eafea301f27 (patch)
tree511de914023f3dbc3841694d7b175c5a6b79a9f5
parente01eddf01d592fb80eff8d22364a7c7b6b16cbb2 (diff)
downloadphp-git-625600af303a67178f6836a9572f1eafea301f27.tar.gz
- Prevent crash if non-existing save/serializer handler is tried to be used
- Added the registered serializers information to MINFO.
-rw-r--r--ext/session/session.c54
1 files changed, 31 insertions, 23 deletions
diff --git a/ext/session/session.c b/ext/session/session.c
index 203e1eef9d..277a84e88b 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -92,17 +92,11 @@ static PHP_INI_MH(OnUpdateSaveHandler)
return FAILURE;
}
PS(mod) = _php_find_ps_module(new_value TSRMLS_CC);
-/*
- * Following lines are commented out to prevent bogus error message at
- * start up. i.e. Save handler modules are not initilzied before Session
- * module.
- */
-#if 0
- if(!PS(mod)) {
+ if (PG(modules_activated) && !PS(mod)) {
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Cannot find save handler %s", new_value);
}
-#endif
+
return SUCCESS;
}
@@ -113,17 +107,11 @@ static PHP_INI_MH(OnUpdateSerializer)
return FAILURE;
}
PS(serializer) = _php_find_ps_serializer(new_value TSRMLS_CC);
-/*
- * Following lines are commented out to prevent bogus error message at
- * start up. i.e. Serializer modules are not initilzied before Session
- * module.
- */
-#if 0
- if(!PS(serializer)) {
+ if (PG(modules_activated) && !PS(serializer)) {
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Cannot find serialization handler %s", new_value);
}
-#endif
+
return SUCCESS;
}
@@ -1749,26 +1737,46 @@ PHP_MSHUTDOWN_FUNCTION(session)
PHP_MINFO_FUNCTION(session)
{
ps_module **mod;
- smart_str handlers = {0};
+ ps_serializer *ser;
+ smart_str save_handlers = {0};
+ smart_str ser_handlers = {0};
int i;
+ /* Get save handlers */
for (i = 0, mod = ps_modules; i < MAX_MODULES; i++, mod++) {
if (*mod && (*mod)->s_name) {
- smart_str_appends(&handlers, (*mod)->s_name);
- smart_str_appendc(&handlers, ' ');
+ smart_str_appends(&save_handlers, (*mod)->s_name);
+ smart_str_appendc(&save_handlers, ' ');
+ }
+ }
+
+ /* Get serializer handlers */
+ for (i = 0, ser = ps_serializers; i < MAX_SERIALIZERS; i++, ser++) {
+ if (ser && ser->name) {
+ smart_str_appends(&ser_handlers, ser->name);
+ smart_str_appendc(&ser_handlers, ' ');
}
}
php_info_print_table_start();
php_info_print_table_row(2, "Session Support", "enabled" );
- if (handlers.c) {
- smart_str_0(&handlers);
- php_info_print_table_row(2, "Registered save handlers", handlers.c);
- smart_str_free(&handlers);
+ if (save_handlers.c) {
+ smart_str_0(&save_handlers);
+ php_info_print_table_row(2, "Registered save handlers", save_handlers.c);
+ smart_str_free(&save_handlers);
} else {
php_info_print_table_row(2, "Registered save handlers", "none");
}
+
+ if (ser_handlers.c) {
+ smart_str_0(&ser_handlers);
+ php_info_print_table_row(2, "Registered serializer handlers", ser_handlers.c);
+ smart_str_free(&ser_handlers);
+ } else {
+ php_info_print_table_row(2, "Registered serializer handlers", "none");
+ }
+
php_info_print_table_end();
DISPLAY_INI_ENTRIES();