diff --git a/src/tool_operate.c b/src/tool_operate.c index 133d5b1915..fe4237cbb4 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -2471,8 +2471,10 @@ static CURLcode transfer_per_config(struct GlobalConfig *global, */ result = curl_easy_getinfo(curltls, CURLINFO_TLS_SSL_PTR, &tls_backend_info); - if(result) + if(result) { + curl_easy_cleanup(curltls); return result; + } /* Set the CA cert locations specified in the environment. For Windows if * no environment-specified filename is found then check for CA bundle @@ -2489,6 +2491,7 @@ static CURLcode transfer_per_config(struct GlobalConfig *global, config->cacert = strdup(env); if(!config->cacert) { curl_free(env); + curl_easy_cleanup(curltls); errorf(global, "out of memory\n"); return CURLE_OUT_OF_MEMORY; } @@ -2499,6 +2502,7 @@ static CURLcode transfer_per_config(struct GlobalConfig *global, config->capath = strdup(env); if(!config->capath) { curl_free(env); + curl_easy_cleanup(curltls); helpf(global->errors, "out of memory\n"); return CURLE_OUT_OF_MEMORY; } @@ -2510,6 +2514,7 @@ static CURLcode transfer_per_config(struct GlobalConfig *global, config->cacert = strdup(env); if(!config->cacert) { curl_free(env); + curl_easy_cleanup(curltls); errorf(global, "out of memory\n"); return CURLE_OUT_OF_MEMORY; }