[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wine-devel
Subject:    Re: [PATCH 03/12] msvcp110: Add tr2_sys__Open_dir implementation.(resend)
From:       Piotr Caban <piotr.caban () gmail ! com>
Date:       2015-09-30 8:48:45
Message-ID: 560BA1ED.2010201 () gmail ! com
[Download RAW message or body]

On 09/29/15 18:03, YongHao Hu wrote:
> Hi,
>
> On 15/9/28 下午7:51, Piotr Caban wrote:
>> Hi,
>>
>> On 09/07/15 16:21, YongHao Hu wrote:
>>> +/* ?_Open_dir@sys@tr2@std@@YAPAXAAY0BAE@DPBDAAHAAW4file_type@123@@Z */
>>> +/*
>>> ?_Open_dir@sys@tr2@std@@YAPEAXAEAY0BAE@DPEBDAEAHAEAW4file_type@123@@Z */
>>> +void* __cdecl tr2_sys__Open_dir(char* target, char const* dest, int*
>>> err_code, enum file_type* type)
>>> +{
>>> +    HANDLE handle;
>>> +    WIN32_FIND_DATAA data;
>>> +    char temppath[MAX_PATH];
>>> +    TRACE("(%s %s %p %p)\n", debugstr_a(target), debugstr_a(dest),
>>> err_code, type);
>>> +    strcpy(temppath, dest);
>>> +    strcat(temppath, "\\*.*");
>> Is native limiting the path to MAX_PATH characters? What happens if
>> longer path is passed?
>>
> As far as I know, we can not create a file or directory when their path
> longer than MAX_PATH on Windows, so it is impossible to pass a longer
> valid path to tr2_sys__Open_dir.
> If we pass a longer invalid path, I think that it's err_code would be
> ERROR_PATH_NOT_FOUND( GetLastError() )
You can specify a longer path by prepending it with "\\?\" prefix. Even 
if longer paths are not supported you should probably detect that case 
instead of possibly crashing in strcpy call.

Thanks,
Piotr




[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic