From 0f973560841dd44a3343a530ed55c8d386b587a2 Mon Sep 17 00:00:00 2001 From: Jorg Sowa Date: Fri, 10 Jul 2026 23:30:33 +0200 Subject: [PATCH] Add tests for session_regenerate_id() write/destroy failure paths Covers the previously untested FAILURE branches where a userland save handler's write() or destroy() returns false during session_regenerate_id(), which should warn and return false while leaving the current session ID untouched. --- .../session_regenerate_id_destroy_fails.phpt | 50 +++++++++++++++++++ .../session_regenerate_id_write_fails.phpt | 50 +++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 ext/session/tests/user_session_module/session_regenerate_id_destroy_fails.phpt create mode 100644 ext/session/tests/user_session_module/session_regenerate_id_write_fails.phpt diff --git a/ext/session/tests/user_session_module/session_regenerate_id_destroy_fails.phpt b/ext/session/tests/user_session_module/session_regenerate_id_destroy_fails.phpt new file mode 100644 index 000000000000..5ad41aeeacf7 --- /dev/null +++ b/ext/session/tests/user_session_module/session_regenerate_id_destroy_fails.phpt @@ -0,0 +1,50 @@ +--TEST-- +session_regenerate_id(true): warns and returns false when save handler's destroy() fails +--EXTENSIONS-- +session +--INI-- +session.save_path= +--FILE-- + +--EXPECTF-- +Warning: session_regenerate_id(): Session object destruction failed. ID: user (path: ) in %s on line %d +bool(false) +bool(true) +bool(true) diff --git a/ext/session/tests/user_session_module/session_regenerate_id_write_fails.phpt b/ext/session/tests/user_session_module/session_regenerate_id_write_fails.phpt new file mode 100644 index 000000000000..1f5c3f84099b --- /dev/null +++ b/ext/session/tests/user_session_module/session_regenerate_id_write_fails.phpt @@ -0,0 +1,50 @@ +--TEST-- +session_regenerate_id(false): warns and returns false when save handler's write() fails +--EXTENSIONS-- +session +--INI-- +session.save_path= +--FILE-- + +--EXPECTF-- +Warning: session_regenerate_id(): Session write failed. ID: user (path: ) in %s on line %d +bool(false) +bool(true) +bool(true)