mirror of
https://github.com/curl/curl.git
synced 2026-08-25 14:13:34 +03:00
url: a short host name + port is not a scheme
The function identifying a leading "scheme" part of the URL considered a few letters ending with a colon to be a scheme, making something like "short:80" to become an unknown scheme instead of a short host name and a port number. Extended test 1560 to verify. Also fixed test203 to use file_pwd to make it get the correct path on windows. Removed test 2070 since it was a duplicate of 203. Assisted-by: Marcel Raad Reported-by: Hagai Auro Fixes #3220 Fixes #3233 Closes #3223 Closes #3235
This commit is contained in:
parent
74f4782319
commit
9df8dc101b
8 changed files with 33 additions and 45 deletions
|
|
@ -2049,8 +2049,10 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
|
|||
(data->set.disallow_username_in_url ?
|
||||
CURLU_DISALLOW_USER : 0) |
|
||||
(data->set.path_as_is ? CURLU_PATH_AS_IS : 0));
|
||||
if(uc)
|
||||
if(uc) {
|
||||
DEBUGF(infof(data, "curl_url_set rejected %s\n", data->change.url));
|
||||
return Curl_uc_to_curlcode(uc);
|
||||
}
|
||||
|
||||
uc = curl_url_get(uh, CURLUPART_SCHEME, &data->state.up.scheme, 0);
|
||||
if(uc)
|
||||
|
|
|
|||
|
|
@ -238,7 +238,7 @@ bool Curl_is_absolute_url(const char *url, char *buf, size_t buflen)
|
|||
#endif
|
||||
for(i = 0; i < buflen && url[i]; ++i) {
|
||||
char s = url[i];
|
||||
if(s == ':') {
|
||||
if((s == ':') && (url[i + 1] == '/')) {
|
||||
if(buf)
|
||||
buf[i] = 0;
|
||||
return TRUE;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue