From: Daniel Stenberg Date: Mon, 6 Dec 2021 07:25:56 +0000 (+0100) Subject: tool_operate: fix potential memory-leak X-Git-Tag: curl-7_81_0~103 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=75b31ce6267e42416a5a27fd1cf4eea60c420cb7;p=thirdparty%2Fcurl.git tool_operate: fix potential memory-leak A 'CURLU *' would leak if url_proto() is called with no URL. Detected by Coverity. CID 1494643. Follow-up to 18270893abdb19 Closes #8098 --- diff --git a/src/tool_operate.c b/src/tool_operate.c index d648dc054c..44f01e94ea 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -668,15 +668,17 @@ static long url_proto(char *url) { CURLU *uh = curl_url(); long proto = 0; - if(url) { - if(!curl_url_set(uh, CURLUPART_URL, url, - CURLU_GUESS_SCHEME | CURLU_NON_SUPPORT_SCHEME)) { - char *schemep = NULL; - if(!curl_url_get(uh, CURLUPART_SCHEME, &schemep, - CURLU_DEFAULT_SCHEME) && - schemep) { - proto = scheme2protocol(schemep); - curl_free(schemep); + if(uh) { + if(url) { + if(!curl_url_set(uh, CURLUPART_URL, url, + CURLU_GUESS_SCHEME | CURLU_NON_SUPPORT_SCHEME)) { + char *schemep = NULL; + if(!curl_url_get(uh, CURLUPART_SCHEME, &schemep, + CURLU_DEFAULT_SCHEME) && + schemep) { + proto = scheme2protocol(schemep); + curl_free(schemep); + } } } curl_url_cleanup(uh);