From f8fd45a73563d76103e4110e9c6c70df81346f30 Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Wed, 30 Aug 2006 15:43:10 +0000 Subject: [PATCH] MFH: change E_ERROR to E_WARNING when invalid argument has been passed make sure ini_set() doesn't reset PS(mod) and PS(serializer) to invalid values --- ext/session/session.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/ext/session/session.c b/ext/session/session.c index c6b2f5cdeb..a4eb7af687 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -95,13 +95,16 @@ static const ps_serializer *_php_find_ps_serializer(char *name TSRMLS_DC); static PHP_INI_MH(OnUpdateSaveHandler) { + ps_module *tmp; SESSION_CHECK_ACTIVE_STATE; - PS(mod) = _php_find_ps_module(new_value TSRMLS_CC); + tmp = _php_find_ps_module(new_value TSRMLS_CC); - if (PG(modules_activated) && !PS(mod)) { - php_error_docref(NULL TSRMLS_CC, E_ERROR, "Cannot find save handler %s", new_value); + if (PG(modules_activated) && !tmp) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot find save handler %s", new_value); + return FAILURE; } + PS(mod) = tmp; return SUCCESS; } @@ -121,13 +124,16 @@ static PHP_INI_MH(OnUpdateTransSid) static PHP_INI_MH(OnUpdateSerializer) { + const ps_serializer *tmp; SESSION_CHECK_ACTIVE_STATE; - PS(serializer) = _php_find_ps_serializer(new_value TSRMLS_CC); + tmp = _php_find_ps_serializer(new_value TSRMLS_CC); - if (PG(modules_activated) && !PS(serializer)) { + if (PG(modules_activated) && !tmp) { php_error_docref(NULL TSRMLS_CC, E_ERROR, "Cannot find serialization handler %s", new_value); + return FAILURE; } + PS(serializer) = tmp; return SUCCESS; } @@ -1395,8 +1401,9 @@ PHP_FUNCTION(session_module_name) if (ac == 1) { convert_to_string_ex(p_name); if (!_php_find_ps_module(Z_STRVAL_PP(p_name) TSRMLS_CC)) { - php_error_docref(NULL TSRMLS_CC, E_ERROR, "Cannot find named PHP session module (%s)", + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot find named PHP session module (%s)", Z_STRVAL_PP(p_name)); + zval_dtor(return_value); RETURN_FALSE; } if (PS(mod_data)) { -- 2.50.1