Rebase against 3f2850aeaa159270384764843cdb1dc3cbe902c6.

This commit is contained in:
Alistair Leslie-Hughes
2021-08-06 09:23:27 +10:00
parent 00985bf311
commit 82118b0d67
9 changed files with 87 additions and 84 deletions

View File

@@ -1,4 +1,4 @@
From 8f44306c926d3e72fea2b5ffcd8c0b5b8c32f8b0 Mon Sep 17 00:00:00 2001
From 42f756e849366ece3e83a7add81f7ddfbddcd0df Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Sat, 18 Jul 2020 09:13:29 -0600
Subject: [PATCH] server: Fix obtaining information about a symlink.
@@ -11,10 +11,10 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
3 files changed, 15 insertions(+), 12 deletions(-)
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
index c4efbc40878..4c0e864a011 100644
index c6a02995e99..9e27f848e90 100644
--- a/dlls/ntdll/unix/file.c
+++ b/dlls/ntdll/unix/file.c
@@ -1989,7 +1989,7 @@ static NTSTATUS fill_file_info( const struct stat *st, ULONG attr, void *ptr,
@@ -1986,7 +1986,7 @@ static NTSTATUS fill_file_info( const struct stat *st, ULONG attr, void *ptr,
}
@@ -23,7 +23,7 @@ index c4efbc40878..4c0e864a011 100644
{
data_size_t size = 1024;
NTSTATUS ret;
@@ -2002,6 +2002,7 @@ static NTSTATUS server_get_unix_name( HANDLE handle, char **unix_name )
@@ -1999,6 +1999,7 @@ static NTSTATUS server_get_unix_name( HANDLE handle, char **unix_name )
SERVER_START_REQ( get_handle_unix_name )
{
req->handle = wine_server_obj_handle( handle );
@@ -31,7 +31,7 @@ index c4efbc40878..4c0e864a011 100644
wine_server_set_reply( req, name, size );
ret = wine_server_call( req );
size = reply->name_len;
@@ -2197,7 +2198,7 @@ static NTSTATUS get_mountmgr_fs_info( HANDLE handle, int fd, struct mountmgr_uni
@@ -2194,7 +2195,7 @@ static NTSTATUS get_mountmgr_fs_info( HANDLE handle, int fd, struct mountmgr_uni
NTSTATUS status;
int letter;
@@ -40,34 +40,34 @@ index c4efbc40878..4c0e864a011 100644
letter = find_dos_device( unix_name );
free( unix_name );
@@ -4415,7 +4416,7 @@ NTSTATUS WINAPI NtQueryInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
if (fd_get_file_info( fd, options, &st, &attr ) == -1) io->u.Status = errno_to_status( errno );
@@ -4413,7 +4414,7 @@ NTSTATUS WINAPI NtQueryInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
if (fd_get_file_info( fd, options, &st, &attr ) == -1) status = errno_to_status( errno );
else if (!S_ISREG(st.st_mode) && !S_ISDIR(st.st_mode))
io->u.Status = STATUS_INVALID_INFO_CLASS;
- else if (!(io->u.Status = server_get_unix_name( handle, &unix_name )))
+ else if (!(io->u.Status = server_get_unix_name( handle, &unix_name, FALSE )))
status = STATUS_INVALID_INFO_CLASS;
- else if (!(status = server_get_unix_name( handle, &unix_name )))
+ else if (!(status = server_get_unix_name( handle, &unix_name, FALSE )))
{
LONG name_len = len - FIELD_OFFSET(FILE_ALL_INFORMATION, NameInformation.FileName);
@@ -4476,7 +4477,7 @@ NTSTATUS WINAPI NtQueryInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
@@ -4474,7 +4475,7 @@ NTSTATUS WINAPI NtQueryInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
FILE_NAME_INFORMATION *info = ptr;
char *unix_name;
- if (!(io->u.Status = server_get_unix_name( handle, &unix_name )))
+ if (!(io->u.Status = server_get_unix_name( handle, &unix_name, FALSE )))
- if (!(status = server_get_unix_name( handle, &unix_name )))
+ if (!(status = server_get_unix_name( handle, &unix_name, FALSE )))
{
LONG name_len = len - FIELD_OFFSET(FILE_NAME_INFORMATION, FileName);
io->u.Status = fill_name_info( unix_name, info, &name_len );
@@ -4490,7 +4491,7 @@ NTSTATUS WINAPI NtQueryInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
status = fill_name_info( unix_name, info, &name_len );
@@ -4488,7 +4489,7 @@ NTSTATUS WINAPI NtQueryInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
FILE_NETWORK_OPEN_INFORMATION *info = ptr;
char *unix_name;
- if (!(io->u.Status = server_get_unix_name( handle, &unix_name )))
+ if (!(io->u.Status = server_get_unix_name( handle, &unix_name, FALSE )))
- if (!(status = server_get_unix_name( handle, &unix_name )))
+ if (!(status = server_get_unix_name( handle, &unix_name, FALSE )))
{
ULONG attributes;
struct stat st;
@@ -6058,7 +6059,7 @@ NTSTATUS create_reparse_point(HANDLE handle, REPARSE_DATA_BUFFER *buffer)
@@ -6038,7 +6039,7 @@ NTSTATUS create_reparse_point(HANDLE handle, REPARSE_DATA_BUFFER *buffer)
if ((status = server_get_unix_fd( handle, FILE_SPECIAL_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
return status;
@@ -76,7 +76,7 @@ index c4efbc40878..4c0e864a011 100644
goto cleanup;
src_allocated = TRUE;
if (flags == SYMLINK_FLAG_RELATIVE)
@@ -6339,7 +6340,7 @@ NTSTATUS get_reparse_point(HANDLE handle, REPARSE_DATA_BUFFER *buffer, ULONG out
@@ -6319,7 +6320,7 @@ NTSTATUS get_reparse_point(HANDLE handle, REPARSE_DATA_BUFFER *buffer, ULONG out
if ((status = server_get_unix_fd( handle, FILE_ANY_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
return status;
@@ -85,7 +85,7 @@ index c4efbc40878..4c0e864a011 100644
goto cleanup;
if ((status = get_symlink_properties( unix_src, unix_dest, &unix_dest_len, &buffer->ReparseTag,
@@ -6457,7 +6458,7 @@ NTSTATUS remove_reparse_point(HANDLE handle, REPARSE_GUID_DATA_BUFFER *buffer)
@@ -6437,7 +6438,7 @@ NTSTATUS remove_reparse_point(HANDLE handle, REPARSE_GUID_DATA_BUFFER *buffer)
if ((status = server_get_unix_fd( handle, FILE_SPECIAL_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
return status;
@@ -94,7 +94,7 @@ index c4efbc40878..4c0e864a011 100644
goto cleanup;
TRACE( "Deleting symlink %s\n", unix_name );
@@ -7564,7 +7565,7 @@ NTSTATUS WINAPI NtQueryObject( HANDLE handle, OBJECT_INFORMATION_CLASS info_clas
@@ -7548,7 +7549,7 @@ NTSTATUS WINAPI NtQueryObject( HANDLE handle, OBJECT_INFORMATION_CLASS info_clas
/* first try as a file object */