From a182f0f96fc42d002028eab364c791c1e9b9427d Mon Sep 17 00:00:00 2001 From: Giovanni Giacobbi Date: Wed, 31 Dec 2025 14:20:52 +0100 Subject: [PATCH] curl: Fix segmentation fault with libcurl 7.29.0 --- ext/curl/multi.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ext/curl/multi.c b/ext/curl/multi.c index 09802d7e37d50..40603b4d31ddf 100644 --- a/ext/curl/multi.c +++ b/ext/curl/multi.c @@ -565,6 +565,18 @@ static void curl_multi_free_obj(zend_object *object) } } +#if LIBCURL_VERSION_NUM < 0x071e00 /* 7.30.0 */ + /* In 7.29.0 curl_multi_cleanup segfaults if there no handles have been + * added. To avoid this, just add and then remove a dummy handle. */ + CURL *tmp_cp = curl_easy_init(); + if (tmp_cp) { + if (curl_multi_add_handle(mh->multi, tmp_cp) == CURLM_OK) { + curl_multi_remove_handle(mh->multi, tmp_cp); + } + curl_easy_cleanup(tmp_cp); + } +#endif + curl_multi_cleanup(mh->multi); zend_llist_clean(&mh->easyh); if (mh->handlers.server_push) {