diff options
author | Dmitry Stogov <dmitry@zend.com> | 2018-05-28 16:27:12 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2018-05-28 16:27:12 +0300 |
commit | 5eb1f92f31cafc48384f9096012f421b37f6d425 (patch) | |
tree | 4ed67b92229407e7b5cbab37b96428fe80eb3f94 /ext/session/session.c | |
parent | 925f05dd1a35eafa71eb29abb69cdfc31a23a75d (diff) | |
download | php-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/session.c')
-rw-r--r-- | ext/session/session.c | 100 |
1 files changed, 50 insertions, 50 deletions
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); } } /* }}} */ |