mirror of
https://github.com/php/php-src.git
synced 2024-09-22 10:27:25 +00:00
Try to fix #5271 - crash when $HTTP_SESSION_VARS is already defined
via "global" # I'm not sure it's fastest fix possible, but at least it should remove the # crash
This commit is contained in:
parent
64293ba38f
commit
1d46433bfa
@ -375,16 +375,21 @@ PS_SERIALIZER_DECODE_FUNC(wddx)
|
|||||||
|
|
||||||
static void php_session_track_init(void)
|
static void php_session_track_init(void)
|
||||||
{
|
{
|
||||||
|
zval **old_vars = NULL;
|
||||||
PSLS_FETCH();
|
PSLS_FETCH();
|
||||||
ELS_FETCH();
|
ELS_FETCH();
|
||||||
|
|
||||||
if (zend_hash_find(&EG(symbol_table), "HTTP_SESSION_VARS", sizeof("HTTP_SESSION_VARS"),
|
if (zend_hash_find(&EG(symbol_table), "HTTP_SESSION_VARS", sizeof("HTTP_SESSION_VARS"), (void **)&old_vars) == SUCCESS && (*old_vars)->type == IS_ARRAY) {
|
||||||
(void **)&PS(http_session_vars)) == FAILURE || PS(http_session_vars)->type != IS_ARRAY) {
|
PS(http_session_vars) = *old_vars;
|
||||||
MAKE_STD_ZVAL(PS(http_session_vars));
|
zend_hash_clean(PS(http_session_vars)->value.ht);
|
||||||
array_init(PS(http_session_vars));
|
} else {
|
||||||
ZEND_SET_GLOBAL_VAR_WITH_LENGTH("HTTP_SESSION_VARS", sizeof("HTTP_SESSION_VARS"), PS(http_session_vars), 1, 0);
|
if(old_vars) {
|
||||||
} else
|
zend_hash_del(&EG(symbol_table), "HTTP_SESSION_VARS", sizeof("HTTP_SESSION_VARS"));
|
||||||
zend_hash_clean(PS(http_session_vars)->value.ht);
|
}
|
||||||
|
MAKE_STD_ZVAL(PS(http_session_vars));
|
||||||
|
array_init(PS(http_session_vars));
|
||||||
|
ZEND_SET_GLOBAL_VAR_WITH_LENGTH("HTTP_SESSION_VARS", sizeof("HTTP_SESSION_VARS"), PS(http_session_vars), 1, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *_php_session_encode(int *newlen PSLS_DC)
|
static char *_php_session_encode(int *newlen PSLS_DC)
|
||||||
|
Loading…
Reference in New Issue
Block a user