From 26c7c82d32dad841dd151ebc6a31b8ea6f93f94a Mon Sep 17 00:00:00 2001 From: Arnaud Le Blanc Date: Fri, 21 Oct 2022 17:51:43 +0200 Subject: [PATCH 1/3] Fix crash when memory limit is exceeded during generator initialization --- Zend/tests/generators/gh9801.phpt | 14 ++++++++++++++ Zend/zend_vm_def.h | 1 + Zend/zend_vm_execute.h | 1 + 3 files changed, 16 insertions(+) create mode 100644 Zend/tests/generators/gh9801.phpt diff --git a/Zend/tests/generators/gh9801.phpt b/Zend/tests/generators/gh9801.phpt new file mode 100644 index 00000000000..cc229ab0db8 --- /dev/null +++ b/Zend/tests/generators/gh9801.phpt @@ -0,0 +1,14 @@ +--TEST-- +Bug GH-9801 (Crash when memory limit is exceeded during generator initialization) +--INI-- +memory_limit=16m +--FILE-- + Date: Tue, 18 Oct 2022 14:57:54 +0200 Subject: [PATCH 2/3] Fix compilation warning --- main/php_network.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/main/php_network.h b/main/php_network.h index e7892a73df2..3894ee3ef39 100644 --- a/main/php_network.h +++ b/main/php_network.h @@ -207,11 +207,13 @@ PHPAPI void _php_emit_fd_setsize_warning(int max_fd); static inline bool _php_check_fd_setsize(php_socket_t *max_fd, int setsize) { #ifdef PHP_WIN32 + (void)(max_fd); // Unused if (setsize + 1 >= FD_SETSIZE) { _php_emit_fd_setsize_warning(setsize); return false; } #else + (void)(setsize); // Unused if (*max_fd >= FD_SETSIZE) { _php_emit_fd_setsize_warning(*max_fd); *max_fd = FD_SETSIZE - 1; From 845c6b3b3b1ed156bd5ebc979b096182e70fdbd6 Mon Sep 17 00:00:00 2001 From: Arnaud Le Blanc Date: Sat, 22 Oct 2022 10:42:07 +0200 Subject: [PATCH 3/3] [ci skip] NEWS --- NEWS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NEWS b/NEWS index 265c4cbd46b..9e0e58d8bb3 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,8 @@ PHP NEWS - Core: . Fixed bug GH-9752 (Generator crashes when interrupted during argument evaluation with extra named params). (Arnaud) + . Fixed bug GH-9801 (Generator crashes when memory limit is exceeded during + initialization). (Arnaud) - Date: . Fixed bug GH-9763 (DateTimeZone ctr mishandles input and adds null byte if