[Bug 50035] Bugs in ntdll-Junction_Points staging patchset

WineHQ Bugzilla wine-bugs at winehq.org
Thu Oct 22 02:03:40 CDT 2020


https://bugs.winehq.org/show_bug.cgi?id=50035

--- Comment #4 from Martin Storsjö <martin at martin.st> ---
(In reply to Erich E. Hoover from comment #3)
> (In reply to Martin Storsjö from comment #0)
> > Created attachment 68475 [details]
> > First patch
> 
> This used to be part of:
> ntdll-Junction_Points/0019-kernel32-Implement-CreateSymbolicLink-A-W-with-
> ntdll.patch

Yeah, it seems to have been lost here:
https://github.com/wine-staging/wine-staging/commit/4ffe305c90f9e15141f2c1b10e86a15a5b9b7e3f

> Must have gotten lost in a rebase.  You are missing a free:
>     HeapFree( GetProcessHeap(), 0, linkW );
> that should occur both at the end and if linkW gets allocated and targetW
> fails.

No, I'm taking a shortcut, by passing FALSE to the alloc parameter to the
FILE_name_AtoW function - just like CopyFileA does:
https://source.winehq.org/git/wine.git/blob/f6a5a3d03c1eb914444af96352ca54eec79d7e2c:/dlls/kernel32/path.c#l100

The comment above FILE_name_AtoW says:

https://source.winehq.org/git/wine.git/blob/f6a5a3d03c1eb914444af96352ca54eec79d7e2c:/dlls/kernel32/file.c#l93

 * If alloc is FALSE uses the TEB static buffer, so it can only be used when
 * there is no possibility for the function to do that twice, taking into
 * account any called function.

AFAIK that should be ok here?

> > Attaching two patches that can be squashed into the existing patches in
> > ntdll-Junction_Points. The bugs are that FindNextFileW doesn't properly set
> > the dwReserved0 field (containing the ReparseTag value) if iterating over
> > files in a directory other than the current one, and that
> > CreateSymbolicLinkA is unimplemented.
> 
> That is a good find, I only tested this in wcmd - so I never noticed. 
> Please use sizeof(WCHAR)*2 instead of 4.

Sure

> Also, is there a reason you are avoiding lstrcpyW and lstrcatW?

No, I just wasn't aware of them.

But I actually need lstrcpynW, because info->path points to the full string
ending with "dirname\*", while we just want the dirname. But the intermediate
extra backslash isn't needed as it's included in info->path.Length.

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.


More information about the wine-bugs mailing list