]> granicus.if.org Git - php/commitdiff
change E_ERROR to E_WARNING when invalid argument has been passed
authorAntony Dovgal <tony2001@php.net>
Wed, 30 Aug 2006 15:42:40 +0000 (15:42 +0000)
committerAntony Dovgal <tony2001@php.net>
Wed, 30 Aug 2006 15:42:40 +0000 (15:42 +0000)
make sure ini_set() doesn't reset PS(mod) and PS(serializer) to invalid values

ext/session/session.c

index eb0a746f2d057ed6c991a1bd842c4faa161e2d70..008b57045bac9bf02c6ea8876fb2a5a680489245 100644 (file)
@@ -92,14 +92,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;
 }
@@ -119,14 +121,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)) {
-               php_error_docref(NULL TSRMLS_CC, E_ERROR, "Cannot find serialization handler %s", new_value);
+       if (PG(modules_activated) && !tmp) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot find serialization handler %s", new_value);
                return FAILURE;
        }
+       PS(serializer) = tmp;
 
        return SUCCESS;
 }
@@ -1285,8 +1289,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)) {