mirror of
https://github.com/curl/curl.git
synced 2024-12-09 06:30:06 +08:00
curl_path: bring back support for SFTP path ending in /~
libcurl used to do a directory listing for this case (even though the
documentation says a URL needs to end in a slash for this), but
4e2b52b5f7
modified the behavior.
This change brings back a directory listing for SFTP paths that are
specified exactly as /~ in the URL.
Reported-by: Pavel Mayorov
Fixes #11001
Closes #11023
This commit is contained in:
parent
f5c36bf6fe
commit
91b53efa4b
@ -62,24 +62,27 @@ CURLcode Curl_getworkingpath(struct Curl_easy *data,
|
||||
}
|
||||
}
|
||||
else if((data->conn->handler->protocol & CURLPROTO_SFTP) &&
|
||||
(working_path_len > 2) && !memcmp(working_path, "/~/", 3)) {
|
||||
size_t len;
|
||||
const char *p;
|
||||
int copyfrom = 3;
|
||||
(!strcmp("/~", working_path) ||
|
||||
((working_path_len > 2) && !memcmp(working_path, "/~/", 3)))) {
|
||||
if(Curl_dyn_add(&npath, homedir)) {
|
||||
free(working_path);
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
}
|
||||
/* Copy a separating '/' if homedir does not end with one */
|
||||
len = Curl_dyn_len(&npath);
|
||||
p = Curl_dyn_ptr(&npath);
|
||||
if(len && (p[len-1] != '/'))
|
||||
copyfrom = 2;
|
||||
if(working_path_len > 2) {
|
||||
size_t len;
|
||||
const char *p;
|
||||
int copyfrom = 3;
|
||||
/* Copy a separating '/' if homedir does not end with one */
|
||||
len = Curl_dyn_len(&npath);
|
||||
p = Curl_dyn_ptr(&npath);
|
||||
if(len && (p[len-1] != '/'))
|
||||
copyfrom = 2;
|
||||
|
||||
if(Curl_dyn_addn(&npath,
|
||||
&working_path[copyfrom], working_path_len - copyfrom)) {
|
||||
free(working_path);
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
if(Curl_dyn_addn(&npath,
|
||||
&working_path[copyfrom], working_path_len - copyfrom)) {
|
||||
free(working_path);
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user