mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
Rebase against bf83d755d987fec552cd1dce30638c31c49ab760.
This commit is contained in:
parent
4e692b5301
commit
06877e55b1
@ -9,4 +9,6 @@ Depends: server-Realtime_Priority
|
||||
Depends: advapi32-Token_Integrity_Level
|
||||
Depends: ntdll-Junction_Points
|
||||
Depends: kernel32-K32GetPerformanceInfo
|
||||
Depends: user32-rawinput-mouse
|
||||
Depends: user32-rawinput-mouse
|
||||
Depends: server-Desktop_Refcount
|
||||
Disabled: true
|
@ -1,4 +1,4 @@
|
||||
From 5ee2cbd7b66c190eae47785907fd40562b05379b Mon Sep 17 00:00:00 2001
|
||||
From e171bdbabedaeaafc0181ee156bf08ef180809da Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 16 Jan 2014 20:56:49 -0700
|
||||
Subject: [PATCH] ntdll: Add support for junction point creation.
|
||||
@ -18,10 +18,10 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
create mode 100644 libs/port/renameat2.c
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 395992046e8..6ea81e0641a 100644
|
||||
index 816e3684510..a1b6096b9b7 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -2210,6 +2210,8 @@ AC_CHECK_FUNCS(\
|
||||
@@ -2202,6 +2202,8 @@ AC_CHECK_FUNCS(\
|
||||
pwrite \
|
||||
readdir \
|
||||
readlink \
|
||||
@ -31,7 +31,7 @@ index 395992046e8..6ea81e0641a 100644
|
||||
select \
|
||||
setproctitle \
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index 1adc1e094ec..3e10703c5da 100644
|
||||
index 013706889bb..37dca75651c 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -21,6 +21,7 @@
|
||||
@ -72,7 +72,7 @@ index 1adc1e094ec..3e10703c5da 100644
|
||||
+ NTSTATUS status;
|
||||
+ int i;
|
||||
+
|
||||
+ if ((status = server_get_unix_fd( handle, FILE_SPECIAL_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
|
||||
+ if ((status = unix_funcs->server_get_unix_fd( handle, FILE_SPECIAL_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
|
||||
+ return status;
|
||||
+
|
||||
+ if ((status = server_get_unix_name( handle, &unix_src )))
|
||||
@ -181,7 +181,7 @@ index 1adc1e094ec..3e10703c5da 100644
|
||||
return server_ioctl_file( handle, event, apc, apc_context, io, code,
|
||||
in_buffer, in_size, out_buffer, out_size );
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 33b8ead5528..e6fea0ff7fe 100644
|
||||
index 31c18454f0e..046b49c2d2b 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -38,6 +38,7 @@
|
||||
@ -192,7 +192,7 @@ index 33b8ead5528..e6fea0ff7fe 100644
|
||||
|
||||
#ifndef IO_COMPLETION_ALL_ACCESS
|
||||
#define IO_COMPLETION_ALL_ACCESS 0x001F0003
|
||||
@@ -4951,6 +4952,105 @@ static void test_file_readonly_access(void)
|
||||
@@ -4953,6 +4954,105 @@ static void test_file_readonly_access(void)
|
||||
DeleteFileW(path);
|
||||
}
|
||||
|
||||
@ -298,17 +298,17 @@ index 33b8ead5528..e6fea0ff7fe 100644
|
||||
START_TEST(file)
|
||||
{
|
||||
HMODULE hkernel32 = GetModuleHandleA("kernel32.dll");
|
||||
@@ -5021,4 +5121,5 @@ START_TEST(file)
|
||||
@@ -5023,4 +5123,5 @@ START_TEST(file)
|
||||
test_query_attribute_information_file();
|
||||
test_ioctl();
|
||||
test_flush_buffers_file();
|
||||
+ test_reparse_points();
|
||||
}
|
||||
diff --git a/include/Makefile.in b/include/Makefile.in
|
||||
index 3f29a374144..daeb92cd13b 100644
|
||||
index 9796dd8e5d9..410ae718e99 100644
|
||||
--- a/include/Makefile.in
|
||||
+++ b/include/Makefile.in
|
||||
@@ -510,6 +510,7 @@ SOURCES = \
|
||||
@@ -517,6 +517,7 @@ SOURCES = \
|
||||
ntddvdeo.h \
|
||||
ntdef.h \
|
||||
ntdsapi.h \
|
||||
@ -365,7 +365,7 @@ index 00000000000..21d42e17325
|
||||
+
|
||||
+#endif /* __WINE_NTIFS_H */
|
||||
diff --git a/include/wine/port.h b/include/wine/port.h
|
||||
index 8514a4a43bf..a17ffe7ab84 100644
|
||||
index 928730a41d7..e8434c73cca 100644
|
||||
--- a/include/wine/port.h
|
||||
+++ b/include/wine/port.h
|
||||
@@ -334,6 +334,15 @@ double rint(double x);
|
||||
@ -385,10 +385,10 @@ index 8514a4a43bf..a17ffe7ab84 100644
|
||||
int statvfs( const char *path, struct statvfs *buf );
|
||||
#endif
|
||||
diff --git a/libs/port/Makefile.in b/libs/port/Makefile.in
|
||||
index 08e143d26d0..1c850116785 100644
|
||||
index 7bc67fa3fee..1963afe2423 100644
|
||||
--- a/libs/port/Makefile.in
|
||||
+++ b/libs/port/Makefile.in
|
||||
@@ -15,6 +15,7 @@ C_SRCS = \
|
||||
@@ -14,6 +14,7 @@ C_SRCS = \
|
||||
pread.c \
|
||||
pwrite.c \
|
||||
readlink.c \
|
||||
@ -458,5 +458,5 @@ index 00000000000..f46f407ec71
|
||||
+}
|
||||
+#endif /* HAVE_RENAMEAT2 */
|
||||
--
|
||||
2.25.1
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 102451499f5de1148d55df7c7bdfe91257a13cef Mon Sep 17 00:00:00 2001
|
||||
From daf6a4fc8ae19ab9f9df39f958109c09232b5426 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 16 Jan 2014 20:57:57 -0700
|
||||
Subject: ntdll: Add support for reading junction points.
|
||||
Subject: [PATCH] ntdll: Add support for reading junction points.
|
||||
|
||||
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
---
|
||||
@ -10,10 +10,10 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
2 files changed, 119 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index 693caecffa..b9087cbf4d 100644
|
||||
index 37dca75651c..5a05217102d 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -1739,6 +1739,106 @@ cleanup:
|
||||
@@ -1763,6 +1763,106 @@ cleanup:
|
||||
}
|
||||
|
||||
|
||||
@ -35,7 +35,7 @@ index 693caecffa..b9087cbf4d 100644
|
||||
+ char *p;
|
||||
+ int i;
|
||||
+
|
||||
+ if ((status = server_get_unix_fd( handle, FILE_ANY_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
|
||||
+ if ((status = unix_funcs->server_get_unix_fd( handle, FILE_ANY_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
|
||||
+ return status;
|
||||
+
|
||||
+ if ((status = server_get_unix_name( handle, &unix_src )))
|
||||
@ -120,7 +120,7 @@ index 693caecffa..b9087cbf4d 100644
|
||||
/**************************************************************************
|
||||
* NtFsControlFile [NTDLL.@]
|
||||
* ZwFsControlFile [NTDLL.@]
|
||||
@@ -1824,6 +1924,12 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
|
||||
@@ -1848,6 +1948,12 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
|
||||
status = STATUS_SUCCESS;
|
||||
break;
|
||||
|
||||
@ -134,10 +134,10 @@ index 693caecffa..b9087cbf4d 100644
|
||||
{
|
||||
REPARSE_DATA_BUFFER *buffer = (REPARSE_DATA_BUFFER *)in_buffer;
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 322dadefe3..cdb608d305 100644
|
||||
index 046b49c2d2b..9197a234703 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -4868,9 +4868,10 @@ static void test_reparse_points(void)
|
||||
@@ -4990,9 +4990,10 @@ static void test_reparse_points(void)
|
||||
static const WCHAR dotW[] = {'.',0};
|
||||
REPARSE_DATA_BUFFER *buffer = NULL;
|
||||
DWORD dwret, dwLen, dwFlags;
|
||||
@ -149,7 +149,7 @@ index 322dadefe3..cdb608d305 100644
|
||||
BOOL bret;
|
||||
|
||||
/* Create a temporary folder for the junction point tests */
|
||||
@@ -4918,6 +4919,17 @@ static void test_reparse_points(void)
|
||||
@@ -5040,6 +5041,17 @@ static void test_reparse_points(void)
|
||||
buffer_len = build_reparse_buffer(nameW.Buffer, &buffer);
|
||||
bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0);
|
||||
ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError());
|
||||
@ -168,5 +168,5 @@ index 322dadefe3..cdb608d305 100644
|
||||
|
||||
cleanup:
|
||||
--
|
||||
2.17.1
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From b544a9cd5b1d8abe456125652e1a78b20bdc4a27 Mon Sep 17 00:00:00 2001
|
||||
From 10508a815ca734c8a94472f82e6c0f5ebe5fbbd9 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 16 Jan 2014 21:00:21 -0700
|
||||
Subject: ntdll: Add support for deleting junction points.
|
||||
Subject: [PATCH] ntdll: Add support for deleting junction points.
|
||||
|
||||
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
---
|
||||
@ -11,10 +11,10 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
3 files changed, 131 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index b9087cbf4d..dbbb54768b 100644
|
||||
index 5a05217102d..98f37af8793 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -1839,6 +1839,87 @@ cleanup:
|
||||
@@ -1863,6 +1863,87 @@ cleanup:
|
||||
}
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ index b9087cbf4d..dbbb54768b 100644
|
||||
+ NTSTATUS status;
|
||||
+ struct stat st;
|
||||
+
|
||||
+ if ((status = server_get_unix_fd( handle, FILE_SPECIAL_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
|
||||
+ if ((status = unix_funcs->server_get_unix_fd( handle, FILE_SPECIAL_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
|
||||
+ return status;
|
||||
+
|
||||
+ if ((status = server_get_unix_name( handle, &unix_name )))
|
||||
@ -102,7 +102,7 @@ index b9087cbf4d..dbbb54768b 100644
|
||||
/**************************************************************************
|
||||
* NtFsControlFile [NTDLL.@]
|
||||
* ZwFsControlFile [NTDLL.@]
|
||||
@@ -1924,6 +2005,22 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
|
||||
@@ -1948,6 +2029,22 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
|
||||
status = STATUS_SUCCESS;
|
||||
break;
|
||||
|
||||
@ -126,10 +126,10 @@ index b9087cbf4d..dbbb54768b 100644
|
||||
{
|
||||
REPARSE_DATA_BUFFER *buffer = (REPARSE_DATA_BUFFER *)out_buffer;
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index cdb608d305..bc6961bc61 100644
|
||||
index 9197a234703..6f6a49afd46 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -4863,12 +4863,15 @@ static void test_reparse_points(void)
|
||||
@@ -4985,12 +4985,15 @@ static void test_reparse_points(void)
|
||||
static const WCHAR reparseW[] = {'\\','r','e','p','a','r','s','e',0};
|
||||
WCHAR path[MAX_PATH], reparse_path[MAX_PATH], target_path[MAX_PATH];
|
||||
static const WCHAR targetW[] = {'\\','t','a','r','g','e','t',0};
|
||||
@ -145,7 +145,7 @@ index cdb608d305..bc6961bc61 100644
|
||||
UNICODE_STRING nameW;
|
||||
HANDLE handle;
|
||||
WCHAR *dest;
|
||||
@@ -4916,6 +4919,8 @@ static void test_reparse_points(void)
|
||||
@@ -5038,6 +5041,8 @@ static void test_reparse_points(void)
|
||||
win_skip("Failed to open junction point directory handle (0x%x).\n", GetLastError());
|
||||
goto cleanup;
|
||||
}
|
||||
@ -154,7 +154,7 @@ index cdb608d305..bc6961bc61 100644
|
||||
buffer_len = build_reparse_buffer(nameW.Buffer, &buffer);
|
||||
bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0);
|
||||
ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError());
|
||||
@@ -4930,6 +4935,22 @@ static void test_reparse_points(void)
|
||||
@@ -5052,6 +5057,22 @@ static void test_reparse_points(void)
|
||||
dest = &buffer->MountPointReparseBuffer.PathBuffer[buffer->MountPointReparseBuffer.SubstituteNameOffset/sizeof(WCHAR)];
|
||||
ok((memcmp(dest, nameW.Buffer, string_len) == 0), "Junction point destination does not match ('%s' != '%s')!\n",
|
||||
wine_dbgstr_w(dest), wine_dbgstr_w(nameW.Buffer));
|
||||
@ -177,7 +177,7 @@ index cdb608d305..bc6961bc61 100644
|
||||
CloseHandle(handle);
|
||||
|
||||
cleanup:
|
||||
@@ -4937,7 +4958,7 @@ cleanup:
|
||||
@@ -5059,7 +5080,7 @@ cleanup:
|
||||
pRtlFreeUnicodeString(&nameW);
|
||||
HeapFree(GetProcessHeap(), 0, buffer);
|
||||
bret = RemoveDirectoryW(reparse_path);
|
||||
@ -187,7 +187,7 @@ index cdb608d305..bc6961bc61 100644
|
||||
ok(bret, "Failed to remove temporary target directory!\n");
|
||||
RemoveDirectoryW(path);
|
||||
diff --git a/include/ntifs.h b/include/ntifs.h
|
||||
index 21d42e1732..4539b89d58 100644
|
||||
index 21d42e17325..4539b89d583 100644
|
||||
--- a/include/ntifs.h
|
||||
+++ b/include/ntifs.h
|
||||
@@ -39,4 +39,16 @@ typedef struct _REPARSE_DATA_BUFFER {
|
||||
@ -208,5 +208,5 @@ index 21d42e1732..4539b89d58 100644
|
||||
+
|
||||
#endif /* __WINE_NTIFS_H */
|
||||
--
|
||||
2.17.1
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 5706d02d2bb68f87d4687f8acef96dd59978b6f8 Mon Sep 17 00:00:00 2001
|
||||
From d1024118fbb0a73abd19ef937d13d4378a61992b Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 16 Jan 2014 21:06:24 -0700
|
||||
Subject: ntdll: Add support for absolute symlink creation.
|
||||
Subject: [PATCH] ntdll: Add support for absolute symlink creation.
|
||||
|
||||
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
---
|
||||
@ -11,10 +11,10 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
3 files changed, 143 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index dbbb54768b..62941774ec 100644
|
||||
index 98f37af8793..825344dab86 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -1648,17 +1648,33 @@ NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE handle, HANDLE event,
|
||||
@@ -1672,17 +1672,33 @@ NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE handle, HANDLE event,
|
||||
NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer)
|
||||
{
|
||||
BOOL src_allocated = FALSE, dest_allocated = FALSE, tempdir_created = FALSE;
|
||||
@ -48,10 +48,10 @@ index dbbb54768b..62941774ec 100644
|
||||
+ return STATUS_NOT_IMPLEMENTED;
|
||||
+ }
|
||||
+
|
||||
if ((status = server_get_unix_fd( handle, FILE_SPECIAL_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
|
||||
if ((status = unix_funcs->server_get_unix_fd( handle, FILE_SPECIAL_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
|
||||
return status;
|
||||
|
||||
@@ -1682,6 +1698,18 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer)
|
||||
@@ -1706,6 +1722,18 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer)
|
||||
strcat( magic_dest, "." );
|
||||
strcat( magic_dest, "/" );
|
||||
}
|
||||
@ -70,7 +70,7 @@ index dbbb54768b..62941774ec 100644
|
||||
strcat( magic_dest, unix_dest.Buffer );
|
||||
|
||||
/* Produce the link in a temporary location in the same folder */
|
||||
@@ -2034,6 +2062,7 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
|
||||
@@ -2058,6 +2086,7 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
|
||||
switch(buffer->ReparseTag)
|
||||
{
|
||||
case IO_REPARSE_TAG_MOUNT_POINT:
|
||||
@ -79,10 +79,10 @@ index dbbb54768b..62941774ec 100644
|
||||
break;
|
||||
default:
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 71e7dd56f3..05ba0fc57e 100644
|
||||
index 89f291536b2..92f03ab3d34 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -4832,26 +4832,50 @@ static void test_file_readonly_access(void)
|
||||
@@ -4954,26 +4954,50 @@ static void test_file_readonly_access(void)
|
||||
DeleteFileW(path);
|
||||
}
|
||||
|
||||
@ -141,7 +141,7 @@ index 71e7dd56f3..05ba0fc57e 100644
|
||||
lstrcpyW(subst_dest, filename);
|
||||
lstrcpyW(print_dest, &filename[prefix_len]);
|
||||
*pbuffer = buffer;
|
||||
@@ -4871,10 +4895,12 @@ static void test_reparse_points(void)
|
||||
@@ -4993,10 +5017,12 @@ static void test_reparse_points(void)
|
||||
REPARSE_DATA_BUFFER *buffer = NULL;
|
||||
DWORD dwret, dwLen, dwFlags, err;
|
||||
INT buffer_len, string_len;
|
||||
@ -155,7 +155,7 @@ index 71e7dd56f3..05ba0fc57e 100644
|
||||
BOOL bret;
|
||||
|
||||
/* Create a temporary folder for the junction point tests */
|
||||
@@ -4921,7 +4947,7 @@ static void test_reparse_points(void)
|
||||
@@ -5043,7 +5069,7 @@ static void test_reparse_points(void)
|
||||
}
|
||||
dwret = NtQueryInformationFile(handle, &iosb, &old_attrib, sizeof(old_attrib), FileBasicInformation);
|
||||
ok(dwret == STATUS_SUCCESS, "Failed to get junction point folder's attributes (0x%x).\n", dwret);
|
||||
@ -164,7 +164,7 @@ index 71e7dd56f3..05ba0fc57e 100644
|
||||
bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0);
|
||||
ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError());
|
||||
|
||||
@@ -4962,7 +4988,7 @@ static void test_reparse_points(void)
|
||||
@@ -5084,7 +5110,7 @@ static void test_reparse_points(void)
|
||||
HeapFree(GetProcessHeap(), 0, buffer);
|
||||
handle = CreateFileW(reparse_path, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING,
|
||||
FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, 0);
|
||||
@ -173,7 +173,7 @@ index 71e7dd56f3..05ba0fc57e 100644
|
||||
bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0);
|
||||
ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError());
|
||||
CloseHandle(handle);
|
||||
@@ -4977,7 +5003,7 @@ static void test_reparse_points(void)
|
||||
@@ -5099,7 +5125,7 @@ static void test_reparse_points(void)
|
||||
ok(bret, "Failed to create junction point target directory.\n");
|
||||
handle = CreateFileW(reparse_path, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING,
|
||||
FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, 0);
|
||||
@ -182,7 +182,7 @@ index 71e7dd56f3..05ba0fc57e 100644
|
||||
bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0);
|
||||
ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError());
|
||||
CloseHandle(handle);
|
||||
@@ -4990,14 +5016,73 @@ static void test_reparse_points(void)
|
||||
@@ -5112,14 +5138,73 @@ static void test_reparse_points(void)
|
||||
ok(dwret != (DWORD)~0, "Junction point doesn't exist (attributes: 0x%x)!\n", dwret);
|
||||
ok(dwret & FILE_ATTRIBUTE_REPARSE_POINT, "File is not a junction point! (attributes: 0x%x)\n", dwret);
|
||||
|
||||
@ -261,7 +261,7 @@ index 71e7dd56f3..05ba0fc57e 100644
|
||||
}
|
||||
|
||||
diff --git a/include/ntifs.h b/include/ntifs.h
|
||||
index 4539b89d58..ab3273d3f8 100644
|
||||
index 4539b89d583..ab3273d3f81 100644
|
||||
--- a/include/ntifs.h
|
||||
+++ b/include/ntifs.h
|
||||
@@ -21,11 +21,20 @@
|
||||
@ -294,5 +294,5 @@ index 4539b89d58..ab3273d3f8 100644
|
||||
typedef struct _REPARSE_GUID_DATA_BUFFER {
|
||||
DWORD ReparseTag;
|
||||
--
|
||||
2.17.1
|
||||
2.26.2
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 4906830101f0de0e165def16ff869ecc8a307b57 Mon Sep 17 00:00:00 2001
|
||||
From 22a440051f4dd3b63977a384735cf60fad7f28f5 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Sat, 30 Mar 2019 12:00:51 -0600
|
||||
Subject: [PATCH] ntdll: Correctly report file symbolic links as files.
|
||||
@ -10,7 +10,7 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
2 files changed, 84 insertions(+), 44 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index 29a928153b9..4902dff190a 100644
|
||||
index 74df2aed687..7483c71a8db 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -123,6 +123,9 @@ mode_t FILE_umask = 0;
|
||||
@ -73,7 +73,7 @@ index 29a928153b9..4902dff190a 100644
|
||||
- char *p;
|
||||
int i;
|
||||
|
||||
- if ((status = server_get_unix_fd( handle, FILE_ANY_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
|
||||
- if ((status = unix_funcs->server_get_unix_fd( handle, FILE_ANY_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
|
||||
- return status;
|
||||
-
|
||||
- if ((status = server_get_unix_name( handle, &unix_src )))
|
||||
@ -174,7 +174,7 @@ index 29a928153b9..4902dff190a 100644
|
||||
+ ULONG flags = 0;
|
||||
+ INT prefix_len;
|
||||
+
|
||||
+ if ((status = server_get_unix_fd( handle, FILE_ANY_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
|
||||
+ if ((status = unix_funcs->server_get_unix_fd( handle, FILE_ANY_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
|
||||
+ return status;
|
||||
+
|
||||
+ if ((status = server_get_unix_name( handle, &unix_src )))
|
||||
@ -191,10 +191,10 @@ index 29a928153b9..4902dff190a 100644
|
||||
/* convert the relative path into an absolute path */
|
||||
if (flags == SYMLINK_FLAG_RELATIVE)
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 21bd72c7358..a1654fb8e9b 100644
|
||||
index e0116491eee..7f983583268 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -5185,13 +5185,13 @@ static void test_reparse_points(void)
|
||||
@@ -5187,13 +5187,13 @@ static void test_reparse_points(void)
|
||||
|
||||
/* Check deleting a file symlink as if it were a directory */
|
||||
bret = RemoveDirectoryW(reparse_path);
|
||||
@ -210,7 +210,7 @@ index 21bd72c7358..a1654fb8e9b 100644
|
||||
ok(dwret & FILE_ATTRIBUTE_REPARSE_POINT, "File is not a symlink! (attributes: 0x%x)\n", dwret);
|
||||
|
||||
/* Delete the symlink as a file */
|
||||
@@ -5200,10 +5200,10 @@ static void test_reparse_points(void)
|
||||
@@ -5202,10 +5202,10 @@ static void test_reparse_points(void)
|
||||
|
||||
/* Create a blank slate for directory symlink tests */
|
||||
bret = CreateDirectoryW(reparse_path, NULL);
|
||||
@ -224,5 +224,5 @@ index 21bd72c7358..a1654fb8e9b 100644
|
||||
/* Create the directory symlink */
|
||||
HeapFree(GetProcessHeap(), 0, buffer);
|
||||
--
|
||||
2.25.1
|
||||
2.26.2
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 1111d9a53405b19b57a4385f7e2815b9c62238fa Mon Sep 17 00:00:00 2001
|
||||
From 157385f6bdf23c65b1375126f73dad87fcb503f4 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 6 Jun 2015 07:03:33 +0800
|
||||
Subject: [PATCH] ntdll: Improve stub of NtQueryEaFile.
|
||||
@ -10,10 +10,10 @@ Based on a patch by Qian Hong.
|
||||
2 files changed, 98 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index 2269ae311a..bed55c6fe7 100644
|
||||
index 7a49cb5d8db..b940201c5a8 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -3962,14 +3962,25 @@ NTSTATUS WINAPI NtQueryVolumeInformationFile( HANDLE handle, PIO_STATUS_BLOCK io
|
||||
@@ -4041,14 +4041,25 @@ NTSTATUS WINAPI NtQueryVolumeInformationFile( HANDLE handle, PIO_STATUS_BLOCK io
|
||||
* Success: 0. Attributes read into buffer
|
||||
* Failure: An NTSTATUS error code describing the error.
|
||||
*/
|
||||
@ -32,7 +32,7 @@ index 2269ae311a..bed55c6fe7 100644
|
||||
ea_list_len, ea_index, restart);
|
||||
- return STATUS_ACCESS_DENIED;
|
||||
+
|
||||
+ if ((status = server_get_unix_fd( handle, 0, &fd, &needs_close, NULL, NULL )) != STATUS_SUCCESS)
|
||||
+ if ((status = unix_funcs->server_get_unix_fd( handle, 0, &fd, &needs_close, NULL, NULL )) != STATUS_SUCCESS)
|
||||
+ return status;
|
||||
+
|
||||
+ if (buffer && length)
|
||||
@ -44,7 +44,7 @@ index 2269ae311a..bed55c6fe7 100644
|
||||
|
||||
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 1c3d0bc9a9..e210cbe9f2 100644
|
||||
index 44335514761..abd5903e804 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -85,6 +85,7 @@ static NTSTATUS (WINAPI *pNtQueryDirectoryFile)(HANDLE,HANDLE,PIO_APC_ROUTINE,PV
|
||||
@ -55,7 +55,7 @@ index 1c3d0bc9a9..e210cbe9f2 100644
|
||||
|
||||
static WCHAR fooW[] = {'f','o','o',0};
|
||||
|
||||
@@ -4994,6 +4995,86 @@ static void test_flush_buffers_file(void)
|
||||
@@ -4886,6 +4887,86 @@ static void test_flush_buffers_file(void)
|
||||
DeleteFileA(buffer);
|
||||
}
|
||||
|
||||
@ -142,7 +142,7 @@ index 1c3d0bc9a9..e210cbe9f2 100644
|
||||
static void test_file_readonly_access(void)
|
||||
{
|
||||
static const DWORD default_sharing = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE;
|
||||
@@ -5483,6 +5564,7 @@ START_TEST(file)
|
||||
@@ -5375,6 +5456,7 @@ START_TEST(file)
|
||||
pNtQueryVolumeInformationFile = (void *)GetProcAddress(hntdll, "NtQueryVolumeInformationFile");
|
||||
pNtQueryFullAttributesFile = (void *)GetProcAddress(hntdll, "NtQueryFullAttributesFile");
|
||||
pNtFlushBuffersFile = (void *)GetProcAddress(hntdll, "NtFlushBuffersFile");
|
||||
@ -150,7 +150,7 @@ index 1c3d0bc9a9..e210cbe9f2 100644
|
||||
|
||||
test_read_write();
|
||||
test_NtCreateFile();
|
||||
@@ -5513,6 +5595,7 @@ START_TEST(file)
|
||||
@@ -5404,6 +5486,7 @@ START_TEST(file)
|
||||
test_query_volume_information_file();
|
||||
test_query_attribute_information_file();
|
||||
test_ioctl();
|
||||
@ -159,5 +159,5 @@ index 1c3d0bc9a9..e210cbe9f2 100644
|
||||
test_reparse_points();
|
||||
}
|
||||
--
|
||||
2.23.0
|
||||
2.26.2
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 1a7a4c790294dc0eddd3202853c17967d6bb8e1a Mon Sep 17 00:00:00 2001
|
||||
From 325be924c400a713b5122b7de800e197ddc3f8b7 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Wesie <awesie@gmail.com>
|
||||
Date: Fri, 27 Jul 2018 01:22:59 -0500
|
||||
Subject: [PATCH] ntdll: Refactor RtlCreateUserThread into NtCreateThreadEx.
|
||||
@ -12,7 +12,7 @@ reported version), and expects it to be called whenever a thread is created.
|
||||
3 files changed, 187 insertions(+), 36 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
|
||||
index cb6a8ec8c4..16ec96bc56 100644
|
||||
index 42532bd9f1c..65fdc30d7a4 100644
|
||||
--- a/dlls/ntdll/ntdll.spec
|
||||
+++ b/dlls/ntdll/ntdll.spec
|
||||
@@ -182,7 +182,7 @@
|
||||
@ -25,10 +25,10 @@ index cb6a8ec8c4..16ec96bc56 100644
|
||||
@ stdcall NtCreateTimer(ptr long ptr long)
|
||||
@ stub NtCreateToken
|
||||
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
|
||||
index ceadcff1b2..2c4a9c4949 100644
|
||||
index 20934448fa3..9deb4397ba9 100644
|
||||
--- a/dlls/ntdll/thread.c
|
||||
+++ b/dlls/ntdll/thread.c
|
||||
@@ -413,34 +413,18 @@ static void start_thread( struct startup_info *info )
|
||||
@@ -390,34 +390,18 @@ static void start_thread( struct startup_info *info )
|
||||
/***********************************************************************
|
||||
* NtCreateThreadEx (NTDLL.@)
|
||||
*/
|
||||
@ -68,7 +68,7 @@ index ceadcff1b2..2c4a9c4949 100644
|
||||
HANDLE handle = 0, actctx = 0;
|
||||
TEB *teb = NULL;
|
||||
DWORD tid = 0;
|
||||
@@ -451,6 +435,33 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
|
||||
@@ -428,6 +412,33 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
|
||||
struct object_attributes *objattr = NULL;
|
||||
INITIAL_TEB stack;
|
||||
|
||||
@ -102,7 +102,7 @@ index ceadcff1b2..2c4a9c4949 100644
|
||||
if (process != NtCurrentProcess())
|
||||
{
|
||||
apc_call_t call;
|
||||
@@ -476,12 +487,7 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
|
||||
@@ -453,12 +464,7 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
|
||||
return result.create_thread.status;
|
||||
}
|
||||
|
||||
@ -114,9 +114,9 @@ index ceadcff1b2..2c4a9c4949 100644
|
||||
- }
|
||||
+ if ((status = alloc_object_attributes( thread_attr, &objattr, &len ))) return status;
|
||||
|
||||
if (server_pipe( request_pipe ) == -1)
|
||||
if (unix_funcs->server_pipe( request_pipe ) == -1)
|
||||
{
|
||||
@@ -493,7 +499,7 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
|
||||
@@ -470,7 +476,7 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
|
||||
SERVER_START_REQ( new_thread )
|
||||
{
|
||||
req->process = wine_server_obj_handle( process );
|
||||
@ -125,7 +125,7 @@ index ceadcff1b2..2c4a9c4949 100644
|
||||
req->suspend = suspended;
|
||||
req->request_fd = request_pipe[0];
|
||||
wine_server_add_data( req, objattr, len );
|
||||
@@ -552,20 +558,20 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
|
||||
@@ -529,20 +535,20 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
|
||||
thread_data->wait_fd[1] = -1;
|
||||
thread_data->start_stack = (char *)teb->Tib.StackBase;
|
||||
|
||||
@ -153,7 +153,7 @@ index ceadcff1b2..2c4a9c4949 100644
|
||||
pthread_sigmask( SIG_SETMASK, &sigset, NULL );
|
||||
|
||||
if (id) id->UniqueThread = ULongToHandle(tid);
|
||||
@@ -582,6 +588,124 @@ error:
|
||||
@@ -559,6 +565,124 @@ error:
|
||||
return status;
|
||||
}
|
||||
|
||||
@ -279,10 +279,10 @@ index ceadcff1b2..2c4a9c4949 100644
|
||||
/******************************************************************************
|
||||
* RtlGetNtGlobalFlags (NTDLL.@)
|
||||
diff --git a/include/winternl.h b/include/winternl.h
|
||||
index 733c8a33f6..5c3f7a05ff 100644
|
||||
index 199b8fc52f2..489b145937c 100644
|
||||
--- a/include/winternl.h
|
||||
+++ b/include/winternl.h
|
||||
@@ -2250,6 +2250,33 @@ typedef struct _NLSTABLEINFO
|
||||
@@ -2274,6 +2274,33 @@ typedef struct _NLSTABLEINFO
|
||||
USHORT *LowerCaseTable;
|
||||
} NLSTABLEINFO, *PNLSTABLEINFO;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From de02412f5e105f162e2e457d5bec698575fffc10 Mon Sep 17 00:00:00 2001
|
||||
From 5ea68740395cd0ae34fb4d74d540b30170645ac3 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 4 Oct 2014 02:35:44 +0200
|
||||
Subject: [PATCH] ntdll: Trigger write watches before passing userdata pointer
|
||||
@ -10,7 +10,7 @@ Subject: [PATCH] ntdll: Trigger write watches before passing userdata pointer
|
||||
2 files changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
|
||||
index 381062cceb1..e7c6ca63fe2 100644
|
||||
index 825f8451904..b414401634a 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -1557,7 +1557,6 @@ todo_wine
|
||||
@ -22,28 +22,25 @@ index 381062cceb1..e7c6ca63fe2 100644
|
||||
"Access and/or AccessStatus were changed!\n");
|
||||
|
||||
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
|
||||
index 046cf601ebf..3d88b47a744 100644
|
||||
index ed4e3f25531..921dec86c82 100644
|
||||
--- a/dlls/ntdll/server.c
|
||||
+++ b/dlls/ntdll/server.c
|
||||
@@ -406,9 +406,18 @@ unsigned int server_call_unlocked( void *req_ptr )
|
||||
@@ -166,6 +166,15 @@ static DECLSPEC_NORETURN void server_protocol_perror( const char *err )
|
||||
*/
|
||||
unsigned int CDECL wine_server_call( void *req_ptr )
|
||||
{
|
||||
+ struct __server_request_info * const req = req_ptr;
|
||||
sigset_t old_set;
|
||||
unsigned int ret;
|
||||
|
||||
+
|
||||
+ /* trigger write watches, otherwise read() might return EFAULT */
|
||||
+ if (req->u.req.request_header.reply_size &&
|
||||
+ !virtual_check_buffer_for_write( req->reply_data, req->u.req.request_header.reply_size ))
|
||||
+ {
|
||||
+ ret = STATUS_ACCESS_VIOLATION;
|
||||
+ return ret;
|
||||
+ return STATUS_ACCESS_VIOLATION;
|
||||
+ }
|
||||
+
|
||||
pthread_sigmask( SIG_BLOCK, &server_block_set, &old_set );
|
||||
ret = server_call_unlocked( req_ptr );
|
||||
pthread_sigmask( SIG_SETMASK, &old_set, NULL );
|
||||
return unix_funcs->server_call( req_ptr );
|
||||
}
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From acdd5aaf5d4f618a96f21710a8ee2f44a994194c Mon Sep 17 00:00:00 2001
|
||||
From 627618459891aa36fc9a9ac0c04b7035d2272fb1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Gabriel=20Iv=C4=83ncescu?= <gabrielopcode@gmail.com>
|
||||
Date: Fri, 24 May 2019 15:09:35 +0300
|
||||
Subject: [PATCH] ntdll/server: Mark drive_c as case-insensitive when created
|
||||
@ -9,14 +9,14 @@ Content-Transfer-Encoding: 8bit
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47099
|
||||
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
|
||||
---
|
||||
dlls/ntdll/server.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
|
||||
dlls/ntdll/unix/server.c | 45 ++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 45 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
|
||||
index bc25e242a77..f2109dd1ef0 100644
|
||||
--- a/dlls/ntdll/server.c
|
||||
+++ b/dlls/ntdll/server.c
|
||||
@@ -54,6 +54,12 @@
|
||||
diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c
|
||||
index 8dc3f33bc80..0e6c9d90281 100644
|
||||
--- a/dlls/ntdll/unix/server.c
|
||||
+++ b/dlls/ntdll/unix/server.c
|
||||
@@ -55,6 +55,12 @@
|
||||
#ifdef HAVE_SYS_MMAN_H
|
||||
#include <sys/mman.h>
|
||||
#endif
|
||||
@ -29,7 +29,7 @@ index bc25e242a77..f2109dd1ef0 100644
|
||||
#ifdef HAVE_SYS_PRCTL_H
|
||||
# include <sys/prctl.h>
|
||||
#endif
|
||||
@@ -87,6 +93,22 @@
|
||||
@@ -93,6 +99,22 @@
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(server);
|
||||
|
||||
@ -49,10 +49,10 @@ index bc25e242a77..f2109dd1ef0 100644
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
/* Some versions of glibc don't define this */
|
||||
#ifndef SCM_RIGHTS
|
||||
#define SCM_RIGHTS 1
|
||||
@@ -1380,6 +1402,28 @@ void init_paths(void)
|
||||
#ifndef MSG_CMSG_CLOEXEC
|
||||
#define MSG_CMSG_CLOEXEC 0
|
||||
#endif
|
||||
@@ -729,6 +751,28 @@ static const char *init_server_dir( dev_t dev, ino_t ino )
|
||||
}
|
||||
|
||||
|
||||
@ -81,7 +81,7 @@ index bc25e242a77..f2109dd1ef0 100644
|
||||
/***********************************************************************
|
||||
* setup_config_dir
|
||||
*
|
||||
@@ -1416,6 +1460,7 @@ static int setup_config_dir(void)
|
||||
@@ -765,6 +809,7 @@ static int setup_config_dir(void)
|
||||
if (!mkdir( "dosdevices", 0777 ))
|
||||
{
|
||||
mkdir( "drive_c", 0777 );
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
From 600ea7fc2412aab4970a3c7c54cd00c801a79f7f Mon Sep 17 00:00:00 2001
|
||||
From adbfc52aca7f4bd1b103dde52f0beb3e6ea52c14 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Fri, 4 Dec 2015 10:36:47 +0100
|
||||
Subject: [PATCH] server: Introduce a new alloc_handle object callback. (v2)
|
||||
@ -14,7 +14,6 @@ Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
|
||||
server/debugger.c | 2 ++
|
||||
server/device.c | 4 ++++
|
||||
server/directory.c | 2 ++
|
||||
server/esync.c | 1 +
|
||||
server/event.c | 2 ++
|
||||
server/fd.c | 4 ++++
|
||||
server/file.c | 1 +
|
||||
@ -40,13 +39,13 @@ Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
|
||||
server/timer.c | 1 +
|
||||
server/token.c | 1 +
|
||||
server/winstation.c | 2 ++
|
||||
35 files changed, 79 insertions(+), 4 deletions(-)
|
||||
34 files changed, 78 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/server/async.c b/server/async.c
|
||||
index cadd3563232..4d39c4896f6 100644
|
||||
index 03994e8fac2..9feafd01847 100644
|
||||
--- a/server/async.c
|
||||
+++ b/server/async.c
|
||||
@@ -82,6 +82,7 @@ static const struct object_ops async_ops =
|
||||
@@ -81,6 +81,7 @@ static const struct object_ops async_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -54,7 +53,7 @@ index cadd3563232..4d39c4896f6 100644
|
||||
no_close_handle, /* close_handle */
|
||||
async_destroy /* destroy */
|
||||
};
|
||||
@@ -496,6 +497,7 @@ static const struct object_ops iosb_ops =
|
||||
@@ -494,6 +495,7 @@ static const struct object_ops iosb_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -63,10 +62,10 @@ index cadd3563232..4d39c4896f6 100644
|
||||
iosb_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/atom.c b/server/atom.c
|
||||
index a3b0d83f68d..96717a154f0 100644
|
||||
index 57aff7b8918..04e301b0bc9 100644
|
||||
--- a/server/atom.c
|
||||
+++ b/server/atom.c
|
||||
@@ -92,6 +92,7 @@ static const struct object_ops atom_table_ops =
|
||||
@@ -91,6 +91,7 @@ static const struct object_ops atom_table_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -75,10 +74,10 @@ index a3b0d83f68d..96717a154f0 100644
|
||||
atom_table_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/change.c b/server/change.c
|
||||
index 9f07be705d7..1c384310d59 100644
|
||||
index a8f3329c722..d0744e72f07 100644
|
||||
--- a/server/change.c
|
||||
+++ b/server/change.c
|
||||
@@ -127,6 +127,7 @@ static const struct object_ops dir_ops =
|
||||
@@ -126,6 +126,7 @@ static const struct object_ops dir_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -87,10 +86,10 @@ index 9f07be705d7..1c384310d59 100644
|
||||
dir_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/clipboard.c b/server/clipboard.c
|
||||
index 673aabbd080..588875439a5 100644
|
||||
index e6884dd75fa..dcc92507bc1 100644
|
||||
--- a/server/clipboard.c
|
||||
+++ b/server/clipboard.c
|
||||
@@ -89,6 +89,7 @@ static const struct object_ops clipboard_ops =
|
||||
@@ -88,6 +88,7 @@ static const struct object_ops clipboard_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -99,10 +98,10 @@ index 673aabbd080..588875439a5 100644
|
||||
clipboard_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/completion.c b/server/completion.c
|
||||
index 4da2ed844aa..857662afb29 100644
|
||||
index db04727b93b..e72a155eeeb 100644
|
||||
--- a/server/completion.c
|
||||
+++ b/server/completion.c
|
||||
@@ -76,6 +76,7 @@ static const struct object_ops completion_ops =
|
||||
@@ -75,6 +75,7 @@ static const struct object_ops completion_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -111,10 +110,10 @@ index 4da2ed844aa..857662afb29 100644
|
||||
completion_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/console.c b/server/console.c
|
||||
index fdf3d3c6889..806293a546a 100644
|
||||
index 302be6a1c1a..26545baea47 100644
|
||||
--- a/server/console.c
|
||||
+++ b/server/console.c
|
||||
@@ -97,6 +97,7 @@ static const struct object_ops console_input_ops =
|
||||
@@ -95,6 +95,7 @@ static const struct object_ops console_input_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -122,7 +121,7 @@ index fdf3d3c6889..806293a546a 100644
|
||||
no_close_handle, /* close_handle */
|
||||
console_input_destroy /* destroy */
|
||||
};
|
||||
@@ -135,6 +136,7 @@ static const struct object_ops console_input_events_ops =
|
||||
@@ -130,6 +131,7 @@ static const struct object_ops console_input_events_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -130,7 +129,7 @@ index fdf3d3c6889..806293a546a 100644
|
||||
no_close_handle, /* close_handle */
|
||||
console_input_events_destroy /* destroy */
|
||||
};
|
||||
@@ -197,6 +199,7 @@ static const struct object_ops screen_buffer_ops =
|
||||
@@ -191,6 +193,7 @@ static const struct object_ops screen_buffer_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -139,10 +138,10 @@ index fdf3d3c6889..806293a546a 100644
|
||||
screen_buffer_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/debugger.c b/server/debugger.c
|
||||
index ad581be8458..0bab7485101 100644
|
||||
index 401ce36a47a..b7746d55c0e 100644
|
||||
--- a/server/debugger.c
|
||||
+++ b/server/debugger.c
|
||||
@@ -85,6 +85,7 @@ static const struct object_ops debug_event_ops =
|
||||
@@ -84,6 +84,7 @@ static const struct object_ops debug_event_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -150,7 +149,7 @@ index ad581be8458..0bab7485101 100644
|
||||
no_close_handle, /* close_handle */
|
||||
debug_event_destroy /* destroy */
|
||||
};
|
||||
@@ -113,6 +114,7 @@ static const struct object_ops debug_ctx_ops =
|
||||
@@ -111,6 +112,7 @@ static const struct object_ops debug_ctx_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -159,10 +158,10 @@ index ad581be8458..0bab7485101 100644
|
||||
debug_ctx_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/device.c b/server/device.c
|
||||
index 17260340aad..3380d00fd54 100644
|
||||
index 01e08f295f7..90150e1b251 100644
|
||||
--- a/server/device.c
|
||||
+++ b/server/device.c
|
||||
@@ -81,6 +81,7 @@ static const struct object_ops irp_call_ops =
|
||||
@@ -79,6 +79,7 @@ static const struct object_ops irp_call_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -170,7 +169,7 @@ index 17260340aad..3380d00fd54 100644
|
||||
no_close_handle, /* close_handle */
|
||||
irp_call_destroy /* destroy */
|
||||
};
|
||||
@@ -123,6 +124,7 @@ static const struct object_ops device_manager_ops =
|
||||
@@ -118,6 +119,7 @@ static const struct object_ops device_manager_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -178,7 +177,7 @@ index 17260340aad..3380d00fd54 100644
|
||||
no_close_handle, /* close_handle */
|
||||
device_manager_destroy /* destroy */
|
||||
};
|
||||
@@ -167,6 +169,7 @@ static const struct object_ops device_ops =
|
||||
@@ -161,6 +163,7 @@ static const struct object_ops device_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
device_open_file, /* open_file */
|
||||
device_get_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -186,7 +185,7 @@ index 17260340aad..3380d00fd54 100644
|
||||
no_close_handle, /* close_handle */
|
||||
device_destroy /* destroy */
|
||||
};
|
||||
@@ -217,6 +220,7 @@ static const struct object_ops device_file_ops =
|
||||
@@ -210,6 +213,7 @@ static const struct object_ops device_file_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
device_file_get_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -195,10 +194,10 @@ index 17260340aad..3380d00fd54 100644
|
||||
device_file_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/directory.c b/server/directory.c
|
||||
index 8083c686e11..a1e631d435f 100644
|
||||
index 74cbb3ca974..0092b37b0be 100644
|
||||
--- a/server/directory.c
|
||||
+++ b/server/directory.c
|
||||
@@ -69,6 +69,7 @@ static const struct object_ops object_type_ops =
|
||||
@@ -68,6 +68,7 @@ static const struct object_ops object_type_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -206,7 +205,7 @@ index 8083c686e11..a1e631d435f 100644
|
||||
no_close_handle, /* close_handle */
|
||||
no_destroy /* destroy */
|
||||
};
|
||||
@@ -106,6 +107,7 @@ static const struct object_ops directory_ops =
|
||||
@@ -104,6 +105,7 @@ static const struct object_ops directory_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -214,31 +213,19 @@ index 8083c686e11..a1e631d435f 100644
|
||||
no_close_handle, /* close_handle */
|
||||
directory_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/esync.c b/server/esync.c
|
||||
index 1b035bdb066..4563b97573a 100644
|
||||
--- a/server/esync.c
|
||||
+++ b/server/esync.c
|
||||
@@ -140,6 +140,7 @@ const struct object_ops esync_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
+ no_alloc_handle, /* alloc_handle */
|
||||
no_close_handle, /* close_handle */
|
||||
esync_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/event.c b/server/event.c
|
||||
index 79287e7edc0..ad8fddbfade 100644
|
||||
index d339d85aa45..a78d73d9e78 100644
|
||||
--- a/server/event.c
|
||||
+++ b/server/event.c
|
||||
@@ -76,6 +76,7 @@ static const struct object_ops event_ops =
|
||||
@@ -71,6 +71,7 @@ static const struct object_ops event_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
event_get_kernel_obj_list, /* get_kernel_obj_list */
|
||||
+ no_alloc_handle, /* alloc_handle */
|
||||
no_close_handle, /* close_handle */
|
||||
event_destroy /* destroy */
|
||||
no_destroy /* destroy */
|
||||
};
|
||||
@@ -111,6 +112,7 @@ static const struct object_ops keyed_event_ops =
|
||||
@@ -105,6 +106,7 @@ static const struct object_ops keyed_event_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -247,10 +234,10 @@ index 79287e7edc0..ad8fddbfade 100644
|
||||
no_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/fd.c b/server/fd.c
|
||||
index 34e925f0ed7..6a539a282d7 100644
|
||||
index 06d1d81bdb0..81089321e53 100644
|
||||
--- a/server/fd.c
|
||||
+++ b/server/fd.c
|
||||
@@ -226,6 +226,7 @@ static const struct object_ops fd_ops =
|
||||
@@ -220,6 +220,7 @@ static const struct object_ops fd_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -258,7 +245,7 @@ index 34e925f0ed7..6a539a282d7 100644
|
||||
no_close_handle, /* close_handle */
|
||||
fd_destroy /* destroy */
|
||||
};
|
||||
@@ -267,6 +268,7 @@ static const struct object_ops device_ops =
|
||||
@@ -260,6 +261,7 @@ static const struct object_ops device_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -266,7 +253,7 @@ index 34e925f0ed7..6a539a282d7 100644
|
||||
no_close_handle, /* close_handle */
|
||||
device_destroy /* destroy */
|
||||
};
|
||||
@@ -307,6 +309,7 @@ static const struct object_ops inode_ops =
|
||||
@@ -299,6 +301,7 @@ static const struct object_ops inode_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -274,7 +261,7 @@ index 34e925f0ed7..6a539a282d7 100644
|
||||
no_close_handle, /* close_handle */
|
||||
inode_destroy /* destroy */
|
||||
};
|
||||
@@ -349,6 +352,7 @@ static const struct object_ops file_lock_ops =
|
||||
@@ -340,6 +343,7 @@ static const struct object_ops file_lock_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -283,10 +270,10 @@ index 34e925f0ed7..6a539a282d7 100644
|
||||
no_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/file.c b/server/file.c
|
||||
index 8ab254d1abf..7d36ad8e1fb 100644
|
||||
index bce202138e0..d4697c953ac 100644
|
||||
--- a/server/file.c
|
||||
+++ b/server/file.c
|
||||
@@ -98,6 +98,7 @@ static const struct object_ops file_ops =
|
||||
@@ -97,6 +97,7 @@ static const struct object_ops file_ops =
|
||||
NULL, /* unlink_name */
|
||||
file_open_file, /* open_file */
|
||||
file_get_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -295,10 +282,10 @@ index 8ab254d1abf..7d36ad8e1fb 100644
|
||||
file_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/handle.c b/server/handle.c
|
||||
index 6ca4489a828..879098aee85 100644
|
||||
index a2a8bb5479c..47378259df4 100644
|
||||
--- a/server/handle.c
|
||||
+++ b/server/handle.c
|
||||
@@ -135,6 +135,7 @@ static const struct object_ops handle_table_ops =
|
||||
@@ -134,6 +134,7 @@ static const struct object_ops handle_table_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -306,7 +293,7 @@ index 6ca4489a828..879098aee85 100644
|
||||
no_close_handle, /* close_handle */
|
||||
handle_table_destroy /* destroy */
|
||||
};
|
||||
@@ -234,7 +235,7 @@ static int grow_handle_table( struct handle_table *table )
|
||||
@@ -233,7 +234,7 @@ static int grow_handle_table( struct handle_table *table )
|
||||
}
|
||||
|
||||
/* allocate the first free entry in the handle table */
|
||||
@ -315,7 +302,7 @@ index 6ca4489a828..879098aee85 100644
|
||||
{
|
||||
struct handle_entry *entry = table->entries + table->free;
|
||||
int i;
|
||||
@@ -250,6 +251,10 @@ static obj_handle_t alloc_entry( struct handle_table *table, void *obj, unsigned
|
||||
@@ -249,6 +250,10 @@ static obj_handle_t alloc_entry( struct handle_table *table, void *obj, unsigned
|
||||
table->free = i + 1;
|
||||
entry->ptr = grab_object_for_handle( obj );
|
||||
entry->access = access;
|
||||
@ -326,7 +313,7 @@ index 6ca4489a828..879098aee85 100644
|
||||
return index_to_handle(i);
|
||||
}
|
||||
|
||||
@@ -375,7 +380,11 @@ struct handle_table *copy_handle_table( struct process *process, struct process
|
||||
@@ -374,7 +379,11 @@ struct handle_table *copy_handle_table( struct process *process, struct process
|
||||
for (i = 0; i <= table->last; i++, ptr++)
|
||||
{
|
||||
if (!ptr->ptr) continue;
|
||||
@ -340,10 +327,10 @@ index 6ca4489a828..879098aee85 100644
|
||||
}
|
||||
}
|
||||
diff --git a/server/hook.c b/server/hook.c
|
||||
index f5d7639fd74..22b14828977 100644
|
||||
index ec6be582482..c2a26eb4dff 100644
|
||||
--- a/server/hook.c
|
||||
+++ b/server/hook.c
|
||||
@@ -93,6 +93,7 @@ static const struct object_ops hook_table_ops =
|
||||
@@ -92,6 +92,7 @@ static const struct object_ops hook_table_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -352,10 +339,10 @@ index f5d7639fd74..22b14828977 100644
|
||||
hook_table_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/mailslot.c b/server/mailslot.c
|
||||
index 3523e18d8f6..f3e69f0b34f 100644
|
||||
index 781e6f3141a..6f0321393e2 100644
|
||||
--- a/server/mailslot.c
|
||||
+++ b/server/mailslot.c
|
||||
@@ -90,6 +90,7 @@ static const struct object_ops mailslot_ops =
|
||||
@@ -89,6 +89,7 @@ static const struct object_ops mailslot_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
mailslot_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -363,7 +350,7 @@ index 3523e18d8f6..f3e69f0b34f 100644
|
||||
fd_close_handle, /* close_handle */
|
||||
mailslot_destroy /* destroy */
|
||||
};
|
||||
@@ -148,6 +149,7 @@ static const struct object_ops mail_writer_ops =
|
||||
@@ -146,6 +147,7 @@ static const struct object_ops mail_writer_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -371,7 +358,7 @@ index 3523e18d8f6..f3e69f0b34f 100644
|
||||
fd_close_handle, /* close_handle */
|
||||
mail_writer_destroy /* destroy */
|
||||
};
|
||||
@@ -207,6 +209,7 @@ static const struct object_ops mailslot_device_ops =
|
||||
@@ -204,6 +206,7 @@ static const struct object_ops mailslot_device_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
mailslot_device_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -380,10 +367,10 @@ index 3523e18d8f6..f3e69f0b34f 100644
|
||||
mailslot_device_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/mapping.c b/server/mapping.c
|
||||
index b19403b18f9..a882d0cda00 100644
|
||||
index 0941dd87c05..42c207b3367 100644
|
||||
--- a/server/mapping.c
|
||||
+++ b/server/mapping.c
|
||||
@@ -103,6 +103,7 @@ static const struct object_ops ranges_ops =
|
||||
@@ -79,6 +79,7 @@ static const struct object_ops ranges_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -391,7 +378,7 @@ index b19403b18f9..a882d0cda00 100644
|
||||
no_close_handle, /* close_handle */
|
||||
ranges_destroy /* destroy */
|
||||
};
|
||||
@@ -139,6 +140,7 @@ static const struct object_ops shared_map_ops =
|
||||
@@ -114,6 +115,7 @@ static const struct object_ops shared_map_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -399,7 +386,7 @@ index b19403b18f9..a882d0cda00 100644
|
||||
no_close_handle, /* close_handle */
|
||||
shared_map_destroy /* destroy */
|
||||
};
|
||||
@@ -196,6 +198,7 @@ static const struct object_ops mapping_ops =
|
||||
@@ -171,6 +173,7 @@ static const struct object_ops mapping_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -408,10 +395,10 @@ index b19403b18f9..a882d0cda00 100644
|
||||
mapping_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/mutex.c b/server/mutex.c
|
||||
index f5f969b3d6e..a4ab6bdb3df 100644
|
||||
index 8a8f7248eae..3754c35acbb 100644
|
||||
--- a/server/mutex.c
|
||||
+++ b/server/mutex.c
|
||||
@@ -73,6 +73,7 @@ static const struct object_ops mutex_ops =
|
||||
@@ -72,6 +72,7 @@ static const struct object_ops mutex_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -420,10 +407,10 @@ index f5f969b3d6e..a4ab6bdb3df 100644
|
||||
mutex_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/named_pipe.c b/server/named_pipe.c
|
||||
index 51a43e24404..6cd6c0623e0 100644
|
||||
index f97b1416415..ef611f49918 100644
|
||||
--- a/server/named_pipe.c
|
||||
+++ b/server/named_pipe.c
|
||||
@@ -130,6 +130,7 @@ static const struct object_ops named_pipe_ops =
|
||||
@@ -129,6 +129,7 @@ static const struct object_ops named_pipe_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
named_pipe_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -431,7 +418,7 @@ index 51a43e24404..6cd6c0623e0 100644
|
||||
no_close_handle, /* close_handle */
|
||||
named_pipe_destroy /* destroy */
|
||||
};
|
||||
@@ -173,6 +174,7 @@ static const struct object_ops pipe_server_ops =
|
||||
@@ -171,6 +172,7 @@ static const struct object_ops pipe_server_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -439,7 +426,7 @@ index 51a43e24404..6cd6c0623e0 100644
|
||||
fd_close_handle, /* close_handle */
|
||||
pipe_server_destroy /* destroy */
|
||||
};
|
||||
@@ -216,6 +218,7 @@ static const struct object_ops pipe_client_ops =
|
||||
@@ -213,6 +215,7 @@ static const struct object_ops pipe_client_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -447,7 +434,7 @@ index 51a43e24404..6cd6c0623e0 100644
|
||||
fd_close_handle, /* close_handle */
|
||||
pipe_end_destroy /* destroy */
|
||||
};
|
||||
@@ -263,7 +266,8 @@ static const struct object_ops named_pipe_device_ops =
|
||||
@@ -259,7 +262,8 @@ static const struct object_ops named_pipe_device_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
named_pipe_device_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -457,7 +444,7 @@ index 51a43e24404..6cd6c0623e0 100644
|
||||
named_pipe_device_destroy /* destroy */
|
||||
};
|
||||
|
||||
@@ -293,6 +297,7 @@ static const struct object_ops named_pipe_device_file_ops =
|
||||
@@ -288,6 +292,7 @@ static const struct object_ops named_pipe_device_file_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -481,10 +468,10 @@ index dacfe1d71a0..55321dddd87 100644
|
||||
{
|
||||
return 1; /* ok to close */
|
||||
diff --git a/server/object.h b/server/object.h
|
||||
index e0e8515ba15..c983d1667a8 100644
|
||||
index 3144eb56678..a903479bb69 100644
|
||||
--- a/server/object.h
|
||||
+++ b/server/object.h
|
||||
@@ -93,8 +93,10 @@ struct object_ops
|
||||
@@ -91,8 +91,10 @@ struct object_ops
|
||||
unsigned int options);
|
||||
/* return list of kernel objects */
|
||||
struct list *(*get_kernel_obj_list)(struct object *);
|
||||
@ -496,7 +483,7 @@ index e0e8515ba15..c983d1667a8 100644
|
||||
/* destroy on refcount == 0 */
|
||||
void (*destroy)(struct object *);
|
||||
};
|
||||
@@ -170,6 +172,7 @@ extern void default_unlink_name( struct object *obj, struct object_name *name );
|
||||
@@ -168,6 +170,7 @@ extern void default_unlink_name( struct object *obj, struct object_name *name );
|
||||
extern struct object *no_open_file( struct object *obj, unsigned int access, unsigned int sharing,
|
||||
unsigned int options );
|
||||
extern struct list *no_kernel_obj_list( struct object *obj );
|
||||
@ -505,10 +492,10 @@ index e0e8515ba15..c983d1667a8 100644
|
||||
extern void no_destroy( struct object *obj );
|
||||
#ifdef DEBUG_OBJECTS
|
||||
diff --git a/server/process.c b/server/process.c
|
||||
index 69e5a37eccb..d497723fea5 100644
|
||||
index 76bb6faa91a..f76bc7167bf 100644
|
||||
--- a/server/process.c
|
||||
+++ b/server/process.c
|
||||
@@ -91,6 +91,7 @@ static const struct object_ops process_ops =
|
||||
@@ -88,6 +88,7 @@ static const struct object_ops process_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
process_get_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -516,7 +503,7 @@ index 69e5a37eccb..d497723fea5 100644
|
||||
no_close_handle, /* close_handle */
|
||||
process_destroy /* destroy */
|
||||
};
|
||||
@@ -142,6 +143,7 @@ static const struct object_ops startup_info_ops =
|
||||
@@ -138,6 +139,7 @@ static const struct object_ops startup_info_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -524,7 +511,7 @@ index 69e5a37eccb..d497723fea5 100644
|
||||
no_close_handle, /* close_handle */
|
||||
startup_info_destroy /* destroy */
|
||||
};
|
||||
@@ -187,6 +189,7 @@ static const struct object_ops job_ops =
|
||||
@@ -182,6 +184,7 @@ static const struct object_ops job_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -533,10 +520,10 @@ index 69e5a37eccb..d497723fea5 100644
|
||||
job_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/queue.c b/server/queue.c
|
||||
index ad3ed008f61..3b3cc3910aa 100644
|
||||
index 84ee0f9a4ea..a963c68c45d 100644
|
||||
--- a/server/queue.c
|
||||
+++ b/server/queue.c
|
||||
@@ -194,6 +194,7 @@ static const struct object_ops msg_queue_ops =
|
||||
@@ -182,6 +182,7 @@ static const struct object_ops msg_queue_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -544,7 +531,7 @@ index ad3ed008f61..3b3cc3910aa 100644
|
||||
no_close_handle, /* close_handle */
|
||||
msg_queue_destroy /* destroy */
|
||||
};
|
||||
@@ -231,6 +232,7 @@ static const struct object_ops thread_input_ops =
|
||||
@@ -218,6 +219,7 @@ static const struct object_ops thread_input_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -553,10 +540,10 @@ index ad3ed008f61..3b3cc3910aa 100644
|
||||
thread_input_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/registry.c b/server/registry.c
|
||||
index ec30b7b2355..db15f225714 100644
|
||||
index dcbb3f791e1..6e5eddcd257 100644
|
||||
--- a/server/registry.c
|
||||
+++ b/server/registry.c
|
||||
@@ -171,6 +171,7 @@ static const struct object_ops key_ops =
|
||||
@@ -170,6 +170,7 @@ static const struct object_ops key_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -565,10 +552,10 @@ index ec30b7b2355..db15f225714 100644
|
||||
key_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/request.c b/server/request.c
|
||||
index 4807ca9398f..6d2011fb444 100644
|
||||
index 4c1f30a5fe7..42cc83c3037 100644
|
||||
--- a/server/request.c
|
||||
+++ b/server/request.c
|
||||
@@ -108,6 +108,7 @@ static const struct object_ops master_socket_ops =
|
||||
@@ -107,6 +107,7 @@ static const struct object_ops master_socket_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -577,10 +564,10 @@ index 4807ca9398f..6d2011fb444 100644
|
||||
master_socket_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/semaphore.c b/server/semaphore.c
|
||||
index 36e3e79e5d6..1913871859a 100644
|
||||
index 6e2415fd79a..457cd6f4558 100644
|
||||
--- a/server/semaphore.c
|
||||
+++ b/server/semaphore.c
|
||||
@@ -70,6 +70,7 @@ static const struct object_ops semaphore_ops =
|
||||
@@ -69,6 +69,7 @@ static const struct object_ops semaphore_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -589,10 +576,10 @@ index 36e3e79e5d6..1913871859a 100644
|
||||
no_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/serial.c b/server/serial.c
|
||||
index 2848e1dc795..966b8bc6b81 100644
|
||||
index 4292472613a..ecb9a9350ad 100644
|
||||
--- a/server/serial.c
|
||||
+++ b/server/serial.c
|
||||
@@ -104,6 +104,7 @@ static const struct object_ops serial_ops =
|
||||
@@ -103,6 +103,7 @@ static const struct object_ops serial_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -601,10 +588,10 @@ index 2848e1dc795..966b8bc6b81 100644
|
||||
serial_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/signal.c b/server/signal.c
|
||||
index ca200394f7e..a2e0efef121 100644
|
||||
index c81f6b8e989..b8dd87d86f1 100644
|
||||
--- a/server/signal.c
|
||||
+++ b/server/signal.c
|
||||
@@ -79,6 +79,7 @@ static const struct object_ops handler_ops =
|
||||
@@ -78,6 +78,7 @@ static const struct object_ops handler_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -613,10 +600,10 @@ index ca200394f7e..a2e0efef121 100644
|
||||
handler_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/snapshot.c b/server/snapshot.c
|
||||
index 7d0d742ee9e..2ad9d5d7809 100644
|
||||
index a0f2ea17a3e..d5ba720980a 100644
|
||||
--- a/server/snapshot.c
|
||||
+++ b/server/snapshot.c
|
||||
@@ -73,6 +73,7 @@ static const struct object_ops snapshot_ops =
|
||||
@@ -72,6 +72,7 @@ static const struct object_ops snapshot_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -625,10 +612,10 @@ index 7d0d742ee9e..2ad9d5d7809 100644
|
||||
snapshot_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/sock.c b/server/sock.c
|
||||
index 4a10aaccf94..f951f23d64a 100644
|
||||
index 5095a6ef9f0..7b10b74cc4e 100644
|
||||
--- a/server/sock.c
|
||||
+++ b/server/sock.c
|
||||
@@ -156,6 +156,7 @@ static const struct object_ops sock_ops =
|
||||
@@ -155,6 +155,7 @@ static const struct object_ops sock_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -636,7 +623,7 @@ index 4a10aaccf94..f951f23d64a 100644
|
||||
fd_close_handle, /* close_handle */
|
||||
sock_destroy /* destroy */
|
||||
};
|
||||
@@ -972,6 +973,7 @@ static const struct object_ops ifchange_ops =
|
||||
@@ -970,6 +971,7 @@ static const struct object_ops ifchange_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -645,10 +632,10 @@ index 4a10aaccf94..f951f23d64a 100644
|
||||
ifchange_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/symlink.c b/server/symlink.c
|
||||
index b4b6a44616e..44237bc8b18 100644
|
||||
index e5ee09f015a..d60611d592a 100644
|
||||
--- a/server/symlink.c
|
||||
+++ b/server/symlink.c
|
||||
@@ -72,6 +72,7 @@ static const struct object_ops symlink_ops =
|
||||
@@ -71,6 +71,7 @@ static const struct object_ops symlink_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -657,10 +644,10 @@ index b4b6a44616e..44237bc8b18 100644
|
||||
symlink_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/thread.c b/server/thread.c
|
||||
index 874555bd7b4..92b83ea7f79 100644
|
||||
index e2bfa50c7ba..9faef2dcd34 100644
|
||||
--- a/server/thread.c
|
||||
+++ b/server/thread.c
|
||||
@@ -123,6 +123,7 @@ static const struct object_ops thread_apc_ops =
|
||||
@@ -121,6 +121,7 @@ static const struct object_ops thread_apc_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -668,7 +655,7 @@ index 874555bd7b4..92b83ea7f79 100644
|
||||
no_close_handle, /* close_handle */
|
||||
thread_apc_destroy /* destroy */
|
||||
};
|
||||
@@ -160,6 +161,7 @@ static const struct object_ops context_ops =
|
||||
@@ -157,6 +158,7 @@ static const struct object_ops context_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -676,7 +663,7 @@ index 874555bd7b4..92b83ea7f79 100644
|
||||
no_close_handle, /* close_handle */
|
||||
no_destroy /* destroy */
|
||||
};
|
||||
@@ -196,6 +198,7 @@ static const struct object_ops thread_ops =
|
||||
@@ -191,6 +193,7 @@ static const struct object_ops thread_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
thread_get_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -685,10 +672,10 @@ index 874555bd7b4..92b83ea7f79 100644
|
||||
destroy_thread /* destroy */
|
||||
};
|
||||
diff --git a/server/timer.c b/server/timer.c
|
||||
index 0499080fd0c..279417b9f4c 100644
|
||||
index 6460acbf519..2b5ae29a45a 100644
|
||||
--- a/server/timer.c
|
||||
+++ b/server/timer.c
|
||||
@@ -80,6 +80,7 @@ static const struct object_ops timer_ops =
|
||||
@@ -76,6 +76,7 @@ static const struct object_ops timer_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -697,10 +684,10 @@ index 0499080fd0c..279417b9f4c 100644
|
||||
timer_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/token.c b/server/token.c
|
||||
index 5e47d76ef40..1cdab79da70 100644
|
||||
index 2fa95e17aaf..8464eaf83eb 100644
|
||||
--- a/server/token.c
|
||||
+++ b/server/token.c
|
||||
@@ -162,6 +162,7 @@ static const struct object_ops token_ops =
|
||||
@@ -157,6 +157,7 @@ static const struct object_ops token_ops =
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -709,10 +696,10 @@ index 5e47d76ef40..1cdab79da70 100644
|
||||
token_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/winstation.c b/server/winstation.c
|
||||
index d7c1a8ca8bf..32772d4805b 100644
|
||||
index 43d112334d4..993a41178c6 100644
|
||||
--- a/server/winstation.c
|
||||
+++ b/server/winstation.c
|
||||
@@ -76,6 +76,7 @@ static const struct object_ops winstation_ops =
|
||||
@@ -75,6 +75,7 @@ static const struct object_ops winstation_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -720,7 +707,7 @@ index d7c1a8ca8bf..32772d4805b 100644
|
||||
winstation_close_handle, /* close_handle */
|
||||
winstation_destroy /* destroy */
|
||||
};
|
||||
@@ -101,6 +102,7 @@ static const struct object_ops desktop_ops =
|
||||
@@ -99,6 +100,7 @@ static const struct object_ops desktop_ops =
|
||||
default_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_kernel_obj_list, /* get_kernel_obj_list */
|
||||
@ -729,5 +716,5 @@ index d7c1a8ca8bf..32772d4805b 100644
|
||||
desktop_destroy /* destroy */
|
||||
};
|
||||
--
|
||||
2.26.0
|
||||
2.26.2
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
Fixes: Fix possible leak of explorer.exe processes and implement proper desktop refcounting
|
||||
Fixes: Assign random name when trying to create Window Station without name
|
||||
Fixes: [46967] GOG Galaxy doesn't run in virtual desktop.
|
||||
Depends: eventfd_synchronization
|
||||
Depends: ws2_32-WSACleanup
|
||||
|
@ -1,26 +1,27 @@
|
||||
From 3b5ea5ff15907d1d8f1902a08451b0a03eb11dc9 Mon Sep 17 00:00:00 2001
|
||||
From ed63a76dc481da8af510fb8f9ae6c399ca0ca0ac Mon Sep 17 00:00:00 2001
|
||||
From: Qian Hong <qhong@codeweavers.com>
|
||||
Date: Fri, 21 Aug 2015 21:58:51 +0800
|
||||
Subject: ntdll: Set EOF on file which has a memory mapping should fail.
|
||||
Subject: [PATCH] ntdll: Set EOF on file which has a memory mapping should
|
||||
fail.
|
||||
|
||||
---
|
||||
dlls/ntdll/file.c | 27 +++++++-------------------
|
||||
server/fd.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
server/protocol.def | 7 +++++++
|
||||
dlls/ntdll/file.c | 27 ++++++----------------
|
||||
server/fd.c | 55 +++++++++++++++++++++++++++++++++++++++++++++
|
||||
server/protocol.def | 7 ++++++
|
||||
3 files changed, 69 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index be6b591..8c9b076 100644
|
||||
index 013706889bb..a28ae265687 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -2650,30 +2650,17 @@ NTSTATUS WINAPI NtSetInformationFile(HANDLE handle, PIO_STATUS_BLOCK io,
|
||||
@@ -2747,30 +2747,17 @@ NTSTATUS WINAPI NtSetInformationFile(HANDLE handle, PIO_STATUS_BLOCK io,
|
||||
case FileEndOfFileInformation:
|
||||
if (len >= sizeof(FILE_END_OF_FILE_INFORMATION))
|
||||
{
|
||||
- struct stat st;
|
||||
const FILE_END_OF_FILE_INFORMATION *info = ptr;
|
||||
|
||||
- if ((io->u.Status = server_get_unix_fd( handle, 0, &fd, &needs_close, NULL, NULL )))
|
||||
- if ((io->u.Status = unix_funcs->server_get_unix_fd( handle, 0, &fd, &needs_close, NULL, NULL )))
|
||||
- return io->u.Status;
|
||||
-
|
||||
- /* first try normal truncate */
|
||||
@ -52,10 +53,10 @@ index be6b591..8c9b076 100644
|
||||
|
||||
case FilePipeInformation:
|
||||
diff --git a/server/fd.c b/server/fd.c
|
||||
index fef4827..62373d8 100644
|
||||
index 06d1d81bdb0..7b016acb382 100644
|
||||
--- a/server/fd.c
|
||||
+++ b/server/fd.c
|
||||
@@ -2353,6 +2353,50 @@ failed:
|
||||
@@ -2534,6 +2534,50 @@ failed:
|
||||
free( name );
|
||||
}
|
||||
|
||||
@ -106,7 +107,7 @@ index fef4827..62373d8 100644
|
||||
struct completion *fd_get_completion( struct fd *fd, apc_param_t *p_key )
|
||||
{
|
||||
*p_key = fd->comp_key;
|
||||
@@ -2593,3 +2637,14 @@ DECL_HANDLER(set_fd_name_info)
|
||||
@@ -2812,3 +2856,14 @@ DECL_HANDLER(set_fd_name_info)
|
||||
}
|
||||
if (root_fd) release_object( root_fd );
|
||||
}
|
||||
@ -122,10 +123,10 @@ index fef4827..62373d8 100644
|
||||
+ }
|
||||
+}
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index c313006..8d197f0 100644
|
||||
index 423e6079009..c6110fc675e 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -3541,6 +3541,13 @@ enum coords_relative
|
||||
@@ -3821,6 +3821,13 @@ struct handle_info
|
||||
@END
|
||||
|
||||
|
||||
@ -140,5 +141,5 @@ index c313006..8d197f0 100644
|
||||
@REQ(get_window_layered_info)
|
||||
user_handle_t handle; /* handle to the window */
|
||||
--
|
||||
2.5.0
|
||||
2.26.2
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 276db2921f3643686de6360d882c344fe86e6d99 Mon Sep 17 00:00:00 2001
|
||||
From 3f37e21dc1ff1cbd971b5bf7307b6898c2339b29 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Wed, 8 Mar 2017 03:32:43 +0100
|
||||
Subject: [PATCH] server: Register types during startup.
|
||||
@ -40,7 +40,7 @@ index db04727b93b..f8561172b70 100644
|
||||
}
|
||||
|
||||
diff --git a/server/directory.c b/server/directory.c
|
||||
index 28aec30304a..0a591ed6d9a 100644
|
||||
index 75f1e8f117d..b39a4606277 100644
|
||||
--- a/server/directory.c
|
||||
+++ b/server/directory.c
|
||||
@@ -121,8 +121,7 @@ static void object_type_dump( struct object *obj, int verbose )
|
||||
@ -116,22 +116,22 @@ index 781e6f3141a..42350048877 100644
|
||||
}
|
||||
|
||||
diff --git a/server/main.c b/server/main.c
|
||||
index 43297a3e93d..0a628c30e2d 100644
|
||||
index efb205f5292..fee10ea3d37 100644
|
||||
--- a/server/main.c
|
||||
+++ b/server/main.c
|
||||
@@ -146,6 +146,7 @@ int main( int argc, char *argv[] )
|
||||
@@ -145,6 +145,7 @@ int main( int argc, char *argv[] )
|
||||
init_signals();
|
||||
init_directories();
|
||||
init_registry();
|
||||
init_shared_memory();
|
||||
+ init_types();
|
||||
main_loop();
|
||||
return 0;
|
||||
}
|
||||
diff --git a/server/mapping.c b/server/mapping.c
|
||||
index 2a2803404cc..24ab0f63e48 100644
|
||||
index 0941dd87c05..88894661025 100644
|
||||
--- a/server/mapping.c
|
||||
+++ b/server/mapping.c
|
||||
@@ -979,8 +979,7 @@ static void mapping_dump( struct object *obj, int verbose )
|
||||
@@ -915,8 +915,7 @@ static void mapping_dump( struct object *obj, int verbose )
|
||||
|
||||
static struct object_type *mapping_get_type( struct object *obj )
|
||||
{
|
||||
@ -249,7 +249,7 @@ index 3144eb56678..5cc593f5c52 100644
|
||||
|
||||
extern struct object *create_obj_symlink( struct object *root, const struct unicode_str *name,
|
||||
diff --git a/server/process.c b/server/process.c
|
||||
index 6722addb091..aded1da8901 100644
|
||||
index 76bb6faa91a..be5caaecd7e 100644
|
||||
--- a/server/process.c
|
||||
+++ b/server/process.c
|
||||
@@ -215,8 +215,7 @@ static struct job *get_job_obj( struct process *process, obj_handle_t handle, un
|
||||
@ -315,10 +315,10 @@ index e5ee09f015a..287432f692e 100644
|
||||
}
|
||||
|
||||
diff --git a/server/thread.c b/server/thread.c
|
||||
index 0226e744d7b..7fb902c9648 100644
|
||||
index e2bfa50c7ba..4d518a93403 100644
|
||||
--- a/server/thread.c
|
||||
+++ b/server/thread.c
|
||||
@@ -454,8 +454,7 @@ static void dump_thread( struct object *obj, int verbose )
|
||||
@@ -445,8 +445,7 @@ static void dump_thread( struct object *obj, int verbose )
|
||||
|
||||
static struct object_type *thread_get_type( struct object *obj )
|
||||
{
|
||||
|
@ -1,3 +1,3 @@
|
||||
Fixes: [44629] Process Hacker can't enumerate handles
|
||||
Fixes: [45374] Yet Another Process Monitor (.NET 2.0 app) reports System.AccessViolationException
|
||||
Depends: server-Shared_Memory
|
||||
#Depends: server-Shared_Memory
|
||||
|
@ -7,3 +7,5 @@ Depends: server-PeekMessage
|
||||
Depends: server-Signal_Thread
|
||||
Depends: user32-rawinput-nolegacy
|
||||
Depends: ntdll-ext4-case-folder
|
||||
# This is not worth rebasing right now.
|
||||
Disabled: true
|
||||
|
@ -1,4 +1,4 @@
|
||||
From c7d08fae58702256a3034521632553740f590750 Mon Sep 17 00:00:00 2001
|
||||
From 738b377c97704144b9e750c284155d0c7ac7bd4a Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Mon, 25 May 2015 06:07:50 +0200
|
||||
Subject: [PATCH] wineboot: Assign a drive serial number during prefix
|
||||
@ -9,10 +9,10 @@ Subject: [PATCH] wineboot: Assign a drive serial number during prefix
|
||||
1 file changed, 32 insertions(+)
|
||||
|
||||
diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c
|
||||
index e1dbe6630..f8b0c4d74 100644
|
||||
index 21be0f55fb0..b67b60974b4 100644
|
||||
--- a/programs/wineboot/wineboot.c
|
||||
+++ b/programs/wineboot/wineboot.c
|
||||
@@ -71,6 +71,7 @@
|
||||
@@ -76,6 +76,7 @@
|
||||
#include <shlwapi.h>
|
||||
#include <shellapi.h>
|
||||
#include <setupapi.h>
|
||||
@ -20,7 +20,7 @@ index e1dbe6630..f8b0c4d74 100644
|
||||
#include <newdev.h>
|
||||
#include "resource.h"
|
||||
|
||||
@@ -537,6 +538,36 @@ done:
|
||||
@@ -580,6 +581,36 @@ done:
|
||||
RegCloseKey( bios_key );
|
||||
}
|
||||
|
||||
@ -57,14 +57,14 @@ index e1dbe6630..f8b0c4d74 100644
|
||||
/* create the volatile hardware registry keys */
|
||||
static void create_hardware_registry_keys(void)
|
||||
{
|
||||
@@ -1694,6 +1725,7 @@ int __cdecl main( int argc, char *argv[] )
|
||||
|
||||
@@ -1590,6 +1621,7 @@ int __cdecl main( int argc, char *argv[] )
|
||||
ResetEvent( event ); /* in case this is a restart */
|
||||
|
||||
create_user_shared_data();
|
||||
+ create_disk_serial_number();
|
||||
create_hardware_registry_keys();
|
||||
create_dynamic_registry_keys();
|
||||
create_environment_registry_keys();
|
||||
--
|
||||
2.25.0
|
||||
2.26.2
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From b72a4fc5697e18fab51553bf182e10352893b09f Mon Sep 17 00:00:00 2001
|
||||
From 45598a4fa2472c7df34c472fb0c193d9948a469d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 7 Sep 2017 00:38:09 +0200
|
||||
Subject: [PATCH] tools/winebuild: Add syscall thunks for 64 bit.
|
||||
@ -6,11 +6,12 @@ Subject: [PATCH] tools/winebuild: Add syscall thunks for 64 bit.
|
||||
---
|
||||
dlls/kernel32/tests/loader.c | 7 +-
|
||||
dlls/ntdll/signal_x86_64.c | 2 +
|
||||
dlls/ntdll/thread.c | 17 ++-
|
||||
dlls/ntdll/thread.c | 13 +-
|
||||
libs/wine/loader.c | 4 +
|
||||
programs/wineboot/wineboot.c | 4 +
|
||||
tools/winebuild/parser.c | 2 +-
|
||||
tools/winebuild/spec32.c | 285 ++++++++++++++++++++++++++++++++++-
|
||||
6 files changed, 307 insertions(+), 10 deletions(-)
|
||||
7 files changed, 307 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
|
||||
index 95939ba6bde..ae5462f6e55 100644
|
||||
@ -40,7 +41,7 @@ index 95939ba6bde..ae5462f6e55 100644
|
||||
todo_wine ok(0, "%s: Export is a stub-function, skipping\n", func_name);
|
||||
continue;
|
||||
diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
|
||||
index 31af1e98d3f..324a92b41a9 100644
|
||||
index e92470e9606..e089afd71f5 100644
|
||||
--- a/dlls/ntdll/signal_x86_64.c
|
||||
+++ b/dlls/ntdll/signal_x86_64.c
|
||||
@@ -354,6 +354,7 @@ static inline void set_sigcontext( const CONTEXT *context, ucontext_t *sigcontex
|
||||
@ -60,7 +61,7 @@ index 31af1e98d3f..324a92b41a9 100644
|
||||
}
|
||||
|
||||
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
|
||||
index 9fcbd8310ed..ed1183b0512 100644
|
||||
index fb5320603dc..20934448fa3 100644
|
||||
--- a/dlls/ntdll/thread.c
|
||||
+++ b/dlls/ntdll/thread.c
|
||||
@@ -54,6 +54,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(thread);
|
||||
@ -72,18 +73,7 @@ index 9fcbd8310ed..ed1183b0512 100644
|
||||
void (WINAPI *kernel32_start_process)(LPTHREAD_START_ROUTINE,void*) = NULL;
|
||||
|
||||
/* info passed to a starting thread */
|
||||
@@ -206,6 +208,10 @@ static void fill_user_shared_data( struct _KUSER_SHARED_DATA *data )
|
||||
data->NumberOfPhysicalPages = sbi.MmNumberOfPhysicalPages;
|
||||
wcscpy( data->NtSystemRoot, windows_dir );
|
||||
|
||||
+ /* Pretend we don't support the SYSCALL instruction on x86-64. Needed for
|
||||
+ * Chromium; see output_syscall_thunks_x64() in winebuild. */
|
||||
+ data->SystemCallPad[0] = 1;
|
||||
+
|
||||
switch (sci.Architecture)
|
||||
{
|
||||
case PROCESSOR_ARCHITECTURE_INTEL:
|
||||
@@ -312,9 +318,9 @@ TEB *thread_init(void)
|
||||
@@ -230,9 +232,9 @@ TEB *thread_init(void)
|
||||
/* reserve space for shared user data */
|
||||
|
||||
addr = (void *)0x7ffe0000;
|
||||
@ -95,7 +85,7 @@ index 9fcbd8310ed..ed1183b0512 100644
|
||||
if (status)
|
||||
{
|
||||
MESSAGE( "wine: failed to map the shared user data: %08x\n", status );
|
||||
@@ -322,6 +328,13 @@ TEB *thread_init(void)
|
||||
@@ -240,6 +242,13 @@ TEB *thread_init(void)
|
||||
}
|
||||
user_shared_data = addr;
|
||||
|
||||
@ -125,6 +115,21 @@ index 4597a6cb324..3d0d75e9c6d 100644
|
||||
sec->Characteristics = (IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ);
|
||||
sec++;
|
||||
|
||||
diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c
|
||||
index 21be0f55fb0..f84a7fe8a0c 100644
|
||||
--- a/programs/wineboot/wineboot.c
|
||||
+++ b/programs/wineboot/wineboot.c
|
||||
@@ -235,6 +235,10 @@ static void create_user_shared_data(void)
|
||||
data->NumberOfPhysicalPages = sbi.MmNumberOfPhysicalPages;
|
||||
wcscpy( data->NtSystemRoot, L"C:\\windows" );
|
||||
|
||||
+ /* Pretend we don't support the SYSCALL instruction on x86-64. Needed for
|
||||
+ * Chromium; see output_syscall_thunks_x64() in winebuild. */
|
||||
+ data->SystemCallPad[0] = 1;
|
||||
+
|
||||
features = data->ProcessorFeatures;
|
||||
switch (sci.Architecture)
|
||||
{
|
||||
diff --git a/tools/winebuild/parser.c b/tools/winebuild/parser.c
|
||||
index 74216f8bb6e..820516329a4 100644
|
||||
--- a/tools/winebuild/parser.c
|
||||
|
@ -1,21 +1,26 @@
|
||||
From 380a706bf10f26de9a1cd1a440b427f01f012285 Mon Sep 17 00:00:00 2001
|
||||
From e5ee1bec04910d5109591ee82177cdddaab60da7 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 6 Sep 2015 12:41:17 +0200
|
||||
Subject: ws2_32: Invalidate client-side file descriptor cache in WSACleanup.
|
||||
Subject: [PATCH] ws2_32: Invalidate client-side file descriptor cache in
|
||||
WSACleanup.
|
||||
|
||||
---
|
||||
dlls/ntdll/ntdll.spec | 1 +
|
||||
dlls/ntdll/server.c | 24 ++++++++++++++++++++++++
|
||||
dlls/ws2_32/socket.c | 1 +
|
||||
dlls/ws2_32/tests/sock.c | 5 +----
|
||||
include/wine/server.h | 1 +
|
||||
5 files changed, 28 insertions(+), 4 deletions(-)
|
||||
dlls/ntdll/ntdll.spec | 1 +
|
||||
dlls/ntdll/server.c | 8 ++++++++
|
||||
dlls/ntdll/unix/loader.c | 1 +
|
||||
dlls/ntdll/unix/server.c | 20 ++++++++++++++++++++
|
||||
dlls/ntdll/unix/unix_private.h | 1 +
|
||||
dlls/ntdll/unixlib.h | 3 ++-
|
||||
dlls/ws2_32/socket.c | 1 +
|
||||
dlls/ws2_32/tests/sock.c | 5 +----
|
||||
include/wine/server.h | 1 +
|
||||
9 files changed, 36 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
|
||||
index c3b6bf0..2b52562 100644
|
||||
index 42532bd9f1c..ba46f170670 100644
|
||||
--- a/dlls/ntdll/ntdll.spec
|
||||
+++ b/dlls/ntdll/ntdll.spec
|
||||
@@ -1458,6 +1458,7 @@
|
||||
@@ -1575,6 +1575,7 @@
|
||||
|
||||
# Server interface
|
||||
@ cdecl -norelay wine_server_call(ptr)
|
||||
@ -24,19 +29,49 @@ index c3b6bf0..2b52562 100644
|
||||
@ cdecl wine_server_handle_to_fd(long long ptr ptr)
|
||||
@ cdecl wine_server_release_fd(long long)
|
||||
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
|
||||
index 356d631..381d5aa 100644
|
||||
index ed4e3f25531..ae1e41a485e 100644
|
||||
--- a/dlls/ntdll/server.c
|
||||
+++ b/dlls/ntdll/server.c
|
||||
@@ -915,6 +915,30 @@ int server_remove_fd_from_cache( HANDLE handle )
|
||||
@@ -687,6 +687,14 @@ void CDECL wine_server_release_fd( HANDLE handle, int unix_fd )
|
||||
unix_funcs->server_release_fd( handle, unix_fd );
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
+ /***********************************************************************
|
||||
+ * wine_server_close_fds_by_type
|
||||
+ *
|
||||
+ * Needed for a proper implementation of WSACleanup.
|
||||
+ */
|
||||
+void CDECL wine_server_close_fds_by_type( enum server_fd_type type )
|
||||
+{
|
||||
+ unix_funcs->server_remove_fds_from_cache_by_type( type );
|
||||
+}
|
||||
+
|
||||
|
||||
/***********************************************************************
|
||||
* server_init_process
|
||||
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
|
||||
index 4a3f101d301..8b10964603e 100644
|
||||
--- a/dlls/ntdll/unix/loader.c
|
||||
+++ b/dlls/ntdll/unix/loader.c
|
||||
@@ -1000,6 +1000,7 @@ static struct unix_funcs unix_funcs =
|
||||
wine_server_call,
|
||||
server_send_fd,
|
||||
server_remove_fd_from_cache,
|
||||
+ server_remove_fds_from_cache_by_type,
|
||||
server_get_unix_fd,
|
||||
server_fd_to_handle,
|
||||
server_handle_to_fd,
|
||||
diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c
|
||||
index 8dc3f33bc80..dd2cb6cf5e2 100644
|
||||
--- a/dlls/ntdll/unix/server.c
|
||||
+++ b/dlls/ntdll/unix/server.c
|
||||
@@ -559,6 +559,26 @@ int CDECL server_remove_fd_from_cache( HANDLE handle )
|
||||
return fd;
|
||||
}
|
||||
|
||||
+/***********************************************************************
|
||||
+ * server_remove_fds_from_cache_by_type
|
||||
+ */
|
||||
+void CDECL server_remove_fds_from_cache_by_type( enum server_fd_type type )
|
||||
+{
|
||||
+ union fd_cache_entry cache;
|
||||
+ unsigned int entry, idx;
|
||||
+
|
||||
@ -52,17 +87,47 @@ index 356d631..381d5aa 100644
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/***********************************************************************
|
||||
|
||||
/***********************************************************************
|
||||
* server_get_unix_fd
|
||||
*
|
||||
* The returned unix_fd should be closed iff needs_close is non-zero.
|
||||
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
|
||||
index 2bf39f85371..32c03fd8983 100644
|
||||
--- a/dlls/ntdll/unix/unix_private.h
|
||||
+++ b/dlls/ntdll/unix/unix_private.h
|
||||
@@ -63,6 +63,7 @@ extern void CDECL dbg_init(void) DECLSPEC_HIDDEN;
|
||||
extern unsigned int CDECL server_call_unlocked( void *req_ptr ) DECLSPEC_HIDDEN;
|
||||
extern void CDECL server_send_fd( int fd ) DECLSPEC_HIDDEN;
|
||||
extern int CDECL server_remove_fd_from_cache( HANDLE handle ) DECLSPEC_HIDDEN;
|
||||
+extern void CDECL server_remove_fds_from_cache_by_type( enum server_fd_type type ) DECLSPEC_HIDDEN;
|
||||
extern int CDECL server_get_unix_fd( HANDLE handle, unsigned int wanted_access, int *unix_fd,
|
||||
int *needs_close, enum server_fd_type *type,
|
||||
unsigned int *options ) DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
|
||||
index 142e8956e7e..452c725dfde 100644
|
||||
--- a/dlls/ntdll/unixlib.h
|
||||
+++ b/dlls/ntdll/unixlib.h
|
||||
@@ -25,7 +25,7 @@
|
||||
#include "wine/debug.h"
|
||||
|
||||
/* increment this when you change the function table */
|
||||
-#define NTDLL_UNIXLIB_VERSION 10
|
||||
+#define NTDLL_UNIXLIB_VERSION 11
|
||||
|
||||
struct unix_funcs
|
||||
{
|
||||
@@ -55,6 +55,7 @@ struct unix_funcs
|
||||
unsigned int (CDECL *server_call)( void *req_ptr );
|
||||
void (CDECL *server_send_fd)( int fd );
|
||||
int (CDECL *server_remove_fd_from_cache)( HANDLE handle );
|
||||
+ void (CDECL *server_remove_fds_from_cache_by_type)( enum server_fd_type type );
|
||||
int (CDECL *server_get_unix_fd)( HANDLE handle, unsigned int wanted_access, int *unix_fd,
|
||||
int *needs_close, enum server_fd_type *type, unsigned int *options );
|
||||
NTSTATUS (CDECL *server_fd_to_handle)( int fd, unsigned int access, unsigned int attributes,
|
||||
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
|
||||
index ea45397..c50d2b6 100644
|
||||
index bbc44ca2c20..37d110d216f 100644
|
||||
--- a/dlls/ws2_32/socket.c
|
||||
+++ b/dlls/ws2_32/socket.c
|
||||
@@ -1495,6 +1495,7 @@ INT WINAPI WSACleanup(void)
|
||||
@@ -1729,6 +1729,7 @@ INT WINAPI WSACleanup(void)
|
||||
|
||||
if (!--num_startup)
|
||||
{
|
||||
@ -71,10 +136,10 @@ index ea45397..c50d2b6 100644
|
||||
{
|
||||
wine_server_call( req );
|
||||
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
|
||||
index e3732a3..9ed71aa 100644
|
||||
index 9fe89d9dba3..c2e1379fe6f 100644
|
||||
--- a/dlls/ws2_32/tests/sock.c
|
||||
+++ b/dlls/ws2_32/tests/sock.c
|
||||
@@ -1179,10 +1179,7 @@ static void test_WithWSAStartup(void)
|
||||
@@ -1250,10 +1250,7 @@ static void test_WithWSAStartup(void)
|
||||
SetLastError(0xdeadbeef);
|
||||
res = getsockname(sock, (struct sockaddr *)&saddr, &size);
|
||||
error = WSAGetLastError();
|
||||
@ -87,7 +152,7 @@ index e3732a3..9ed71aa 100644
|
||||
}
|
||||
}
|
||||
diff --git a/include/wine/server.h b/include/wine/server.h
|
||||
index d573d1f..02d9c7b 100644
|
||||
index ac5dcc6f8bc..5cf52887516 100644
|
||||
--- a/include/wine/server.h
|
||||
+++ b/include/wine/server.h
|
||||
@@ -54,6 +54,7 @@ extern void CDECL wine_server_send_fd( int fd );
|
||||
@ -99,5 +164,5 @@ index d573d1f..02d9c7b 100644
|
||||
/* do a server call and set the last error code */
|
||||
static inline unsigned int wine_server_call_err( void *req_ptr )
|
||||
--
|
||||
2.6.2
|
||||
2.26.2
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 6122f1c9de4a8e595c15034753c2838579548254 Mon Sep 17 00:00:00 2001
|
||||
From 3e86366ed3ab3aca555d2457e930cf7dbd08a105 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 22 Jun 2014 19:04:38 +0200
|
||||
Subject: [PATCH] wtsapi32: Partial implementation of WTSEnumerateProcessesW.
|
||||
@ -9,7 +9,7 @@ Subject: [PATCH] wtsapi32: Partial implementation of WTSEnumerateProcessesW.
|
||||
2 files changed, 74 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/wtsapi32/tests/wtsapi.c b/dlls/wtsapi32/tests/wtsapi.c
|
||||
index 67f56bbd7f5..5b4e28a1a30 100644
|
||||
index c9312cd97c5..72b57c16ffa 100644
|
||||
--- a/dlls/wtsapi32/tests/wtsapi.c
|
||||
+++ b/dlls/wtsapi32/tests/wtsapi.c
|
||||
@@ -85,7 +85,6 @@ static void test_WTSEnumerateProcessesW(void)
|
||||
@ -21,7 +21,7 @@ index 67f56bbd7f5..5b4e28a1a30 100644
|
||||
WTSFreeMemory(info);
|
||||
}
|
||||
diff --git a/dlls/wtsapi32/wtsapi32.c b/dlls/wtsapi32/wtsapi32.c
|
||||
index 2f5e73d05af..c3a483af10f 100644
|
||||
index ef3e0d10a0f..06ce384a337 100644
|
||||
--- a/dlls/wtsapi32/wtsapi32.c
|
||||
+++ b/dlls/wtsapi32/wtsapi32.c
|
||||
@@ -17,8 +17,11 @@
|
||||
@ -33,10 +33,10 @@ index 2f5e73d05af..c3a483af10f 100644
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
+#include "winternl.h"
|
||||
#include "winnls.h"
|
||||
#include "wtsapi32.h"
|
||||
#include "wine/debug.h"
|
||||
#include "wine/heap.h"
|
||||
@@ -93,8 +96,13 @@ BOOL WINAPI WTSEnumerateProcessesA(HANDLE hServer, DWORD Reserved, DWORD Version
|
||||
@@ -115,8 +118,13 @@ BOOL WINAPI WTSEnumerateProcessesA(HANDLE hServer, DWORD Reserved, DWORD Version
|
||||
BOOL WINAPI WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version,
|
||||
PWTS_PROCESS_INFOW* ppProcessInfo, DWORD* pCount)
|
||||
{
|
||||
@ -52,7 +52,7 @@ index 2f5e73d05af..c3a483af10f 100644
|
||||
|
||||
if (!ppProcessInfo || !pCount || Reserved != 0 || Version != 1)
|
||||
{
|
||||
@@ -102,9 +110,71 @@ BOOL WINAPI WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version
|
||||
@@ -124,9 +132,71 @@ BOOL WINAPI WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -127,5 +127,5 @@ index 2f5e73d05af..c3a483af10f 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.20.1
|
||||
2.26.2
|
||||
|
||||
|
@ -1 +1 @@
|
||||
e48fabff525061c8eea9558084a97308cebe6b7b
|
||||
bf83d755d987fec552cd1dce30638c31c49ab760
|
||||
|
Loading…
Reference in New Issue
Block a user