From 9814d4a1912b9eab6bbf3a98524315e290572510 Mon Sep 17 00:00:00 2001 From: divinity76 Date: Mon, 15 Jan 2024 22:11:47 +0100 Subject: [PATCH] Fix missing error check in curl_multi_init() Closes GH-13157. --- NEWS | 3 +++ ext/curl/multi.c | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index e5014b67ebe..c826604c07f 100644 --- a/NEWS +++ b/NEWS @@ -6,6 +6,9 @@ PHP NEWS . Fixed timer leak in zend-max-execution-timers builds. (withinboredom) . Fixed bug GH-12349 (linking failure on ARM with mold). (Jan Palus) +- Curl: + . Fix missing error check in curl_multi_init(). (divinity76) + - FPM: . Fixed bug GH-12996 (Incorrect SCRIPT_NAME with Apache ProxyPassMatch when plus in path). (Jakub Zelenka) diff --git a/ext/curl/multi.c b/ext/curl/multi.c index 3d6f789e317..e8c32301d2e 100644 --- a/ext/curl/multi.c +++ b/ext/curl/multi.c @@ -60,12 +60,17 @@ static inline php_curlm *curl_multi_from_obj(zend_object *obj) { PHP_FUNCTION(curl_multi_init) { php_curlm *mh; + CURLM *multi; ZEND_PARSE_PARAMETERS_NONE(); - + multi = curl_multi_init(); + if (UNEXPECTED(multi == NULL)) { + zend_throw_error(NULL, "%s(): Could not initialize a new cURL multi handle", get_active_function_name()); + RETURN_THROWS(); + } object_init_ex(return_value, curl_multi_ce); mh = Z_CURL_MULTI_P(return_value); - mh->multi = curl_multi_init(); + mh->multi = multi; zend_llist_init(&mh->easyh, sizeof(zval), _php_curl_multi_cleanup_list, 0); }