Commit 31b00555571 for php.net

commit 31b005555710ccbfe0098e426c80d7be38824122
Author: Gina Peter Banyard <girgias@php.net>
Date:   Thu Feb 5 18:33:36 2026 +0000

    ext/session: add const qualifiers

diff --git a/ext/session/session.c b/ext/session/session.c
index 4a949617fe3..7578a038ead 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -102,7 +102,7 @@ zend_class_entry *php_session_update_timestamp_iface_entry;

 static zend_result php_session_send_cookie(void);
 static zend_result php_session_abort(void);
-static void proposed_session_id_to_session_id(zval *proposed_session_id);
+static void proposed_session_id_to_session_id(const zval *proposed_session_id);

 /* Initialized in MINIT, readonly otherwise. */
 static int my_module_number = 0;
@@ -286,7 +286,7 @@ static ZEND_COLD void php_session_cancel_decode(void)
 	php_error_docref(NULL, E_WARNING, "Failed to decode session object. Session has been destroyed");
 }

-static zend_result php_session_decode(zend_string *data)
+static zend_result php_session_decode(const zend_string *data)
 {
     ZEND_ASSERT(PS(serializer));
 	zend_result result = SUCCESS;
@@ -653,17 +653,17 @@ static PHP_INI_MH(OnUpdateSaveDir)

 	/* Only do the open_basedir check at runtime */
 	if (stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) {
-		char *p;
-
 		if (memchr(ZSTR_VAL(new_value), '\0', ZSTR_LEN(new_value)) != NULL) {
 			return FAILURE;
 		}

 		/* we do not use zend_memrchr() since path can contain ; itself */
-		if ((p = strchr(ZSTR_VAL(new_value), ';'))) {
-			char *p2;
+		const char *p = strchr(ZSTR_VAL(new_value), ';');
+		if (p) {
 			p++;
-			if ((p2 = strchr(p, ';'))) {
+
+			const char *p2 = strchr(p, ';');
+			if (p2) {
 				p = p2 + 1;
 			}
 		} else {
@@ -1193,7 +1193,7 @@ PHPAPI zend_result php_session_update_timestamp(PS_UPDATE_TIMESTAMP_ARGS) {
    ****************** */

 typedef struct {
-	char *name;
+	const char *name;
 	void (*func)(void);
 } php_session_cache_limiter_t;

@@ -1468,8 +1468,6 @@ PHPAPI const ps_serializer *_php_find_ps_serializer(const char *name)

 static bool should_invalidate_session_for_external_referer(void)
 {
-	zval *referer_data;
-
 	/* No external referer check configured */
 	if (!PS(id) || PS(extern_referer_chk)[0] == '\0') {
 		return false;
@@ -1481,7 +1479,7 @@ static bool should_invalidate_session_for_external_referer(void)
 	}

 	/* Get HTTP_REFERER header */
-	referer_data = zend_hash_str_find(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), ZEND_STRL("HTTP_REFERER"));
+	const zval *referer_data = zend_hash_str_find(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), ZEND_STRL("HTTP_REFERER"));
 	if (!referer_data || Z_TYPE_P(referer_data) != IS_STRING || Z_STRLEN_P(referer_data) == 0) {
 		return false;
 	}
@@ -1492,7 +1490,7 @@ static bool should_invalidate_session_for_external_referer(void)

 static void try_find_session_id_in_global(const char *global_name, size_t global_name_len)
 {
-	zval *global_data, *potential_session_id;
+	zval *global_data;

 	if (PS(id)) {
 		return;
@@ -1508,7 +1506,7 @@ static void try_find_session_id_in_global(const char *global_name, size_t global
 		return;
 	}

-	potential_session_id = zend_hash_find(Z_ARRVAL_P(global_data), PS(session_name));
+	const zval *potential_session_id = zend_hash_find(Z_ARRVAL_P(global_data), PS(session_name));
 	if (potential_session_id) {
 		proposed_session_id_to_session_id(potential_session_id);
 	}
@@ -1537,7 +1535,7 @@ static bool php_can_change_session_setting(const char *setting_name, bool check_

 static void try_find_session_id_in_cookies(void)
 {
-	zval *cookie_data, *potential_session_id;
+	zval *cookie_data;

 	if (!PS(use_cookies) || PS(id)) {
 		return;
@@ -1553,7 +1551,7 @@ static void try_find_session_id_in_cookies(void)
 		return;
 	}

-	potential_session_id = zend_hash_find(Z_ARRVAL_P(cookie_data), PS(session_name));
+	const zval *potential_session_id = zend_hash_find(Z_ARRVAL_P(cookie_data), PS(session_name));
 	if (potential_session_id) {
 		proposed_session_id_to_session_id(potential_session_id);
 		PS(send_cookie) = false;
@@ -1561,7 +1559,7 @@ static void try_find_session_id_in_cookies(void)
 	}
 }

-static void proposed_session_id_to_session_id(zval *proposed_session_id) {
+static void proposed_session_id_to_session_id(const zval *proposed_session_id) {
 	ZVAL_DEREF(proposed_session_id);
 	if (Z_TYPE_P(proposed_session_id) == IS_STRING) {
 		PS(id) = zend_string_copy(Z_STR_P(proposed_session_id));
@@ -1654,7 +1652,7 @@ PHPAPI zend_result php_session_reset_id(void)

 PHPAPI zend_result php_session_start(void)
 {
-	char *value;
+	const char *value;

 	switch (PS(session_status)) {
 		case php_session_active:
@@ -2831,18 +2829,14 @@ static zend_result php_rinit_session(bool auto_start)

 	PS(mod) = NULL;
 	{
-		char *value;
-
-		value = zend_ini_string(ZEND_STRL("session.save_handler"), false);
+		const char *value = zend_ini_string(ZEND_STRL("session.save_handler"), false);
 		if (value) {
 			PS(mod) = _php_find_ps_module(value);
 		}
 	}

 	if (PS(serializer) == NULL) {
-		char *value;
-
-		value = zend_ini_string(ZEND_STRL("session.serialize_handler"), false);
+		const char *value = zend_ini_string(ZEND_STRL("session.serialize_handler"), false);
 		if (value) {
 			PS(serializer) = _php_find_ps_serializer(value);
 		}
@@ -3082,7 +3076,7 @@ static void php_session_rfc1867_early_find_sid(php_session_rfc1867_progress *pro
 	early_find_sid_in(&progress->sid, TRACK_VARS_GET);
 }

-static bool php_check_cancel_upload(php_session_rfc1867_progress *progress)
+static bool php_check_cancel_upload(const php_session_rfc1867_progress *progress)
 {
 	zval *progress_ary, *cancel_upload;

@@ -3132,7 +3126,7 @@ static void php_session_rfc1867_update(php_session_rfc1867_progress *progress, b
 	php_session_flush(true);
 }

-static void php_session_rfc1867_cleanup(php_session_rfc1867_progress *progress)
+static void php_session_rfc1867_cleanup(const php_session_rfc1867_progress *progress)
 {
 	php_session_initialize();
 	PS(session_status) = php_session_active;
@@ -3160,14 +3154,14 @@ static zend_result php_session_rfc1867_callback(unsigned int event, void *event_

 	switch(event) {
 		case MULTIPART_EVENT_START: {
-			multipart_event_start *data = (multipart_event_start *) event_data;
+			const multipart_event_start *data = event_data;
 			progress = ecalloc(1, sizeof(php_session_rfc1867_progress));
 			progress->content_length = data->content_length;
 			PS(rfc1867_progress) = progress;
 		}
 		break;
 		case MULTIPART_EVENT_FORMDATA: {
-			multipart_event_formdata *data = (multipart_event_formdata *) event_data;
+			const multipart_event_formdata *data = event_data;
 			size_t value_len;

 			if (Z_TYPE(progress->sid) && progress->key.s) {
@@ -3200,7 +3194,7 @@ static zend_result php_session_rfc1867_callback(unsigned int event, void *event_
 		}
 		break;
 		case MULTIPART_EVENT_FILE_START: {
-			multipart_event_file_start *data = (multipart_event_file_start *) event_data;
+			const multipart_event_file_start *data = event_data;

 			/* Do nothing when $_POST["PHP_SESSION_UPLOAD_PROGRESS"] is not set
 			 * or when we have no session id */
@@ -3261,7 +3255,7 @@ static zend_result php_session_rfc1867_callback(unsigned int event, void *event_
 		}
 		break;
 		case MULTIPART_EVENT_FILE_DATA: {
-			multipart_event_file_data *data = (multipart_event_file_data *) event_data;
+			const multipart_event_file_data *data = event_data;

 			if (!Z_TYPE(progress->sid) || !progress->key.s) {
 				break;
@@ -3274,7 +3268,7 @@ static zend_result php_session_rfc1867_callback(unsigned int event, void *event_
 		}
 		break;
 		case MULTIPART_EVENT_FILE_END: {
-			multipart_event_file_end *data = (multipart_event_file_end *) event_data;
+			const multipart_event_file_end *data = event_data;

 			if (!Z_TYPE(progress->sid) || !progress->key.s) {
 				break;
@@ -3293,7 +3287,7 @@ static zend_result php_session_rfc1867_callback(unsigned int event, void *event_
 		}
 		break;
 		case MULTIPART_EVENT_END: {
-			multipart_event_end *data = (multipart_event_end *) event_data;
+			const multipart_event_end *data = event_data;

 			if (Z_TYPE(progress->sid) && progress->key.s) {
 				if (PS(rfc1867_cleanup)) {