[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