diff --git a/ext/session/session.c b/ext/session/session.c index 40ddc56f00fb7..f3296e37f271a 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -247,10 +247,7 @@ static void php_session_track_init(void) /* {{{ */ static zend_string *php_session_encode(void) /* {{{ */ { IF_SESSION_VARS() { - if (!PS(serializer)) { - php_error_docref(NULL, E_WARNING, "Unknown session.serialize_handler. Failed to encode session object"); - return NULL; - } + ZEND_ASSERT(PS(serializer)); return PS(serializer)->encode(); } else { php_error_docref(NULL, E_WARNING, "Cannot encode non-existent session"); @@ -268,10 +265,7 @@ static ZEND_COLD void php_session_cancel_decode(void) static zend_result php_session_decode(zend_string *data) /* {{{ */ { - if (!PS(serializer)) { - php_error_docref(NULL, E_WARNING, "Unknown session.serialize_handler. Failed to decode session object"); - return FAILURE; - } + ZEND_ASSERT(PS(serializer)); zend_result result = SUCCESS; zend_try { if (PS(serializer)->decode(ZSTR_VAL(data), ZSTR_LEN(data)) == FAILURE) { diff --git a/ext/session/tests/session_decode_error3.phpt b/ext/session/tests/session_decode_error3.phpt new file mode 100644 index 0000000000000..bbaf7f2f30f41 --- /dev/null +++ b/ext/session/tests/session_decode_error3.phpt @@ -0,0 +1,27 @@ +--TEST-- +Test session_decode() function : error functionality +--EXTENSIONS-- +session +--SKIPIF-- + +--INI-- +session.serialize_handler = wrong_handler +--FILE-- + +--EXPECTF-- +Warning: session_start(): Cannot find session serialization handler "wrong_handler" - session startup failed in %s on line 4 + +Warning: ini_set(): Serialization handler "wrong_handler" cannot be found in %s on line 5 + +Warning: session_decode(): Session data cannot be decoded when there is no active session in %s on line 6 +bool(false) +Done