}
/* }}} */
-static void php_session_decode(zend_string *data) /* {{{ */
+static int 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;
+ return FAILURE;
}
if (PS(serializer)->decode(data->val, data->len) == FAILURE) {
php_session_destroy();
php_error_docref(NULL, E_WARNING, "Failed to decode session object. Session has been destroyed");
+ return FAILURE;
}
+ return SUCCESS;
}
/* }}} */
void *hash_context = NULL;
#endif
unsigned char *digest;
- int digest_len;
+ size_t digest_len;
char *buf;
struct timeval tv;
zval *array;
}
outid = zend_string_alloc((digest_len + 2) * ((8.0f / PS(hash_bits_per_character) + 0.5)), 0);
- outid->len = (int)(bin_to_readable((char *)digest, digest_len, outid->val, (char)PS(hash_bits_per_character)) - (char *)&outid->val);
+ outid->len = (size_t)(bin_to_readable((char *)digest, digest_len, outid->val, (char)PS(hash_bits_per_character)) - (char *)&outid->val);
efree(digest);
return outid;
zend_string *str = NULL;
if (PS(session_status) != php_session_active) {
+ php_error_docref(NULL, E_WARNING, "Session is not active. You cannot decode session data");
RETURN_FALSE;
}
return;
}
- php_session_decode(str);
-
+ if (php_session_decode(str) == FAILURE) {
+ /* FIXME: session_decode() should return FALSE */
+ /* RETURN_FALSE; */
+ }
RETURN_TRUE;
}
/* }}} */
<?php
error_reporting(E_ALL);
-@session_decode("garbage data and no session started");
-@session_decode("userid|s:5:\"mazen\";chatRoom|s:1:\"1\";");
+session_decode("garbage data and no session started");
+session_decode("userid|s:5:\"mazen\";chatRoom|s:1:\"1\";");
print "I live\n";
?>
---EXPECT--
+--EXPECTF--
+Warning: session_decode(): Session is not active. You cannot decode session data in %s on line %d
+
+Warning: session_decode(): Session is not active. You cannot decode session data in %s on line %d
I live