diff options
author | Stanislav Malyshev <stas@php.net> | 2009-12-04 01:21:32 +0000 |
---|---|---|
committer | Stanislav Malyshev <stas@php.net> | 2009-12-04 01:21:32 +0000 |
commit | 86529ad73c3fee55437ce04852ad30c9a7d31eb3 (patch) | |
tree | fef2cf3e3cbc4a4653267e09e9715bf8f1a5c6ba | |
parent | b109e5bd82a9edfc8680429bc3c55f0d4de36397 (diff) | |
download | php-git-86529ad73c3fee55437ce04852ad30c9a7d31eb3.tar.gz |
protect http_session_vars from interrupt corruption
improve save_path check
-rw-r--r-- | ext/session/session.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/ext/session/session.c b/ext/session/session.c index 9ca5a6450d..db397dd6ac 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -1817,7 +1817,10 @@ static PHP_FUNCTION(session_unset) } IF_SESSION_VARS() { - HashTable *ht = Z_ARRVAL_P(PS(http_session_vars)); + HashTable *ht; + + SEPARATE_ZVAL_IF_NOT_REF(&PS(http_session_vars)); + ht = Z_ARRVAL_P(PS(http_session_vars)); if (PG(register_globals)) { uint str_len; @@ -1899,7 +1902,10 @@ static PHP_FUNCTION(session_unregister) } convert_to_string_ex(p_name); - PS_DEL_VARL(Z_STRVAL_PP(p_name), Z_STRLEN_PP(p_name)); + IF_SESSION_VARS() { + SEPARATE_ZVAL_IF_NOT_REF(&PS(http_session_vars)); + PS_DEL_VARL(Z_STRVAL_PP(p_name), Z_STRLEN_PP(p_name)); + } RETURN_TRUE; } |