[PATCH 1/2] urlmon: Use unescaped Urls for FTP actions
Jacek Caban
jacek at codeweavers.com
Fri Mar 22 10:53:12 CDT 2019
Hi Alistair,
On 3/22/19 5:50 AM, Alistair Leslie-Hughes wrote:
> 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 | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/dlls/urlmon/ftp.c b/dlls/urlmon/ftp.c
> index aef4a6c..b438d7c 100644
> --- a/dlls/urlmon/ftp.c
> +++ b/dlls/urlmon/ftp.c
> @@ -66,17 +66,23 @@ static HRESULT FtpProtocol_open_request(Protocol *prot, IUri *uri, DWORD request
> HINTERNET internet_session, IInternetBindInfo *bind_info)
> {
> FtpProtocol *This = impl_from_Protocol(prot);
> - BSTR url;
> + DWORD path_size = INTERNET_MAX_URL_LENGTH;
> + BSTR url, path;
> HRESULT hres;
>
> hres = IUri_GetAbsoluteUri(uri, &url);
> if(FAILED(hres))
> return hres;
> + path = heap_alloc(path_size);
> + hres = UrlUnescapeW((LPWSTR)url, path, &path_size, 0);
> + 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);
We eliminated most of INTERNET_MAX_URL_LENGTH usages, let's not
introduce new ones. In this case you could just unescape URL in place.
Thanks,
Jacek
More information about the wine-devel
mailing list