From 526a8c3473f1504351a97be91c95973498ed40df Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Mon, 28 Jul 2025 19:24:29 +0200 Subject: [PATCH] Fix exception handling in shm_put_var() --- ext/sysvshm/sysvshm.c | 4 +++- ext/sysvshm/tests/serialize_exception.phpt | 27 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 ext/sysvshm/tests/serialize_exception.phpt diff --git a/ext/sysvshm/sysvshm.c b/ext/sysvshm/sysvshm.c index ff80d30012dae..c1372368a34b8 100644 --- a/ext/sysvshm/sysvshm.c +++ b/ext/sysvshm/sysvshm.c @@ -261,7 +261,9 @@ PHP_FUNCTION(shm_put_var) RETURN_THROWS(); } - ZEND_ASSERT(shm_var.s != NULL); + if (UNEXPECTED(shm_var.s == NULL)) { + RETURN_THROWS(); + } /* insert serialized variable into shared memory */ bool ret = php_put_shm_data(shm_list_ptr->ptr, shm_key, shm_var.s); diff --git a/ext/sysvshm/tests/serialize_exception.phpt b/ext/sysvshm/tests/serialize_exception.phpt new file mode 100644 index 0000000000000..aae237e0fb38e --- /dev/null +++ b/ext/sysvshm/tests/serialize_exception.phpt @@ -0,0 +1,27 @@ +--TEST-- +__serialize() exception in shm_put_var() +--EXTENSIONS-- +sysvshm +--FILE-- +getMessage() . "\n"; +} + +shm_remove($s); + +?> +--EXPECT-- +no