summaryrefslogtreecommitdiff
path: root/ext/session
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-05-28 16:27:12 +0300
committerDmitry Stogov <dmitry@zend.com>2018-05-28 16:27:12 +0300
commit5eb1f92f31cafc48384f9096012f421b37f6d425 (patch)
tree4ed67b92229407e7b5cbab37b96428fe80eb3f94 /ext/session
parent925f05dd1a35eafa71eb29abb69cdfc31a23a75d (diff)
downloadphp-git-5eb1f92f31cafc48384f9096012f421b37f6d425.tar.gz
Use zend_string_release_ex() instread of zend_string_release() in places, where we sure about string persistence.
Diffstat (limited to 'ext/session')
-rw-r--r--ext/session/mod_files.c4
-rw-r--r--ext/session/mod_mm.c2
-rw-r--r--ext/session/session.c100
3 files changed, 53 insertions, 53 deletions
diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c
index 1c87018043..cec67df148 100644
--- a/ext/session/mod_files.c
+++ b/ext/session/mod_files.c
@@ -528,7 +528,7 @@ PS_READ_FUNC(files)
} else {
php_error_docref(NULL, E_WARNING, "read returned less bytes than requested");
}
- zend_string_release(*val);
+ zend_string_release_ex(*val, 0);
*val = ZSTR_EMPTY_ALLOC();
return FAILURE;
}
@@ -692,7 +692,7 @@ PS_CREATE_SID_FUNC(files)
/* FIXME: mod_data(data) should not be NULL (User handler could be NULL) */
if (data && ps_files_key_exists(data, ZSTR_VAL(sid)) == SUCCESS) {
if (sid) {
- zend_string_release(sid);
+ zend_string_release_ex(sid, 0);
sid = NULL;
}
if (--maxfail < 0) {
diff --git a/ext/session/mod_mm.c b/ext/session/mod_mm.c
index 2c2fd224cf..e1e3c54d20 100644
--- a/ext/session/mod_mm.c
+++ b/ext/session/mod_mm.c
@@ -482,7 +482,7 @@ PS_CREATE_SID_FUNC(mm)
/* Check collision */
if (ps_mm_key_exists(data, sid->val) == SUCCESS) {
if (sid) {
- zend_string_release(sid);
+ zend_string_release_ex(sid, 0);
sid = NULL;
}
if (!(maxfail--)) {
diff --git a/ext/session/session.c b/ext/session/session.c
index 4e5985e7ad..3482768781 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -140,12 +140,12 @@ static inline void php_rshutdown_session_globals(void) /* {{{ */
} zend_end_try();
}
if (PS(id)) {
- zend_string_release(PS(id));
+ zend_string_release_ex(PS(id), 0);
PS(id) = NULL;
}
if (PS(session_vars)) {
- zend_string_release(PS(session_vars));
+ zend_string_release_ex(PS(session_vars), 0);
PS(session_vars) = NULL;
}
@@ -225,7 +225,7 @@ static void php_session_track_init(void) /* {{{ */
ZVAL_NEW_REF(&PS(http_session_vars), &session_vars);
Z_ADDREF_P(&PS(http_session_vars));
zend_hash_update_ind(&EG(symbol_table), var_name, &PS(http_session_vars));
- zend_string_release(var_name);
+ zend_string_release_ex(var_name, 0);
}
/* }}} */
@@ -406,7 +406,7 @@ static int php_session_initialize(void) /* {{{ */
/* If there is no ID, use session module to create one */
if (!PS(id) || !ZSTR_VAL(PS(id))[0]) {
if (PS(id)) {
- zend_string_release(PS(id));
+ zend_string_release_ex(PS(id), 0);
}
PS(id) = PS(mod)->s_create_sid(&PS(mod_data));
if (!PS(id)) {
@@ -420,7 +420,7 @@ static int php_session_initialize(void) /* {{{ */
} else if (PS(use_strict_mode) && PS(mod)->s_validate_sid &&
PS(mod)->s_validate_sid(&PS(mod_data), PS(id)) == FAILURE) {
if (PS(id)) {
- zend_string_release(PS(id));
+ zend_string_release_ex(PS(id), 0);
}
PS(id) = PS(mod)->s_create_sid(&PS(mod_data));
if (!PS(id)) {
@@ -449,7 +449,7 @@ static int php_session_initialize(void) /* {{{ */
php_session_gc(0);
if (PS(session_vars)) {
- zend_string_release(PS(session_vars));
+ zend_string_release_ex(PS(session_vars), 0);
PS(session_vars) = NULL;
}
if (val) {
@@ -457,7 +457,7 @@ static int php_session_initialize(void) /* {{{ */
PS(session_vars) = zend_string_copy(val);
}
php_session_decode(val);
- zend_string_release(val);
+ zend_string_release_ex(val, 0);
}
return SUCCESS;
}
@@ -484,7 +484,7 @@ static void php_session_save_current_state(int write) /* {{{ */
} else {
ret = PS(mod)->s_write(&PS(mod_data), PS(id), val, PS(gc_maxlifetime));
}
- zend_string_release(val);
+ zend_string_release_ex(val, 0);
} else {
ret = PS(mod)->s_write(&PS(mod_data), PS(id), ZSTR_EMPTY_ALLOC(), PS(gc_maxlifetime));
}
@@ -877,7 +877,7 @@ PS_SERIALIZER_DECODE_FUNC(php_serialize) /* {{{ */
ZVAL_NEW_REF(&PS(http_session_vars), &session_vars);
Z_ADDREF_P(&PS(http_session_vars));
zend_hash_update_ind(&EG(symbol_table), var_name, &PS(http_session_vars));
- zend_string_release(var_name);
+ zend_string_release_ex(var_name, 0);
return SUCCESS;
}
/* }}} */
@@ -935,12 +935,12 @@ PS_SERIALIZER_DECODE_FUNC(php_binary) /* {{{ */
ZVAL_PTR(&rv, current);
php_set_session_var(name, &rv, &var_hash);
} else {
- zend_string_release(name);
+ zend_string_release_ex(name, 0);
php_session_normalize_vars();
PHP_VAR_UNSERIALIZE_DESTROY(var_hash);
return FAILURE;
}
- zend_string_release(name);
+ zend_string_release_ex(name, 0);
}
php_session_normalize_vars();
@@ -1007,11 +1007,11 @@ PS_SERIALIZER_DECODE_FUNC(php) /* {{{ */
ZVAL_PTR(&rv, current);
php_set_session_var(name, &rv, &var_hash);
} else {
- zend_string_release(name);
+ zend_string_release_ex(name, 0);
retval = FAILURE;
goto break_outer_loop;
}
- zend_string_release(name);
+ zend_string_release_ex(name, 0);
p = q;
}
@@ -1323,8 +1323,8 @@ static int php_session_send_cookie(void) /* {{{ */
smart_str_appendc(&ncookie, '=');
smart_str_appendl(&ncookie, ZSTR_VAL(e_id), ZSTR_LEN(e_id));
- zend_string_release(e_session_name);
- zend_string_release(e_id);
+ zend_string_release_ex(e_session_name, 0);
+ zend_string_release_ex(e_id, 0);
if (PS(cookie_lifetime) > 0) {
struct timeval tv;
@@ -1337,7 +1337,7 @@ static int php_session_send_cookie(void) /* {{{ */
date_fmt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, t, 0);
smart_str_appends(&ncookie, COOKIE_EXPIRES);
smart_str_appendl(&ncookie, ZSTR_VAL(date_fmt), ZSTR_LEN(date_fmt));
- zend_string_release(date_fmt);
+ zend_string_release_ex(date_fmt, 0);
smart_str_appends(&ncookie, COOKIE_MAX_AGE);
smart_str_append_long(&ncookie, PS(cookie_lifetime));
@@ -1446,7 +1446,7 @@ PHPAPI int php_session_reset_id(void) /* {{{ */
smart_str_appends(&var, ZSTR_VAL(PS(id)));
smart_str_0(&var);
if (sid) {
- zend_string_release(Z_STR_P(sid));
+ zend_string_release_ex(Z_STR_P(sid), 0);
ZVAL_NEW_STR(sid, var.s);
} else {
REGISTER_STRINGL_CONSTANT("SID", ZSTR_VAL(var.s), ZSTR_LEN(var.s), 0);
@@ -1454,7 +1454,7 @@ PHPAPI int php_session_reset_id(void) /* {{{ */
}
} else {
if (sid) {
- zend_string_release(Z_STR_P(sid));
+ zend_string_release_ex(Z_STR_P(sid), 0);
ZVAL_EMPTY_STRING(sid);
} else {
REGISTER_STRINGL_CONSTANT("SID", "", 0, 0);
@@ -1479,7 +1479,7 @@ PHPAPI int php_session_reset_id(void) /* {{{ */
zend_string *sname;
sname = zend_string_init(PS(session_name), strlen(PS(session_name)), 0);
php_url_scanner_reset_session_var(sname, 1); /* This may fail when session name has changed */
- zend_string_release(sname);
+ zend_string_release_ex(sname, 0);
php_url_scanner_add_session_var(PS(session_name), strlen(PS(session_name)), ZSTR_VAL(PS(id)), ZSTR_LEN(PS(id)), 1);
}
return SUCCESS;
@@ -1584,7 +1584,7 @@ PHPAPI int php_session_start(void) /* {{{ */
Z_STRLEN_P(data) != 0 &&
strstr(Z_STRVAL_P(data), PS(extern_referer_chk)) == NULL
) {
- zend_string_release(PS(id));
+ zend_string_release_ex(PS(id), 0);
PS(id) = NULL;
}
}
@@ -1593,7 +1593,7 @@ PHPAPI int php_session_start(void) /* {{{ */
/* Finally check session id for dangerous characters
* Security note: session id may be embedded in HTML pages.*/
if (PS(id) && strpbrk(ZSTR_VAL(PS(id)), "\r\n\t <>'\"\\")) {
- zend_string_release(PS(id));
+ zend_string_release_ex(PS(id), 0);
PS(id) = NULL;
}
@@ -1601,7 +1601,7 @@ PHPAPI int php_session_start(void) /* {{{ */
|| php_session_cache_limiter() == -2) {
PS(session_status) = php_session_none;
if (PS(id)) {
- zend_string_release(PS(id));
+ zend_string_release_ex(PS(id), 0);
PS(id) = NULL;
}
return FAILURE;
@@ -1690,43 +1690,43 @@ static PHP_FUNCTION(session_set_cookie_params)
ini_name = zend_string_init("session.cookie_lifetime", sizeof("session.cookie_lifetime") - 1, 0);
if (zend_alter_ini_entry(ini_name, Z_STR_P(lifetime), PHP_INI_USER, PHP_INI_STAGE_RUNTIME) == FAILURE) {
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_name, 0);
RETURN_FALSE;
}
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_name, 0);
if (path) {
ini_name = zend_string_init("session.cookie_path", sizeof("session.cookie_path") - 1, 0);
if (zend_alter_ini_entry(ini_name, path, PHP_INI_USER, PHP_INI_STAGE_RUNTIME) == FAILURE) {
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_name, 0);
RETURN_FALSE;
}
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_name, 0);
}
if (domain) {
ini_name = zend_string_init("session.cookie_domain", sizeof("session.cookie_domain") - 1, 0);
if (zend_alter_ini_entry(ini_name, domain, PHP_INI_USER, PHP_INI_STAGE_RUNTIME) == FAILURE) {
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_name, 0);
RETURN_FALSE;
}
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_name, 0);
}
if (argc > 3) {
ini_name = zend_string_init("session.cookie_secure", sizeof("session.cookie_secure") - 1, 0);
if (zend_alter_ini_entry_chars(ini_name, secure ? "1" : "0", 1, PHP_INI_USER, PHP_INI_STAGE_RUNTIME) == FAILURE) {
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_name, 0);
RETURN_FALSE;
}
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_name, 0);
}
if (argc > 4) {
ini_name = zend_string_init("session.cookie_httponly", sizeof("session.cookie_httponly") - 1, 0);
if (zend_alter_ini_entry_chars(ini_name, httponly ? "1" : "0", 1, PHP_INI_USER, PHP_INI_STAGE_RUNTIME) == FAILURE) {
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_name, 0);
RETURN_FALSE;
}
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_name, 0);
}
RETURN_TRUE;
@@ -1777,7 +1777,7 @@ static PHP_FUNCTION(session_name)
if (name) {
ini_name = zend_string_init("session.name", sizeof("session.name") - 1, 0);
zend_alter_ini_entry(ini_name, name, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_name, 0);
}
}
/* }}} */
@@ -1824,7 +1824,7 @@ static PHP_FUNCTION(session_module_name)
ini_name = zend_string_init("session.save_handler", sizeof("session.save_handler") - 1, 0);
zend_alter_ini_entry(ini_name, name, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_name, 0);
}
}
/* }}} */
@@ -1943,8 +1943,8 @@ static PHP_FUNCTION(session_set_save_handler)
PS(set_handler) = 1;
zend_alter_ini_entry(ini_name, ini_val, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
PS(set_handler) = 0;
- zend_string_release(ini_val);
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_val, 0);
+ zend_string_release_ex(ini_name, 0);
}
RETURN_TRUE;
@@ -1967,7 +1967,7 @@ static PHP_FUNCTION(session_set_save_handler)
if (!zend_is_callable(&args[i], 0, NULL)) {
zend_string *name = zend_get_callable_name(&args[i]);
php_error_docref(NULL, E_WARNING, "Argument %d is not a valid callback", i+1);
- zend_string_release(name);
+ zend_string_release_ex(name, 0);
RETURN_FALSE;
}
}
@@ -1978,8 +1978,8 @@ static PHP_FUNCTION(session_set_save_handler)
PS(set_handler) = 1;
zend_alter_ini_entry(ini_name, ini_val, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
PS(set_handler) = 0;
- zend_string_release(ini_val);
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_val, 0);
+ zend_string_release_ex(ini_name, 0);
}
for (i = 0; i < argc; i++) {
@@ -2024,7 +2024,7 @@ static PHP_FUNCTION(session_save_path)
}
ini_name = zend_string_init("session.save_path", sizeof("session.save_path") - 1, 0);
zend_alter_ini_entry(ini_name, name, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_name, 0);
}
}
/* }}} */
@@ -2065,7 +2065,7 @@ static PHP_FUNCTION(session_id)
if (name) {
if (PS(id)) {
- zend_string_release(PS(id));
+ zend_string_release_ex(PS(id), 0);
}
PS(id) = zend_string_copy(name);
}
@@ -2106,7 +2106,7 @@ static PHP_FUNCTION(session_regenerate_id)
data = php_session_encode();
if (data) {
ret = PS(mod)->s_write(&PS(mod_data), PS(id), data, PS(gc_maxlifetime));
- zend_string_release(data);
+ zend_string_release_ex(data, 0);
} else {
ret = PS(mod)->s_write(&PS(mod_data), PS(id), ZSTR_EMPTY_ALLOC(), PS(gc_maxlifetime));
}
@@ -2121,10 +2121,10 @@ static PHP_FUNCTION(session_regenerate_id)
/* New session data */
if (PS(session_vars)) {
- zend_string_release(PS(session_vars));
+ zend_string_release_ex(PS(session_vars), 0);
PS(session_vars) = NULL;
}
- zend_string_release(PS(id));
+ zend_string_release_ex(PS(id), 0);
PS(id) = NULL;
if (PS(mod)->s_open(&PS(mod_data), PS(save_path), PS(session_name)) == FAILURE) {
@@ -2141,7 +2141,7 @@ static PHP_FUNCTION(session_regenerate_id)
}
if (PS(use_strict_mode) && PS(mod)->s_validate_sid &&
PS(mod)->s_validate_sid(&PS(mod_data), PS(id)) == FAILURE) {
- zend_string_release(PS(id));
+ zend_string_release_ex(PS(id), 0);
PS(id) = PS(mod)->s_create_sid(&PS(mod_data));
if (!PS(id)) {
PS(mod)->s_close(&PS(mod_data));
@@ -2158,7 +2158,7 @@ static PHP_FUNCTION(session_regenerate_id)
RETURN_FALSE;
}
if (data) {
- zend_string_release(data);
+ zend_string_release_ex(data, 0);
}
if (PS(use_cookies)) {
@@ -2203,7 +2203,7 @@ static PHP_FUNCTION(session_create_id)
} else {
/* Detect collision and retry */
if (PS(mod)->s_validate_sid(&PS(mod_data), new_id) == FAILURE) {
- zend_string_release(new_id);
+ zend_string_release_ex(new_id, 0);
continue;
}
break;
@@ -2215,7 +2215,7 @@ static PHP_FUNCTION(session_create_id)
if (new_id) {
smart_str_append(&id, new_id);
- zend_string_release(new_id);
+ zend_string_release_ex(new_id, 0);
} else {
smart_str_free(&id);
php_error_docref(NULL, E_WARNING, "Failed to create new ID");
@@ -2252,7 +2252,7 @@ static PHP_FUNCTION(session_cache_limiter)
if (limiter) {
ini_name = zend_string_init("session.cache_limiter", sizeof("session.cache_limiter") - 1, 0);
zend_alter_ini_entry(ini_name, limiter, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_name, 0);
}
}
/* }}} */
@@ -2284,7 +2284,7 @@ static PHP_FUNCTION(session_cache_expire)
convert_to_string_ex(expires);
ini_name = zend_string_init("session.cache_expire", sizeof("session.cache_expire") - 1, 0);
zend_alter_ini_entry(ini_name, Z_STR_P(expires), ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME);
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_name, 0);
}
}
/* }}} */