From fa51ec4270fe1827b0e878894166bf4ee40395d7 Mon Sep 17 00:00:00 2001 From: Alessio Attilio Date: Sat, 31 Oct 2026 18:59:49 +0100 Subject: [PATCH] Fix GH-20656 putenv during resource shutdown --- ext/standard/basic_functions.c | 3 +++ ext/standard/tests/streams/gh20656.phpt | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 ext/standard/tests/streams/gh20656.phpt diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index cc5b587c04c8..12a06fadf1ae 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -774,6 +774,9 @@ PHP_FUNCTION(putenv) zend_argument_value_error(1, "must have a valid syntax"); RETURN_THROWS(); } + if (UNEXPECTED(EG(flags) & EG_FLAGS_IN_RESOURCE_SHUTDOWN)) { + RETURN_FALSE; + } pe.putenv_string = zend_strndup(setting, setting_len); if ((p = strchr(setting, '='))) { diff --git a/ext/standard/tests/streams/gh20656.phpt b/ext/standard/tests/streams/gh20656.phpt new file mode 100644 index 000000000000..764d8a4406b6 --- /dev/null +++ b/ext/standard/tests/streams/gh20656.phpt @@ -0,0 +1,17 @@ +--TEST-- +GH-20656 (HashTable use-after-destroy in function table via stream wrapper magic __call() with nested redeclaration) +--FILE-- + +--EXPECT--