mirror of
https://github.com/curl/curl.git
synced 2025-03-31 16:00:35 +08:00
url: fix possible use-after-free in default protocol
Prior to this change if the user specified a default protocol and a separately allocated non-absolute URL was used then it was freed prematurely, before it was then used to make the replacement URL. Bug: https://github.com/curl/curl/issues/6604#issuecomment-780138219 Reported-by: arvids-kokins-bidstack@users.noreply.github.com Closes https://github.com/curl/curl/pull/6613
This commit is contained in:
parent
94719e7285
commit
568190f493
@ -1901,13 +1901,12 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
|
||||
|
||||
if(data->set.str[STRING_DEFAULT_PROTOCOL] &&
|
||||
!Curl_is_absolute_url(data->change.url, NULL, MAX_SCHEME_LEN)) {
|
||||
char *url;
|
||||
if(data->change.url_alloc)
|
||||
free(data->change.url);
|
||||
url = aprintf("%s://%s", data->set.str[STRING_DEFAULT_PROTOCOL],
|
||||
data->change.url);
|
||||
char *url = aprintf("%s://%s", data->set.str[STRING_DEFAULT_PROTOCOL],
|
||||
data->change.url);
|
||||
if(!url)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
if(data->change.url_alloc)
|
||||
free(data->change.url);
|
||||
data->change.url = url;
|
||||
data->change.url_alloc = TRUE;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user