[PATCH v2 1/2] urlmon: Use unescaped Urls for FTP actions
Alistair Leslie-Hughes
leslie_alistair at hotmail.com
Sat Mar 23 04:34:18 CDT 2019
From: André Hentschel <nerv at dawncrow.de>
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=26445
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
dlls/urlmon/ftp.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/dlls/urlmon/ftp.c b/dlls/urlmon/ftp.c
index aef4a6cf16..31bdc79852 100644
--- a/dlls/urlmon/ftp.c
+++ b/dlls/urlmon/ftp.c
@@ -66,17 +66,24 @@ static HRESULT FtpProtocol_open_request(Protocol *prot, IUri *uri, DWORD request
HINTERNET internet_session, IInternetBindInfo *bind_info)
{
FtpProtocol *This = impl_from_Protocol(prot);
+ DWORD path_size = 0;
+ LPWSTR path;
BSTR url;
HRESULT hres;
hres = IUri_GetAbsoluteUri(uri, &url);
if(FAILED(hres))
return hres;
+ path = heap_strdupW((LPWSTR)url);
+ hres = UrlUnescapeW(path, NULL, &path_size, URL_UNESCAPE_INPLACE);
+ if(FAILED(hres))
+ return hres;
+ SysFreeString(url);
- This->base.request = InternetOpenUrlW(internet_session, url, NULL, 0,
+ This->base.request = InternetOpenUrlW(internet_session, path, NULL, 0,
request_flags|INTERNET_FLAG_EXISTING_CONNECT|INTERNET_FLAG_PASSIVE,
(DWORD_PTR)&This->base);
- SysFreeString(url);
+ heap_free(path);
if (!This->base.request && GetLastError() != ERROR_IO_PENDING) {
WARN("InternetOpenUrl failed: %d\n", GetLastError());
return INET_E_RESOURCE_NOT_FOUND;
--
2.20.1
More information about the wine-devel
mailing list