Commit ca08e5f7fe4 for php.net
commit ca08e5f7fe4df1199a251be289cd9f388459adaf
Author: Gina Peter Banyard <girgias@php.net>
Date: Mon Feb 9 11:12:51 2026 +0000
ext/session: reduce scope of variables
diff --git a/ext/session/session.c b/ext/session/session.c
index e6412bbc0d8..31c525c89e8 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -995,15 +995,12 @@ PS_SERIALIZER_ENCODE_FUNC(php_binary)
PS_SERIALIZER_DECODE_FUNC(php_binary)
{
- const char *p;
const char *endptr = val + vallen;
- zend_string *name;
php_unserialize_data_t var_hash;
- zval *current, rv;
PHP_VAR_UNSERIALIZE_INIT(var_hash);
- for (p = val; p < endptr; ) {
+ for (const char *p = val; p < endptr; ) {
size_t namelen = ((unsigned char)(*p)) & (~PS_BIN_UNDEF);
if (namelen > PS_BIN_MAX || (p + namelen) >= endptr) {
@@ -1011,11 +1008,12 @@ PS_SERIALIZER_DECODE_FUNC(php_binary)
return FAILURE;
}
- name = zend_string_init(p + 1, namelen, false);
+ zend_string *name = zend_string_init(p + 1, namelen, false);
p += namelen + 1;
- current = var_tmp_var(&var_hash);
+ zval *current = var_tmp_var(&var_hash);
if (php_var_unserialize(current, (const unsigned char **) &p, (const unsigned char *) endptr, &var_hash)) {
+ zval rv;
ZVAL_PTR(&rv, current);
php_set_session_var(name, &rv, &var_hash);
} else {
@@ -1300,8 +1298,6 @@ static const php_session_cache_limiter_t php_session_cache_limiters[] = {
static int php_session_cache_limiter(void)
{
- const php_session_cache_limiter_t *lim;
-
if (ZSTR_LEN(PS(cache_limiter)) == 0) {
return 0;
}
@@ -1313,7 +1309,7 @@ static int php_session_cache_limiter(void)
return -2;
}
- for (lim = php_session_cache_limiters; lim->name; lim++) {
+ for (const php_session_cache_limiter_t *lim = php_session_cache_limiters; lim->name; lim++) {
if (!strcasecmp(lim->name, ZSTR_VAL(PS(cache_limiter)))) {
lim->func();
return 0;
@@ -1446,9 +1442,8 @@ PHPAPI const ps_module *_php_find_ps_module(const char *name)
PHPAPI const ps_serializer *_php_find_ps_serializer(const char *name)
{
const ps_serializer *found_serializer = NULL;
- const ps_serializer *current_serializer;
- for (current_serializer = ps_serializers; current_serializer->name; current_serializer++) {
+ for (const ps_serializer *current_serializer = ps_serializers; current_serializer->name; current_serializer++) {
if (!strcasecmp(name, current_serializer->name)) {
found_serializer = current_serializer;
break;
@@ -1643,16 +1638,14 @@ PHPAPI zend_result php_session_reset_id(void)
PHPAPI zend_result php_session_start(void)
{
- const char *value;
-
switch (PS(session_status)) {
case php_session_active:
php_session_session_already_started_error(E_NOTICE, "Ignoring session_start() because a session has already been started");
return FAILURE;
break;
- case php_session_disabled:
- value = zend_ini_string(ZEND_STRL("session.save_handler"), false);
+ case php_session_disabled: {
+ const char *value = zend_ini_string(ZEND_STRL("session.save_handler"), false);
if (!PS(mod) && value) {
PS(mod) = _php_find_ps_module(value);
if (!PS(mod)) {
@@ -1670,6 +1663,7 @@ PHPAPI zend_result php_session_start(void)
}
PS(session_status) = php_session_none;
ZEND_FALLTHROUGH;
+ }
case php_session_none:
default:
@@ -1793,9 +1787,6 @@ PHP_FUNCTION(session_set_cookie_params)
}
if (options_ht) {
- zend_string *key;
- zval *value;
-
if (path) {
zend_argument_value_error(2, "must be null when argument #1 ($lifetime_or_options) is an array");
RETURN_THROWS();
@@ -1815,7 +1806,7 @@ PHP_FUNCTION(session_set_cookie_params)
zend_argument_value_error(5, "must be null when argument #1 ($lifetime_or_options) is an array");
RETURN_THROWS();
}
- ZEND_HASH_FOREACH_STR_KEY_VAL(options_ht, key, value) {
+ ZEND_HASH_FOREACH_STR_KEY_VAL(options_ht, zend_string *key, zval *value) {
if (key) {
ZVAL_DEREF(value);
if (zend_string_equals_literal_ci(key, "lifetime")) {
@@ -2461,7 +2452,6 @@ PHP_FUNCTION(session_create_id)
PHP_FUNCTION(session_cache_limiter)
{
zend_string *limiter = NULL;
- zend_string *ini_name;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|S!", &limiter) == FAILURE) {
RETURN_THROWS();
@@ -2480,7 +2470,7 @@ PHP_FUNCTION(session_cache_limiter)
RETVAL_STRINGL(ZSTR_VAL(PS(cache_limiter)), ZSTR_LEN(PS(cache_limiter)));
if (limiter) {
- ini_name = ZSTR_INIT_LITERAL("session.cache_limiter", false);
+ zend_string *ini_name = ZSTR_INIT_LITERAL("session.cache_limiter", false);
zend_alter_ini_entry(ini_name, limiter, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
zend_string_release_ex(ini_name, false);
}
@@ -2566,8 +2556,6 @@ static zend_result php_session_start_set_ini(zend_string *varname, zend_string *
PHP_FUNCTION(session_start)
{
zval *options = NULL;
- zval *value;
- zend_string *str_idx;
bool read_and_close = false;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|a", &options) == FAILURE) {
@@ -2591,7 +2579,7 @@ PHP_FUNCTION(session_start)
/* set options */
if (options) {
- ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(options), str_idx, value) {
+ ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(options), zend_string *str_idx, zval *value) {
if (UNEXPECTED(!str_idx)) {
zend_argument_value_error(1, "must be of type array with keys as string");
RETURN_THROWS();