mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-09-21 20:06:40 +00:00
Avoid segfault with curl 8.10/8.11
With curl 8.10 [1] calling curl_multi_remove_handle retruns CURLM_BAD_EASY_HANDLE iff the handle was removed already and no other easy handle were registered. This resulted in ENUSRE triggering a segfault during shutdown as reported. This was fixed upstream after 8.11.1 [2]. Do a runtime version check and for affected version allow CURLM_BAD_EASY_HANDLE. [1] curl ba235ab269080dc66e35835c829f7ac4290dbc1d [2] curl 713182bd196bba014ba77f71176fea3de2236724 Fixes: #7295 Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
This commit is contained in:
+11
-1
@@ -237,7 +237,17 @@ CURLMcode ModIo::SetupRequest(const std::string& url, bool fileDownload)
|
||||
|
||||
void ModIo::TearDownRequest()
|
||||
{
|
||||
ENSURE(curl_multi_remove_handle(m_CurlMulti, m_Curl) == CURLM_OK);
|
||||
const curl_version_info_data* info = curl_version_info(CURLVERSION_NOW);
|
||||
const CURLMcode code = curl_multi_remove_handle(m_CurlMulti, m_Curl);
|
||||
if (info->version_num >= 0x080a00 && info->version_num < 0x080b02)
|
||||
{
|
||||
// Version 8.10.0 through 8.11.1 return CURLM_BAD_EASY_HANDLE
|
||||
ENSURE(code == CURLM_OK || code == CURLM_BAD_EASY_HANDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
ENSURE(code == CURLM_OK);
|
||||
}
|
||||
|
||||
if (m_CallbackData)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user