Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
45bfa4ee
Commit
45bfa4ee
authored
Feb 28, 2021
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ntdll: Check for existing Unix path name in RtlGetFullPathName_U().
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
0d173e57
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
10 additions
and
8 deletions
+10
-8
path.c
dlls/ntdll/path.c
+10
-8
No files found.
dlls/ntdll/path.c
View file @
45bfa4ee
...
...
@@ -543,16 +543,18 @@ static ULONG get_full_path_helper(LPCWSTR name, LPWSTR buffer, ULONG size)
WCHAR
*
nt_str
;
SIZE_T
buflen
;
NTSTATUS
status
;
unix_name
=
RtlAllocateHeap
(
GetProcessHeap
(),
0
,
3
*
wcslen
(
name
)
+
1
);
ntdll_wcstoumbs
(
name
,
wcslen
(
name
)
+
1
,
unix_name
,
3
*
wcslen
(
name
)
+
1
,
FALSE
);
buflen
=
strlen
(
unix_name
)
+
10
;
for
(;;)
UNICODE_STRING
str
;
nt_str
=
RtlAllocateHeap
(
GetProcessHeap
(),
0
,
(
wcslen
(
name
)
+
9
)
*
sizeof
(
WCHAR
)
);
wcscpy
(
nt_str
,
L"
\\
??
\\
unix"
);
wcscat
(
nt_str
,
name
);
RtlInitUnicodeString
(
&
str
,
nt_str
);
buflen
=
3
*
wcslen
(
name
)
+
1
;
unix_name
=
RtlAllocateHeap
(
GetProcessHeap
(),
0
,
buflen
);
if
(
!
(
status
=
wine_nt_to_unix_file_name
(
&
str
,
unix_name
,
&
buflen
,
FILE_OPEN
)))
{
if
(
!
(
nt_str
=
RtlAllocateHeap
(
GetProcessHeap
(),
0
,
buflen
*
sizeof
(
WCHAR
)
)))
break
;
buflen
=
wcslen
(
name
)
+
9
;
status
=
wine_unix_to_nt_file_name
(
unix_name
,
nt_str
,
&
buflen
);
if
(
status
!=
STATUS_BUFFER_TOO_SMALL
)
break
;
RtlFreeHeap
(
GetProcessHeap
(),
0
,
nt_str
);
}
RtlFreeHeap
(
GetProcessHeap
(),
0
,
unix_name
);
if
(
!
status
&&
buflen
>
6
&&
nt_str
[
5
]
==
':'
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment