From 5e08c400100f0d3643ec6623f50b8f6fb81b47ba Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+ndossche@users.noreply.github.com> Date: Mon, 3 Nov 2025 22:32:39 +0100 Subject: [PATCH 1/3] random: Fix memory leak when serialization fails --- ext/random/engine_mt19937.c | 1 + 1 file changed, 1 insertion(+) diff --git a/ext/random/engine_mt19937.c b/ext/random/engine_mt19937.c index e16c9f6722fc3..6fb72de552ca5 100644 --- a/ext/random/engine_mt19937.c +++ b/ext/random/engine_mt19937.c @@ -330,6 +330,7 @@ PHP_METHOD(Random_Engine_Mt19937, __serialize) /* state */ array_init(&t); if (!engine->algo->serialize(engine->status, Z_ARRVAL(t))) { + zval_ptr_dtor_nogc(&t); zend_throw_exception(NULL, "Engine serialize failed", 0); RETURN_THROWS(); } From a063178255cf5e92f0b953917680aa22f8dba265 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+ndossche@users.noreply.github.com> Date: Mon, 3 Nov 2025 22:41:43 +0100 Subject: [PATCH 2/3] Update ext/random/engine_mt19937.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tim Düsterhus --- ext/random/engine_mt19937.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/random/engine_mt19937.c b/ext/random/engine_mt19937.c index 6fb72de552ca5..a2de69ff7fb05 100644 --- a/ext/random/engine_mt19937.c +++ b/ext/random/engine_mt19937.c @@ -329,8 +329,8 @@ PHP_METHOD(Random_Engine_Mt19937, __serialize) /* state */ array_init(&t); + zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &t); if (!engine->algo->serialize(engine->status, Z_ARRVAL(t))) { - zval_ptr_dtor_nogc(&t); zend_throw_exception(NULL, "Engine serialize failed", 0); RETURN_THROWS(); } From 2b70bb48974467f62d9a7d678e46d893830d0bea Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+ndossche@users.noreply.github.com> Date: Mon, 3 Nov 2025 22:42:30 +0100 Subject: [PATCH 3/3] remove dupe --- ext/random/engine_mt19937.c | 1 - 1 file changed, 1 deletion(-) diff --git a/ext/random/engine_mt19937.c b/ext/random/engine_mt19937.c index a2de69ff7fb05..a1a0d02b9dee3 100644 --- a/ext/random/engine_mt19937.c +++ b/ext/random/engine_mt19937.c @@ -334,7 +334,6 @@ PHP_METHOD(Random_Engine_Mt19937, __serialize) zend_throw_exception(NULL, "Engine serialize failed", 0); RETURN_THROWS(); } - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &t); } /* }}} */