From f0108b769d27e531ad4d1efdf8ba83d22caf9b9b Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 6 Dec 2021 08:25:56 +0100 Subject: 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 --- src/tool_operate.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/tool_operate.c b/src/tool_operate.c index d648dc054..44f01e94e 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); -- cgit v1.2.1