You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Rebase against 2d6b0b67d91b6433744ec859b10b8ee8eb4a37b3.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
From 39c92b48498d080c4d90e9b8d16c580dd72b1941 Mon Sep 17 00:00:00 2001
|
||||
From 645cdde83d5430c5096fcb4ec4191aab7e8063ce Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Fri, 5 Jul 2019 13:20:23 +0800
|
||||
Subject: [PATCH] cryptext: Implement CryptExtOpenCER.
|
||||
@@ -17,31 +17,31 @@ Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
create mode 100644 dlls/cryptext/tests/cryptext.c
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index f1de2c4052..ed79a35e0e 100755
|
||||
index 8567a9ca4ef..9b4ff8a2d7a 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -20063,6 +20063,7 @@ wine_fn_config_makefile dlls/crypt32/tests enable_tests
|
||||
@@ -20276,6 +20276,7 @@ wine_fn_config_makefile dlls/crypt32/tests enable_tests
|
||||
wine_fn_config_makefile dlls/cryptdlg enable_cryptdlg
|
||||
wine_fn_config_makefile dlls/cryptdll enable_cryptdll
|
||||
wine_fn_config_makefile dlls/cryptext enable_cryptext
|
||||
+wine_fn_config_makefile dlls/cryptext/tests enable_tests
|
||||
wine_fn_config_makefile dlls/cryptnet enable_cryptnet
|
||||
wine_fn_config_makefile dlls/cryptnet/tests enable_tests
|
||||
wine_fn_config_makefile dlls/cryptui enable_cryptui
|
||||
wine_fn_config_makefile dlls/cryptsp enable_cryptsp
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index a7c45ace73..e801c35c46 100644
|
||||
index 0549a9ee78a..b58b05d4dd7 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -3049,6 +3049,7 @@ WINE_CONFIG_MAKEFILE(dlls/crypt32/tests)
|
||||
@@ -3070,6 +3070,7 @@ WINE_CONFIG_MAKEFILE(dlls/crypt32/tests)
|
||||
WINE_CONFIG_MAKEFILE(dlls/cryptdlg)
|
||||
WINE_CONFIG_MAKEFILE(dlls/cryptdll)
|
||||
WINE_CONFIG_MAKEFILE(dlls/cryptext)
|
||||
+WINE_CONFIG_MAKEFILE(dlls/cryptext/tests)
|
||||
WINE_CONFIG_MAKEFILE(dlls/cryptnet)
|
||||
WINE_CONFIG_MAKEFILE(dlls/cryptnet/tests)
|
||||
WINE_CONFIG_MAKEFILE(dlls/cryptui)
|
||||
WINE_CONFIG_MAKEFILE(dlls/cryptsp)
|
||||
diff --git a/dlls/cryptext/Makefile.in b/dlls/cryptext/Makefile.in
|
||||
index 9c9f84cee8..0e817ffda6 100644
|
||||
index 9c9f84cee87..0e817ffda6c 100644
|
||||
--- a/dlls/cryptext/Makefile.in
|
||||
+++ b/dlls/cryptext/Makefile.in
|
||||
@@ -1,4 +1,5 @@
|
||||
@@ -52,7 +52,7 @@ index 9c9f84cee8..0e817ffda6 100644
|
||||
EXTRADLLFLAGS = -mno-cygwin
|
||||
|
||||
diff --git a/dlls/cryptext/cryptext.spec b/dlls/cryptext/cryptext.spec
|
||||
index 0dba38e393..911ab2f4ba 100644
|
||||
index 0dba38e3934..911ab2f4ba4 100644
|
||||
--- a/dlls/cryptext/cryptext.spec
|
||||
+++ b/dlls/cryptext/cryptext.spec
|
||||
@@ -12,8 +12,8 @@
|
||||
@@ -67,7 +67,7 @@ index 0dba38e393..911ab2f4ba 100644
|
||||
@ stub CryptExtOpenCRLW
|
||||
@ stub CryptExtOpenCTL
|
||||
diff --git a/dlls/cryptext/cryptext_main.c b/dlls/cryptext/cryptext_main.c
|
||||
index f7c7bd1f55..2a381782d6 100644
|
||||
index f7c7bd1f554..2a381782d68 100644
|
||||
--- a/dlls/cryptext/cryptext_main.c
|
||||
+++ b/dlls/cryptext/cryptext_main.c
|
||||
@@ -22,10 +22,29 @@
|
||||
@@ -151,7 +151,7 @@ index f7c7bd1f55..2a381782d6 100644
|
||||
+}
|
||||
diff --git a/dlls/cryptext/tests/Makefile.in b/dlls/cryptext/tests/Makefile.in
|
||||
new file mode 100644
|
||||
index 0000000000..522fc60a4a
|
||||
index 00000000000..522fc60a4af
|
||||
--- /dev/null
|
||||
+++ b/dlls/cryptext/tests/Makefile.in
|
||||
@@ -0,0 +1,4 @@
|
||||
@@ -161,7 +161,7 @@ index 0000000000..522fc60a4a
|
||||
+ cryptext.c
|
||||
diff --git a/dlls/cryptext/tests/cryptext.c b/dlls/cryptext/tests/cryptext.c
|
||||
new file mode 100644
|
||||
index 0000000000..cc62a772b5
|
||||
index 00000000000..cc62a772b59
|
||||
--- /dev/null
|
||||
+++ b/dlls/cryptext/tests/cryptext.c
|
||||
@@ -0,0 +1,61 @@
|
||||
@@ -227,5 +227,5 @@ index 0000000000..cc62a772b5
|
||||
+ test_CryptExtOpenCER();
|
||||
+}
|
||||
--
|
||||
2.17.1
|
||||
2.20.1
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From d70b0135dbcaa414f1252b4d0a0d0389cb751e29 Mon Sep 17 00:00:00 2001
|
||||
From 1a2cd66380cef9a1f8a7a03f98d5f7af7c889bea Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Sat, 7 Jul 2018 12:57:47 +0200
|
||||
Subject: [PATCH] server: Create eventfd descriptors for pseudo-fd objects and
|
||||
@@ -11,7 +11,7 @@ Subject: [PATCH] server: Create eventfd descriptors for pseudo-fd objects and
|
||||
3 files changed, 25 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/server/fd.c b/server/fd.c
|
||||
index aa629ff1824..be05795f822 100644
|
||||
index 38f3ab79226..252236fbb91 100644
|
||||
--- a/server/fd.c
|
||||
+++ b/server/fd.c
|
||||
@@ -102,6 +102,7 @@
|
||||
@@ -22,7 +22,7 @@ index aa629ff1824..be05795f822 100644
|
||||
|
||||
#include "winternl.h"
|
||||
#include "winioctl.h"
|
||||
@@ -203,6 +204,7 @@ struct fd
|
||||
@@ -205,6 +206,7 @@ struct fd
|
||||
struct completion *completion; /* completion object attached to this fd */
|
||||
apc_param_t comp_key; /* completion key to set in completion events */
|
||||
unsigned int comp_flags; /* completion flags */
|
||||
@@ -30,7 +30,7 @@ index aa629ff1824..be05795f822 100644
|
||||
};
|
||||
|
||||
static void fd_dump( struct object *obj, int verbose );
|
||||
@@ -1593,6 +1595,9 @@ static void fd_destroy( struct object *obj )
|
||||
@@ -1596,6 +1598,9 @@ static void fd_destroy( struct object *obj )
|
||||
free( fd->unlink_name );
|
||||
free( fd->unix_name );
|
||||
}
|
||||
@@ -40,7 +40,7 @@ index aa629ff1824..be05795f822 100644
|
||||
}
|
||||
|
||||
/* check if the desired access is possible without violating */
|
||||
@@ -1708,6 +1713,7 @@ static struct fd *alloc_fd_object(void)
|
||||
@@ -1713,6 +1718,7 @@ static struct fd *alloc_fd_object(void)
|
||||
fd->poll_index = -1;
|
||||
fd->completion = NULL;
|
||||
fd->comp_flags = 0;
|
||||
@@ -48,7 +48,7 @@ index aa629ff1824..be05795f822 100644
|
||||
init_async_queue( &fd->read_q );
|
||||
init_async_queue( &fd->write_q );
|
||||
init_async_queue( &fd->wait_q );
|
||||
@@ -1746,11 +1752,15 @@ struct fd *alloc_pseudo_fd( const struct fd_ops *fd_user_ops, struct object *use
|
||||
@@ -1753,11 +1759,15 @@ struct fd *alloc_pseudo_fd( const struct fd_ops *fd_user_ops, struct object *use
|
||||
fd->completion = NULL;
|
||||
fd->comp_flags = 0;
|
||||
fd->no_fd_status = STATUS_BAD_DEVICE_TYPE;
|
||||
@@ -64,7 +64,7 @@ index aa629ff1824..be05795f822 100644
|
||||
return fd;
|
||||
}
|
||||
|
||||
@@ -2147,6 +2157,9 @@ void set_fd_signaled( struct fd *fd, int signaled )
|
||||
@@ -2202,6 +2212,9 @@ void set_fd_signaled( struct fd *fd, int signaled )
|
||||
if (fd->comp_flags & FILE_SKIP_SET_EVENT_ON_HANDLE) return;
|
||||
fd->signaled = signaled;
|
||||
if (signaled) wake_up( fd->user, 0 );
|
||||
@@ -74,7 +74,7 @@ index aa629ff1824..be05795f822 100644
|
||||
}
|
||||
|
||||
/* handler for close_handle that refuses to close fd-associated handles in other processes */
|
||||
@@ -2178,6 +2191,15 @@ int default_fd_signaled( struct object *obj, struct wait_queue_entry *entry )
|
||||
@@ -2233,6 +2246,15 @@ int default_fd_signaled( struct object *obj, struct wait_queue_entry *entry )
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -91,11 +91,11 @@ index aa629ff1824..be05795f822 100644
|
||||
{
|
||||
int events = 0;
|
||||
diff --git a/server/file.h b/server/file.h
|
||||
index 686bae084c5..dab6d1506c3 100644
|
||||
index 3b70799a3ec..f332c685add 100644
|
||||
--- a/server/file.h
|
||||
+++ b/server/file.h
|
||||
@@ -102,6 +102,7 @@ extern void set_fd_signaled( struct fd *fd, int signaled );
|
||||
extern char *dup_fd_name( struct fd *root, const char *name );
|
||||
@@ -104,6 +104,7 @@ extern char *dup_fd_name( struct fd *root, const char *name );
|
||||
extern void get_nt_name( struct fd *fd, struct unicode_str *name );
|
||||
|
||||
extern int default_fd_signaled( struct object *obj, struct wait_queue_entry *entry );
|
||||
+extern int default_fd_get_esync_fd( struct object *obj, enum esync_type *type );
|
||||
|
@@ -1 +1,3 @@
|
||||
Fixes: [49692] Multiple applications need a Media Foundation media source implementation
|
||||
# Will need to be rewritten after winegstreamer is converted.
|
||||
Disabled: true
|
||||
|
@@ -1,12 +1,12 @@
|
||||
From 92aeb076183fd7311b5fa05b33af0304d897361d Mon Sep 17 00:00:00 2001
|
||||
From fb7e1b2b7cb08e5fd1f9be9064e7862588896f4b Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Wed, 20 Aug 2014 15:28:00 -0600
|
||||
Subject: [PATCH] ntdll: Implement storing DOS attributes in NtCreateFile.
|
||||
|
||||
---
|
||||
dlls/ntdll/tests/directory.c | 24 ++++++++---------
|
||||
dlls/ntdll/unix/file.c | 51 ++++++++++++++++++++++++++++++++----
|
||||
2 files changed, 57 insertions(+), 18 deletions(-)
|
||||
dlls/ntdll/tests/directory.c | 24 +++++++--------
|
||||
dlls/ntdll/unix/file.c | 59 ++++++++++++++++++++++++++++++------
|
||||
2 files changed, 61 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/tests/directory.c b/dlls/ntdll/tests/directory.c
|
||||
index d21a2e64f8e..dc4f09729ac 100644
|
||||
@@ -58,10 +58,10 @@ index d21a2e64f8e..dc4f09729ac 100644
|
||||
}
|
||||
testfiles[i].nfound++;
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index 0a326a7a1bd..a72d95f8378 100644
|
||||
index ee6382611a9..a92c40ddd6a 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -406,6 +406,26 @@ static int xattr_get( const char *path, const char *name, void *value, size_t si
|
||||
@@ -409,6 +409,26 @@ static int xattr_get( const char *path, const char *name, void *value, size_t si
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ index 0a326a7a1bd..a72d95f8378 100644
|
||||
/* get space from the current directory data buffer, allocating a new one if necessary */
|
||||
static void *get_dir_data_space( struct dir_data *data, unsigned int size )
|
||||
{
|
||||
@@ -3582,6 +3602,20 @@ void CDECL set_show_dot_files( BOOL enable )
|
||||
@@ -3620,6 +3640,20 @@ void CDECL set_show_dot_files( BOOL enable )
|
||||
show_dot_files = enable;
|
||||
}
|
||||
|
||||
@@ -109,27 +109,42 @@ index 0a326a7a1bd..a72d95f8378 100644
|
||||
|
||||
/******************************************************************************
|
||||
* open_unix_file
|
||||
@@ -3669,13 +3703,14 @@ NTSTATUS WINAPI NtCreateFile( HANDLE *handle, ACCESS_MASK access, OBJECT_ATTRIBU
|
||||
@@ -3662,6 +3696,7 @@ NTSTATUS WINAPI NtCreateFile( HANDLE *handle, ACCESS_MASK access, OBJECT_ATTRIBU
|
||||
ULONG attributes, ULONG sharing, ULONG disposition,
|
||||
ULONG options, void *ea_buffer, ULONG ea_length )
|
||||
{
|
||||
+ OBJECT_ATTRIBUTES nt_attr;
|
||||
UNICODE_STRING nt_name = { 0 };
|
||||
char *unix_name;
|
||||
BOOL created = FALSE;
|
||||
@@ -3705,17 +3740,17 @@ NTSTATUS WINAPI NtCreateFile( HANDLE *handle, ACCESS_MASK access, OBJECT_ATTRIBU
|
||||
io->u.Status = STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
- if (io->u.Status == STATUS_SUCCESS)
|
||||
+ if (io->u.Status != STATUS_SUCCESS)
|
||||
{
|
||||
- io->u.Status = open_unix_file( handle, unix_name, access, attr, attributes,
|
||||
- OBJECT_ATTRIBUTES nt_attr = *attr;
|
||||
-
|
||||
- if (nt_name.Buffer) nt_attr.ObjectName = &nt_name;
|
||||
- io->u.Status = open_unix_file( handle, unix_name, access, &nt_attr, attributes,
|
||||
- sharing, disposition, options, ea_buffer, ea_length );
|
||||
- free( nt_name.Buffer );
|
||||
- free( unix_name );
|
||||
+ WARN( "%s not found (%x)\n", debugstr_us(attr->ObjectName), io->u.Status );
|
||||
+ return io->u.Status;
|
||||
}
|
||||
- else WARN( "%s not found (%x)\n", debugstr_us(attr->ObjectName), io->u.Status );
|
||||
+
|
||||
+ io->u.Status = open_unix_file( handle, unix_name, access, attr, attributes,
|
||||
+ nt_attr = *attr;
|
||||
+ if (nt_name.Buffer) nt_attr.ObjectName = &nt_name;
|
||||
+ io->u.Status = open_unix_file( handle, unix_name, access, &nt_attr, attributes,
|
||||
+ sharing, disposition, options, ea_buffer, ea_length );
|
||||
+ free( nt_name.Buffer );
|
||||
|
||||
if (io->u.Status == STATUS_SUCCESS)
|
||||
{
|
||||
@@ -3697,6 +3732,11 @@ NTSTATUS WINAPI NtCreateFile( HANDLE *handle, ACCESS_MASK access, OBJECT_ATTRIBU
|
||||
@@ -3737,6 +3772,11 @@ NTSTATUS WINAPI NtCreateFile( HANDLE *handle, ACCESS_MASK access, OBJECT_ATTRIBU
|
||||
io->Information = FILE_OVERWRITTEN;
|
||||
break;
|
||||
}
|
||||
@@ -141,7 +156,7 @@ index 0a326a7a1bd..a72d95f8378 100644
|
||||
}
|
||||
else if (io->u.Status == STATUS_TOO_MANY_OPENED_FILES)
|
||||
{
|
||||
@@ -3704,6 +3744,7 @@ NTSTATUS WINAPI NtCreateFile( HANDLE *handle, ACCESS_MASK access, OBJECT_ATTRIBU
|
||||
@@ -3744,6 +3784,7 @@ NTSTATUS WINAPI NtCreateFile( HANDLE *handle, ACCESS_MASK access, OBJECT_ATTRIBU
|
||||
if (!once++) ERR_(winediag)( "Too many open files, ulimit -n probably needs to be increased\n" );
|
||||
}
|
||||
|
||||
@@ -150,5 +165,5 @@ index 0a326a7a1bd..a72d95f8378 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.28.0
|
||||
2.20.1
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
From 660851a75e0f3cb8fb0c10441f9f87bed3bdd586 Mon Sep 17 00:00:00 2001
|
||||
From 43a042096de57734560d7745bce70c45722c44fa Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 16 Jan 2014 21:02:11 -0700
|
||||
Subject: server: Add support for deleting junction points with
|
||||
Subject: [PATCH] server: Add support for deleting junction points with
|
||||
RemoveDirectory.
|
||||
|
||||
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>
|
||||
2 files changed, 61 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 49e2771f587..68747b312b4 100644
|
||||
index 7ad25ffd239..5a2ac2114b0 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -5191,7 +5191,7 @@ static void test_reparse_points(void)
|
||||
@@ -5190,7 +5190,7 @@ static void test_reparse_points(void)
|
||||
REPARSE_GUID_DATA_BUFFER guid_buffer;
|
||||
static const WCHAR dotW[] = {'.',0};
|
||||
REPARSE_DATA_BUFFER *buffer = NULL;
|
||||
@@ -23,7 +23,7 @@ index 49e2771f587..68747b312b4 100644
|
||||
INT buffer_len, string_len;
|
||||
IO_STATUS_BLOCK iosb;
|
||||
UNICODE_STRING nameW;
|
||||
@@ -5280,6 +5280,38 @@ static void test_reparse_points(void)
|
||||
@@ -5279,6 +5279,38 @@ static void test_reparse_points(void)
|
||||
"Junction point folder's access time does not match.\n");
|
||||
CloseHandle(handle);
|
||||
|
||||
@@ -63,7 +63,7 @@ index 49e2771f587..68747b312b4 100644
|
||||
/* Cleanup */
|
||||
pRtlFreeUnicodeString(&nameW);
|
||||
diff --git a/server/fd.c b/server/fd.c
|
||||
index edb59b0d540..622b3c246aa 100644
|
||||
index 2dcdd04a892..b67814c7a4f 100644
|
||||
--- a/server/fd.c
|
||||
+++ b/server/fd.c
|
||||
@@ -169,7 +169,8 @@ struct closed_fd
|
||||
@@ -82,9 +82,9 @@ index edb59b0d540..622b3c246aa 100644
|
||||
unsigned int sharing; /* file sharing mode */
|
||||
+ char *unlink_name; /* file name to unlink on close */
|
||||
char *unix_name; /* unix file name */
|
||||
int unix_fd; /* unix file descriptor */
|
||||
unsigned int no_fd_status;/* status to return when unix_fd is -1 */
|
||||
@@ -1119,6 +1121,7 @@ static void inode_close_pending( struct inode *inode, int keep_unlinks )
|
||||
WCHAR *nt_name; /* NT file name */
|
||||
data_size_t nt_namelen; /* length of NT file name */
|
||||
@@ -1121,6 +1123,7 @@ static void inode_close_pending( struct inode *inode, int keep_unlinks )
|
||||
if (!keep_unlinks || !fd->unlink) /* get rid of it unless there's an unlink pending on that file */
|
||||
{
|
||||
list_remove( ptr );
|
||||
@@ -92,7 +92,7 @@ index edb59b0d540..622b3c246aa 100644
|
||||
free( fd->unix_name );
|
||||
free( fd );
|
||||
}
|
||||
@@ -1153,12 +1156,13 @@ static void inode_destroy( struct object *obj )
|
||||
@@ -1155,12 +1158,13 @@ static void inode_destroy( struct object *obj )
|
||||
{
|
||||
/* make sure it is still the same file */
|
||||
struct stat st;
|
||||
@@ -109,7 +109,7 @@ index edb59b0d540..622b3c246aa 100644
|
||||
free( fd->unix_name );
|
||||
free( fd );
|
||||
}
|
||||
@@ -1578,6 +1582,7 @@ static void fd_destroy( struct object *obj )
|
||||
@@ -1581,6 +1585,7 @@ static void fd_destroy( struct object *obj )
|
||||
else /* no inode, close it right away */
|
||||
{
|
||||
if (fd->unix_fd != -1) close( fd->unix_fd );
|
||||
@@ -117,24 +117,24 @@ index edb59b0d540..622b3c246aa 100644
|
||||
free( fd->unix_name );
|
||||
}
|
||||
}
|
||||
@@ -1687,6 +1692,7 @@ static struct fd *alloc_fd_object(void)
|
||||
@@ -1690,6 +1695,7 @@ static struct fd *alloc_fd_object(void)
|
||||
fd->options = 0;
|
||||
fd->sharing = 0;
|
||||
fd->unix_fd = -1;
|
||||
+ fd->unlink_name = NULL;
|
||||
fd->unix_name = NULL;
|
||||
fd->cacheable = 0;
|
||||
fd->signaled = 1;
|
||||
@@ -1722,6 +1728,7 @@ struct fd *alloc_pseudo_fd( const struct fd_ops *fd_user_ops, struct object *use
|
||||
fd->nt_name = NULL;
|
||||
fd->nt_namelen = 0;
|
||||
@@ -1727,6 +1733,7 @@ struct fd *alloc_pseudo_fd( const struct fd_ops *fd_user_ops, struct object *use
|
||||
fd->access = 0;
|
||||
fd->options = options;
|
||||
fd->sharing = 0;
|
||||
+ fd->unlink_name = NULL;
|
||||
fd->unix_name = NULL;
|
||||
fd->unix_fd = -1;
|
||||
fd->cacheable = 0;
|
||||
@@ -1756,6 +1763,12 @@ struct fd *dup_fd_object( struct fd *orig, unsigned int access, unsigned int sha
|
||||
strcpy( fd->unix_name, orig->unix_name );
|
||||
fd->nt_name = NULL;
|
||||
fd->nt_namelen = 0;
|
||||
@@ -1768,6 +1775,12 @@ struct fd *dup_fd_object( struct fd *orig, unsigned int access, unsigned int sha
|
||||
fd->nt_namelen = orig->nt_namelen;
|
||||
}
|
||||
|
||||
+ if (orig->unlink_name)
|
||||
@@ -146,7 +146,7 @@ index edb59b0d540..622b3c246aa 100644
|
||||
if (orig->inode)
|
||||
{
|
||||
struct closed_fd *closed = mem_alloc( sizeof(*closed) );
|
||||
@@ -1768,6 +1781,7 @@ struct fd *dup_fd_object( struct fd *orig, unsigned int access, unsigned int sha
|
||||
@@ -1780,6 +1793,7 @@ struct fd *dup_fd_object( struct fd *orig, unsigned int access, unsigned int sha
|
||||
}
|
||||
closed->unix_fd = fd->unix_fd;
|
||||
closed->unlink = 0;
|
||||
@@ -154,7 +154,7 @@ index edb59b0d540..622b3c246aa 100644
|
||||
closed->unix_name = fd->unix_name;
|
||||
fd->closed = closed;
|
||||
fd->inode = (struct inode *)grab_object( orig->inode );
|
||||
@@ -1909,18 +1923,19 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode,
|
||||
@@ -1964,18 +1978,19 @@ struct fd *open_fd( struct fd *root, const char *name, struct unicode_str nt_nam
|
||||
fd->unix_name = NULL;
|
||||
if ((path = dup_fd_name( root, name )))
|
||||
{
|
||||
@@ -177,7 +177,7 @@ index edb59b0d540..622b3c246aa 100644
|
||||
{
|
||||
unsigned int err;
|
||||
struct inode *inode = get_inode( st.st_dev, st.st_ino, fd->unix_fd );
|
||||
@@ -1938,6 +1953,9 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode,
|
||||
@@ -1993,6 +2008,9 @@ struct fd *open_fd( struct fd *root, const char *name, struct unicode_str nt_nam
|
||||
list_add_head( &inode->open, &fd->inode_entry );
|
||||
closed_fd = NULL;
|
||||
|
||||
@@ -187,10 +187,10 @@ index edb59b0d540..622b3c246aa 100644
|
||||
/* check directory options */
|
||||
if ((options & FILE_DIRECTORY_FILE) && !S_ISDIR(st.st_mode))
|
||||
{
|
||||
@@ -2563,10 +2581,11 @@ static void set_fd_name( struct fd *fd, struct fd *root, const char *nameptr,
|
||||
fchmod( fd->unix_fd, st.st_mode );
|
||||
}
|
||||
@@ -2610,10 +2628,11 @@ static void set_fd_name( struct fd *fd, struct fd *root, const char *nameptr, da
|
||||
|
||||
free( fd->nt_name );
|
||||
fd->nt_name = dup_nt_name( root, nt_name, &fd->nt_namelen );
|
||||
+ free( fd->unlink_name );
|
||||
free( fd->unix_name );
|
||||
+ fd->closed->unlink_name = fd->unlink_name = name;
|
||||
@@ -202,5 +202,5 @@ index edb59b0d540..622b3c246aa 100644
|
||||
return;
|
||||
|
||||
--
|
||||
2.17.1
|
||||
2.20.1
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
From 39739eab0295b80aa081bda4899d7920a5690e09 Mon Sep 17 00:00:00 2001
|
||||
From c4916e098d2aefe4f078bc9c396015e15d6ed9d4 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Sat, 30 Mar 2019 13:41:07 -0600
|
||||
Subject: server: Properly handle file symlink deletion.
|
||||
Subject: [PATCH] server: Properly handle file symlink deletion.
|
||||
|
||||
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, 62 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 8d61257e1e5..b9d9c817eaa 100644
|
||||
index e6c6807e0b2..0c7c5a1bf57 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -5389,18 +5389,18 @@ static void test_reparse_points(void)
|
||||
@@ -5386,18 +5386,18 @@ static void test_reparse_points(void)
|
||||
|
||||
/* Check deleting a file symlink as if it were a directory */
|
||||
bret = RemoveDirectoryW(reparse_path);
|
||||
@@ -39,11 +39,11 @@ index 8d61257e1e5..b9d9c817eaa 100644
|
||||
/* Create a blank slate for directory symlink tests */
|
||||
bret = CreateDirectoryW(reparse_path, NULL);
|
||||
diff --git a/server/fd.c b/server/fd.c
|
||||
index d15e727d19f..0d8eece7bcb 100644
|
||||
index fe662ce6bb5..8613769c1bf 100644
|
||||
--- a/server/fd.c
|
||||
+++ b/server/fd.c
|
||||
@@ -1849,6 +1849,55 @@ char *dup_fd_name( struct fd *root, const char *name )
|
||||
return ret;
|
||||
@@ -1902,6 +1902,55 @@ void get_nt_name( struct fd *fd, struct unicode_str *name )
|
||||
name->len = fd->nt_namelen;
|
||||
}
|
||||
|
||||
+static void decode_symlink(char *name, int *is_dir)
|
||||
@@ -96,9 +96,9 @@ index d15e727d19f..0d8eece7bcb 100644
|
||||
+}
|
||||
+
|
||||
/* open() wrapper that returns a struct fd with no fd user set */
|
||||
struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode, unsigned int access,
|
||||
unsigned int sharing, unsigned int options )
|
||||
@@ -1948,6 +1997,7 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode,
|
||||
struct fd *open_fd( struct fd *root, const char *name, struct unicode_str nt_name,
|
||||
int flags, mode_t *mode, unsigned int access,
|
||||
@@ -2003,6 +2052,7 @@ struct fd *open_fd( struct fd *root, const char *name, struct unicode_str nt_nam
|
||||
{
|
||||
unsigned int err;
|
||||
struct inode *inode = get_inode( st.st_dev, st.st_ino, fd->unix_fd );
|
||||
@@ -106,7 +106,7 @@ index d15e727d19f..0d8eece7bcb 100644
|
||||
|
||||
if (!inode)
|
||||
{
|
||||
@@ -1962,16 +2012,20 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode,
|
||||
@@ -2017,16 +2067,20 @@ struct fd *open_fd( struct fd *root, const char *name, struct unicode_str nt_nam
|
||||
list_add_head( &inode->open, &fd->inode_entry );
|
||||
closed_fd = NULL;
|
||||
|
||||
@@ -130,5 +130,5 @@ index d15e727d19f..0d8eece7bcb 100644
|
||||
set_error( STATUS_FILE_IS_A_DIRECTORY );
|
||||
goto error;
|
||||
--
|
||||
2.17.1
|
||||
2.20.1
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 846818cb0adabcc072f08b8816ac91019ef3150a Mon Sep 17 00:00:00 2001
|
||||
From 3544dcdce27e40469fe57ddbc9be2128cf13cee8 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Mon, 2 Nov 2020 20:24:07 -0600
|
||||
Subject: [PATCH] ntdll: Reimplement Win32 futexes on top of thread-ID alerts.
|
||||
@@ -14,10 +14,10 @@ Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
|
||||
6 files changed, 187 insertions(+), 173 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
|
||||
index 41e8666a25c..8ba5c2e22fd 100644
|
||||
index 60b8ffc46d6..6d6b73effb4 100644
|
||||
--- a/dlls/ntdll/ntdll_misc.h
|
||||
+++ b/dlls/ntdll/ntdll_misc.h
|
||||
@@ -88,6 +88,8 @@ extern void init_directories(void) DECLSPEC_HIDDEN;
|
||||
@@ -89,6 +89,8 @@ extern void init_directories(void) DECLSPEC_HIDDEN;
|
||||
|
||||
extern struct _KUSER_SHARED_DATA *user_shared_data DECLSPEC_HIDDEN;
|
||||
|
||||
@@ -261,10 +261,10 @@ index 8e5a3a3a3a3..3a74b55aa1e 100644
|
||||
}
|
||||
|
||||
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
|
||||
index 43c769f2d2a..bb386648a70 100644
|
||||
index e8853415205..585b30ea21b 100644
|
||||
--- a/dlls/ntdll/unix/loader.c
|
||||
+++ b/dlls/ntdll/unix/loader.c
|
||||
@@ -1513,9 +1513,6 @@ static struct unix_funcs unix_funcs =
|
||||
@@ -1582,9 +1582,6 @@ static struct unix_funcs unix_funcs =
|
||||
#endif
|
||||
DbgUiIssueRemoteBreakin,
|
||||
RtlGetSystemTimePrecise,
|
||||
@@ -275,7 +275,7 @@ index 43c769f2d2a..bb386648a70 100644
|
||||
fast_RtlpUnWaitCriticalSection,
|
||||
fast_RtlDeleteCriticalSection,
|
||||
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
|
||||
index 17c5921cdec..00e9eebe46e 100644
|
||||
index 569334580cd..39766a88e20 100644
|
||||
--- a/dlls/ntdll/unix/sync.c
|
||||
+++ b/dlls/ntdll/unix/sync.c
|
||||
@@ -77,10 +77,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(sync);
|
||||
@@ -314,7 +314,7 @@ index 17c5921cdec..00e9eebe46e 100644
|
||||
/* create a struct security_descriptor and contained information in one contiguous piece of memory */
|
||||
NTSTATUS alloc_object_attributes( const OBJECT_ATTRIBUTES *attr, struct object_attributes **ret,
|
||||
data_size_t *ret_len )
|
||||
@@ -2679,71 +2657,6 @@ NTSTATUS CDECL fast_RtlWakeConditionVariable( RTL_CONDITION_VARIABLE *variable,
|
||||
@@ -2839,71 +2817,6 @@ NTSTATUS CDECL fast_RtlWakeConditionVariable( RTL_CONDITION_VARIABLE *variable,
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -386,7 +386,7 @@ index 17c5921cdec..00e9eebe46e 100644
|
||||
#else
|
||||
|
||||
NTSTATUS CDECL fast_RtlTryAcquireSRWLockExclusive( RTL_SRWLOCK *lock )
|
||||
@@ -2786,79 +2699,4 @@ NTSTATUS CDECL fast_wait_cv( RTL_CONDITION_VARIABLE *variable, const void *value
|
||||
@@ -2946,79 +2859,4 @@ NTSTATUS CDECL fast_wait_cv( RTL_CONDITION_VARIABLE *variable, const void *value
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
@@ -467,15 +467,15 @@ index 17c5921cdec..00e9eebe46e 100644
|
||||
- mutex_unlock( &addr_mutex );
|
||||
-}
|
||||
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
|
||||
index 0847c7e07ca..95ed792baee 100644
|
||||
index ed78d08559a..cd890152230 100644
|
||||
--- a/dlls/ntdll/unixlib.h
|
||||
+++ b/dlls/ntdll/unixlib.h
|
||||
@@ -27,7 +27,7 @@
|
||||
struct _DISPATCHER_CONTEXT;
|
||||
|
||||
/* increment this when you change the function table */
|
||||
-#define NTDLL_UNIXLIB_VERSION 107
|
||||
+#define NTDLL_UNIXLIB_VERSION 108
|
||||
-#define NTDLL_UNIXLIB_VERSION 108
|
||||
+#define NTDLL_UNIXLIB_VERSION 109
|
||||
|
||||
struct unix_funcs
|
||||
{
|
||||
@@ -491,5 +491,5 @@ index 0847c7e07ca..95ed792baee 100644
|
||||
/* fast locks */
|
||||
NTSTATUS (CDECL *fast_RtlpWaitForCriticalSection)( RTL_CRITICAL_SECTION *crit, int timeout );
|
||||
--
|
||||
2.29.2
|
||||
2.20.1
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 244f1f1aa95b7d7fbe1aa6d9f5247871e50cd62b Mon Sep 17 00:00:00 2001
|
||||
From c9d5f5826099aa1f80e1aa491912ac291115ebe0 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Mon, 31 Aug 2020 23:38:09 -0500
|
||||
Subject: [PATCH] ntdll: Reimplement the critical section fast path on top of
|
||||
@@ -14,10 +14,10 @@ Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
|
||||
5 files changed, 24 insertions(+), 131 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c
|
||||
index 41e95f9db4f..28bb184b665 100644
|
||||
index 66f807636c7..5bd093e42f5 100644
|
||||
--- a/dlls/ntdll/sync.c
|
||||
+++ b/dlls/ntdll/sync.c
|
||||
@@ -736,19 +736,26 @@ static inline HANDLE get_semaphore( RTL_CRITICAL_SECTION *crit )
|
||||
@@ -766,19 +766,26 @@ static inline HANDLE get_semaphore( RTL_CRITICAL_SECTION *crit )
|
||||
|
||||
static inline NTSTATUS wait_semaphore( RTL_CRITICAL_SECTION *crit, int timeout )
|
||||
{
|
||||
@@ -52,7 +52,7 @@ index 41e95f9db4f..28bb184b665 100644
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
@@ -838,8 +845,6 @@ NTSTATUS WINAPI RtlDeleteCriticalSection( RTL_CRITICAL_SECTION *crit )
|
||||
@@ -868,8 +875,6 @@ NTSTATUS WINAPI RtlDeleteCriticalSection( RTL_CRITICAL_SECTION *crit )
|
||||
RtlFreeHeap( GetProcessHeap(), 0, crit->DebugInfo );
|
||||
crit->DebugInfo = NULL;
|
||||
}
|
||||
@@ -61,7 +61,7 @@ index 41e95f9db4f..28bb184b665 100644
|
||||
}
|
||||
else NtClose( crit->LockSemaphore );
|
||||
crit->LockSemaphore = 0;
|
||||
@@ -915,12 +920,18 @@ NTSTATUS WINAPI RtlpUnWaitCriticalSection( RTL_CRITICAL_SECTION *crit )
|
||||
@@ -945,12 +950,18 @@ NTSTATUS WINAPI RtlpUnWaitCriticalSection( RTL_CRITICAL_SECTION *crit )
|
||||
NTSTATUS ret;
|
||||
|
||||
/* debug info is cleared by MakeCriticalSectionGlobal */
|
||||
@@ -83,10 +83,10 @@ index 41e95f9db4f..28bb184b665 100644
|
||||
return ret;
|
||||
}
|
||||
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
|
||||
index bb386648a70..b85b6633136 100644
|
||||
index 585b30ea21b..5784359668e 100644
|
||||
--- a/dlls/ntdll/unix/loader.c
|
||||
+++ b/dlls/ntdll/unix/loader.c
|
||||
@@ -1513,9 +1513,6 @@ static struct unix_funcs unix_funcs =
|
||||
@@ -1582,9 +1582,6 @@ static struct unix_funcs unix_funcs =
|
||||
#endif
|
||||
DbgUiIssueRemoteBreakin,
|
||||
RtlGetSystemTimePrecise,
|
||||
@@ -97,10 +97,10 @@ index bb386648a70..b85b6633136 100644
|
||||
fast_RtlAcquireSRWLockExclusive,
|
||||
fast_RtlTryAcquireSRWLockShared,
|
||||
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
|
||||
index 00e9eebe46e..3bf43f80ce9 100644
|
||||
index 39766a88e20..8ff468d7a13 100644
|
||||
--- a/dlls/ntdll/unix/sync.c
|
||||
+++ b/dlls/ntdll/unix/sync.c
|
||||
@@ -2252,115 +2252,6 @@ NTSTATUS WINAPI NtWaitForAlertByThreadId( const void *address, const LARGE_INTEG
|
||||
@@ -2412,115 +2412,6 @@ NTSTATUS WINAPI NtWaitForAlertByThreadId( const void *address, const LARGE_INTEG
|
||||
}
|
||||
|
||||
|
||||
@@ -217,10 +217,10 @@ index 00e9eebe46e..3bf43f80ce9 100644
|
||||
|
||||
/* Futex-based SRW lock implementation:
|
||||
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
|
||||
index abc2f6d2bd4..a4f3fc33f5f 100644
|
||||
index 935a0a2894c..4686bf1b269 100644
|
||||
--- a/dlls/ntdll/unix/unix_private.h
|
||||
+++ b/dlls/ntdll/unix/unix_private.h
|
||||
@@ -93,9 +93,6 @@ extern void (WINAPI *pKiUserApcDispatcher)(CONTEXT*,ULONG_PTR,ULONG_PTR,ULON
|
||||
@@ -97,9 +97,6 @@ extern void (WINAPI *pKiUserApcDispatcher)(CONTEXT*,ULONG_PTR,ULONG_PTR,ULON
|
||||
extern NTSTATUS (WINAPI *pKiUserExceptionDispatcher)(EXCEPTION_RECORD*,CONTEXT*) DECLSPEC_HIDDEN;
|
||||
extern void (WINAPI *pLdrInitializeThunk)(CONTEXT*,void**,ULONG_PTR,ULONG_PTR) DECLSPEC_HIDDEN;
|
||||
extern void (WINAPI *pRtlUserThreadStart)( PRTL_THREAD_START_ROUTINE entry, void *arg ) DECLSPEC_HIDDEN;
|
||||
@@ -231,15 +231,15 @@ index abc2f6d2bd4..a4f3fc33f5f 100644
|
||||
extern NTSTATUS CDECL fast_RtlAcquireSRWLockExclusive( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN;
|
||||
extern NTSTATUS CDECL fast_RtlTryAcquireSRWLockShared( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
|
||||
index 95ed792baee..4487c825924 100644
|
||||
index cd890152230..99415e1c412 100644
|
||||
--- a/dlls/ntdll/unixlib.h
|
||||
+++ b/dlls/ntdll/unixlib.h
|
||||
@@ -27,7 +27,7 @@
|
||||
struct _DISPATCHER_CONTEXT;
|
||||
|
||||
/* increment this when you change the function table */
|
||||
-#define NTDLL_UNIXLIB_VERSION 108
|
||||
+#define NTDLL_UNIXLIB_VERSION 109
|
||||
-#define NTDLL_UNIXLIB_VERSION 109
|
||||
+#define NTDLL_UNIXLIB_VERSION 110
|
||||
|
||||
struct unix_funcs
|
||||
{
|
||||
@@ -254,5 +254,5 @@ index 95ed792baee..4487c825924 100644
|
||||
NTSTATUS (CDECL *fast_RtlAcquireSRWLockExclusive)( RTL_SRWLOCK *lock );
|
||||
NTSTATUS (CDECL *fast_RtlTryAcquireSRWLockShared)( RTL_SRWLOCK *lock );
|
||||
--
|
||||
2.29.2
|
||||
2.20.1
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 4d1cd1db8bafc0045a5d93154c89bc8edeccccda Mon Sep 17 00:00:00 2001
|
||||
From 9bd992e74a073a6ffce07463edeea29ad7aecaa5 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Mon, 31 Aug 2020 23:55:29 -0500
|
||||
Subject: [PATCH] ntdll: Get rid of the direct futex path for condition
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
|
||||
5 files changed, 9 insertions(+), 96 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c
|
||||
index 28bb184b665..0e86ecead3d 100644
|
||||
index 5bd093e42f5..42b62a2cd87 100644
|
||||
--- a/dlls/ntdll/sync.c
|
||||
+++ b/dlls/ntdll/sync.c
|
||||
@@ -450,11 +450,8 @@ void WINAPI RtlInitializeConditionVariable( RTL_CONDITION_VARIABLE *variable )
|
||||
@@ -80,10 +80,10 @@ index 28bb184b665..0e86ecead3d 100644
|
||||
if (flags & RTL_CONDITION_VARIABLE_LOCKMODE_SHARED)
|
||||
RtlAcquireSRWLockShared( lock );
|
||||
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
|
||||
index b85b6633136..ad242b91800 100644
|
||||
index 5784359668e..2269a9f62c9 100644
|
||||
--- a/dlls/ntdll/unix/loader.c
|
||||
+++ b/dlls/ntdll/unix/loader.c
|
||||
@@ -1519,8 +1519,6 @@ static struct unix_funcs unix_funcs =
|
||||
@@ -1588,8 +1588,6 @@ static struct unix_funcs unix_funcs =
|
||||
fast_RtlAcquireSRWLockShared,
|
||||
fast_RtlReleaseSRWLockExclusive,
|
||||
fast_RtlReleaseSRWLockShared,
|
||||
@@ -93,7 +93,7 @@ index b85b6633136..ad242b91800 100644
|
||||
ntdll_ceil,
|
||||
ntdll_cos,
|
||||
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
|
||||
index 3bf43f80ce9..07e7939fc59 100644
|
||||
index 8ff468d7a13..ca4b5b22f53 100644
|
||||
--- a/dlls/ntdll/unix/sync.c
|
||||
+++ b/dlls/ntdll/unix/sync.c
|
||||
@@ -166,23 +166,6 @@ static int *get_futex(void **ptr)
|
||||
@@ -120,7 +120,7 @@ index 3bf43f80ce9..07e7939fc59 100644
|
||||
#endif
|
||||
|
||||
|
||||
@@ -2504,50 +2487,6 @@ NTSTATUS CDECL fast_RtlReleaseSRWLockShared( RTL_SRWLOCK *lock )
|
||||
@@ -2664,50 +2647,6 @@ NTSTATUS CDECL fast_RtlReleaseSRWLockShared( RTL_SRWLOCK *lock )
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -171,7 +171,7 @@ index 3bf43f80ce9..07e7939fc59 100644
|
||||
#else
|
||||
|
||||
NTSTATUS CDECL fast_RtlTryAcquireSRWLockExclusive( RTL_SRWLOCK *lock )
|
||||
@@ -2580,14 +2519,4 @@ NTSTATUS CDECL fast_RtlReleaseSRWLockShared( RTL_SRWLOCK *lock )
|
||||
@@ -2740,14 +2679,4 @@ NTSTATUS CDECL fast_RtlReleaseSRWLockShared( RTL_SRWLOCK *lock )
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
@@ -187,10 +187,10 @@ index 3bf43f80ce9..07e7939fc59 100644
|
||||
-
|
||||
#endif
|
||||
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
|
||||
index a4f3fc33f5f..d82b8c90e84 100644
|
||||
index 4686bf1b269..0da243799f1 100644
|
||||
--- a/dlls/ntdll/unix/unix_private.h
|
||||
+++ b/dlls/ntdll/unix/unix_private.h
|
||||
@@ -99,10 +99,7 @@ extern NTSTATUS CDECL fast_RtlTryAcquireSRWLockShared( RTL_SRWLOCK *lock ) DECLS
|
||||
@@ -103,10 +103,7 @@ extern NTSTATUS CDECL fast_RtlTryAcquireSRWLockShared( RTL_SRWLOCK *lock ) DECLS
|
||||
extern NTSTATUS CDECL fast_RtlAcquireSRWLockShared( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN;
|
||||
extern NTSTATUS CDECL fast_RtlReleaseSRWLockExclusive( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN;
|
||||
extern NTSTATUS CDECL fast_RtlReleaseSRWLockShared( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN;
|
||||
@@ -202,15 +202,15 @@ index a4f3fc33f5f..d82b8c90e84 100644
|
||||
extern NTSTATUS CDECL get_initial_environment( WCHAR **wargv[], WCHAR *env, SIZE_T *size ) DECLSPEC_HIDDEN;
|
||||
extern NTSTATUS CDECL get_startup_info( startup_info_t *info, SIZE_T *total_size, SIZE_T *info_size ) DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
|
||||
index 4487c825924..0d056ef2b80 100644
|
||||
index 99415e1c412..bd74bf8267a 100644
|
||||
--- a/dlls/ntdll/unixlib.h
|
||||
+++ b/dlls/ntdll/unixlib.h
|
||||
@@ -27,7 +27,7 @@
|
||||
struct _DISPATCHER_CONTEXT;
|
||||
|
||||
/* increment this when you change the function table */
|
||||
-#define NTDLL_UNIXLIB_VERSION 109
|
||||
+#define NTDLL_UNIXLIB_VERSION 110
|
||||
-#define NTDLL_UNIXLIB_VERSION 110
|
||||
+#define NTDLL_UNIXLIB_VERSION 111
|
||||
|
||||
struct unix_funcs
|
||||
{
|
||||
@@ -225,5 +225,5 @@ index 4487c825924..0d056ef2b80 100644
|
||||
/* math functions */
|
||||
double (CDECL *atan)( double d );
|
||||
--
|
||||
2.29.2
|
||||
2.20.1
|
||||
|
||||
|
@@ -1,19 +1,19 @@
|
||||
From 55ef726442489ed42eba1981fe038b95f910d511 Mon Sep 17 00:00:00 2001
|
||||
From 5fde43f2d58b318d8e9c8a85dd21dc61fbeb0d95 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Sun, 22 Nov 2020 20:51:10 -0600
|
||||
Subject: [PATCH] ntdll: Reimplement SRW locks on top of Win32 futexes.
|
||||
|
||||
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
|
||||
---
|
||||
dlls/ntdll/sync.c | 316 +++++++++++++++------------------
|
||||
dlls/ntdll/sync.c | 312 +++++++++++++++------------------
|
||||
dlls/ntdll/unix/loader.c | 6 -
|
||||
dlls/ntdll/unix/sync.c | 309 --------------------------------
|
||||
dlls/ntdll/unix/unix_private.h | 6 -
|
||||
dlls/ntdll/unixlib.h | 10 +-
|
||||
5 files changed, 143 insertions(+), 504 deletions(-)
|
||||
5 files changed, 141 insertions(+), 502 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c
|
||||
index 0e86ecead3d..34b076d6b71 100644
|
||||
index 42b62a2cd87..d4944951dc6 100644
|
||||
--- a/dlls/ntdll/sync.c
|
||||
+++ b/dlls/ntdll/sync.c
|
||||
@@ -161,127 +161,23 @@ DWORD WINAPI RtlRunOnceExecuteOnce( RTL_RUN_ONCE *once, PRTL_RUN_ONCE_INIT_FN fu
|
||||
@@ -120,7 +120,8 @@ index 0e86ecead3d..34b076d6b71 100644
|
||||
-}
|
||||
-
|
||||
-static inline void srwlock_leave_exclusive( RTL_SRWLOCK *lock, unsigned int val )
|
||||
-{
|
||||
+struct srw_lock
|
||||
{
|
||||
- /* Used when a thread leaves an exclusive section. If there are other
|
||||
- * exclusive access threads they are processed first, followed by
|
||||
- * the shared waiters. */
|
||||
@@ -133,7 +134,8 @@ index 0e86ecead3d..34b076d6b71 100644
|
||||
- NtReleaseKeyedEvent( 0, srwlock_key_shared(lock), FALSE, NULL );
|
||||
- }
|
||||
-}
|
||||
-
|
||||
+ short exclusive_waiters;
|
||||
|
||||
-static inline void srwlock_leave_shared( RTL_SRWLOCK *lock, unsigned int val )
|
||||
-{
|
||||
- /* Wake up one exclusive thread as soon as the last shared access thread
|
||||
@@ -141,10 +143,6 @@ index 0e86ecead3d..34b076d6b71 100644
|
||||
- if ((val & SRWLOCK_MASK_EXCLUSIVE_QUEUE) && !(val & SRWLOCK_MASK_SHARED_QUEUE))
|
||||
- NtReleaseKeyedEvent( 0, srwlock_key_exclusive(lock), FALSE, NULL );
|
||||
-}
|
||||
+struct srw_lock
|
||||
+{
|
||||
+ short exclusive_waiters;
|
||||
+
|
||||
+ /* Number of shared owners, or -1 if owned exclusive.
|
||||
+ *
|
||||
+ * Sadly Windows has no equivalent to FUTEX_WAIT_BITSET, so in order to wake
|
||||
@@ -274,11 +272,11 @@ index 0e86ecead3d..34b076d6b71 100644
|
||||
+ {
|
||||
+ old.s = *u.s;
|
||||
+ new = old;
|
||||
+
|
||||
+ if (old.s.owners != -1) ERR("Lock %p is not owned exclusive!\n", lock);
|
||||
|
||||
- srwlock_leave_exclusive( lock, srwlock_unlock_exclusive( (unsigned int *)&lock->Ptr,
|
||||
- - SRWLOCK_RES_EXCLUSIVE ) - SRWLOCK_RES_EXCLUSIVE );
|
||||
+ if (old.s.owners != -1) ERR("Lock %p is not owned exclusive!\n", lock);
|
||||
+
|
||||
+ new.s.owners = 0;
|
||||
+ } while (InterlockedCompareExchange( u.l, new.l, old.l ) != old.l);
|
||||
+
|
||||
@@ -302,12 +300,12 @@ index 0e86ecead3d..34b076d6b71 100644
|
||||
+ {
|
||||
+ old.s = *u.s;
|
||||
+ new = old;
|
||||
+
|
||||
+ if (old.s.owners == -1) ERR("Lock %p is owned exclusive!\n", lock);
|
||||
+ else if (!old.s.owners) ERR("Lock %p is not owned shared!\n", lock);
|
||||
|
||||
- srwlock_leave_shared( lock, srwlock_lock_exclusive( (unsigned int *)&lock->Ptr,
|
||||
- - SRWLOCK_RES_SHARED ) - SRWLOCK_RES_SHARED );
|
||||
+ if (old.s.owners == -1) ERR("Lock %p is owned exclusive!\n", lock);
|
||||
+ else if (!old.s.owners) ERR("Lock %p is not owned shared!\n", lock);
|
||||
+
|
||||
+ --new.s.owners;
|
||||
+ } while (InterlockedCompareExchange( u.l, new.l, old.l ) != old.l);
|
||||
+
|
||||
@@ -331,7 +329,9 @@ index 0e86ecead3d..34b076d6b71 100644
|
||||
+ {
|
||||
+ old.s = *u.s;
|
||||
+ new.s = old.s;
|
||||
+
|
||||
|
||||
- return InterlockedCompareExchange( (int *)&lock->Ptr, SRWLOCK_MASK_IN_EXCLUSIVE |
|
||||
- SRWLOCK_RES_EXCLUSIVE, 0 ) == 0;
|
||||
+ if (!old.s.owners)
|
||||
+ {
|
||||
+ /* Not locked exclusive or shared. We can try to grab it. */
|
||||
@@ -343,9 +343,7 @@ index 0e86ecead3d..34b076d6b71 100644
|
||||
+ ret = FALSE;
|
||||
+ }
|
||||
+ } while (InterlockedCompareExchange( u.l, new.l, old.l ) != old.l);
|
||||
|
||||
- return InterlockedCompareExchange( (int *)&lock->Ptr, SRWLOCK_MASK_IN_EXCLUSIVE |
|
||||
- SRWLOCK_RES_EXCLUSIVE, 0 ) == 0;
|
||||
+
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
@@ -393,10 +391,10 @@ index 0e86ecead3d..34b076d6b71 100644
|
||||
|
||||
/***********************************************************************
|
||||
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
|
||||
index ad242b91800..11b94972c3d 100644
|
||||
index 2269a9f62c9..d8f1a00ade7 100644
|
||||
--- a/dlls/ntdll/unix/loader.c
|
||||
+++ b/dlls/ntdll/unix/loader.c
|
||||
@@ -1513,12 +1513,6 @@ static struct unix_funcs unix_funcs =
|
||||
@@ -1582,12 +1582,6 @@ static struct unix_funcs unix_funcs =
|
||||
#endif
|
||||
DbgUiIssueRemoteBreakin,
|
||||
RtlGetSystemTimePrecise,
|
||||
@@ -410,7 +408,7 @@ index ad242b91800..11b94972c3d 100644
|
||||
ntdll_ceil,
|
||||
ntdll_cos,
|
||||
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
|
||||
index 07e7939fc59..97781a3f0ae 100644
|
||||
index ca4b5b22f53..4e4345098ca 100644
|
||||
--- a/dlls/ntdll/unix/sync.c
|
||||
+++ b/dlls/ntdll/unix/sync.c
|
||||
@@ -114,8 +114,6 @@ static inline ULONGLONG monotonic_counter(void)
|
||||
@@ -456,7 +454,7 @@ index 07e7939fc59..97781a3f0ae 100644
|
||||
#endif
|
||||
|
||||
|
||||
@@ -2233,290 +2211,3 @@ NTSTATUS WINAPI NtWaitForAlertByThreadId( const void *address, const LARGE_INTEG
|
||||
@@ -2393,290 +2371,3 @@ NTSTATUS WINAPI NtWaitForAlertByThreadId( const void *address, const LARGE_INTEG
|
||||
return NtWaitForSingleObject( ntdll_get_thread_data()->tid_alert_event, FALSE, timeout );
|
||||
#endif
|
||||
}
|
||||
@@ -748,10 +746,10 @@ index 07e7939fc59..97781a3f0ae 100644
|
||||
-
|
||||
-#endif
|
||||
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
|
||||
index d82b8c90e84..1cf917ab89d 100644
|
||||
index 0da243799f1..c1ddb47a611 100644
|
||||
--- a/dlls/ntdll/unix/unix_private.h
|
||||
+++ b/dlls/ntdll/unix/unix_private.h
|
||||
@@ -93,12 +93,6 @@ extern void (WINAPI *pKiUserApcDispatcher)(CONTEXT*,ULONG_PTR,ULONG_PTR,ULON
|
||||
@@ -97,12 +97,6 @@ extern void (WINAPI *pKiUserApcDispatcher)(CONTEXT*,ULONG_PTR,ULONG_PTR,ULON
|
||||
extern NTSTATUS (WINAPI *pKiUserExceptionDispatcher)(EXCEPTION_RECORD*,CONTEXT*) DECLSPEC_HIDDEN;
|
||||
extern void (WINAPI *pLdrInitializeThunk)(CONTEXT*,void**,ULONG_PTR,ULONG_PTR) DECLSPEC_HIDDEN;
|
||||
extern void (WINAPI *pRtlUserThreadStart)( PRTL_THREAD_START_ROUTINE entry, void *arg ) DECLSPEC_HIDDEN;
|
||||
@@ -765,15 +763,15 @@ index d82b8c90e84..1cf917ab89d 100644
|
||||
|
||||
extern NTSTATUS CDECL get_initial_environment( WCHAR **wargv[], WCHAR *env, SIZE_T *size ) DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
|
||||
index 0d056ef2b80..4c2693b3f6c 100644
|
||||
index bd74bf8267a..534d22483e7 100644
|
||||
--- a/dlls/ntdll/unixlib.h
|
||||
+++ b/dlls/ntdll/unixlib.h
|
||||
@@ -27,7 +27,7 @@
|
||||
struct _DISPATCHER_CONTEXT;
|
||||
|
||||
/* increment this when you change the function table */
|
||||
-#define NTDLL_UNIXLIB_VERSION 110
|
||||
+#define NTDLL_UNIXLIB_VERSION 111
|
||||
-#define NTDLL_UNIXLIB_VERSION 111
|
||||
+#define NTDLL_UNIXLIB_VERSION 112
|
||||
|
||||
struct unix_funcs
|
||||
{
|
||||
@@ -793,5 +791,5 @@ index 0d056ef2b80..4c2693b3f6c 100644
|
||||
double (CDECL *atan)( double d );
|
||||
double (CDECL *ceil)( double d );
|
||||
--
|
||||
2.29.2
|
||||
2.20.1
|
||||
|
||||
|
@@ -1,15 +1,15 @@
|
||||
From ee7a43bf36722acba4c870409fc15ea5bdf4a80b Mon Sep 17 00:00:00 2001
|
||||
From 6147ac6f68fe96fd53d52b11e16dafbec37b128d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 26 May 2017 05:17:17 +0200
|
||||
Subject: [PATCH] ntdll: Implement opening files through nt device paths.
|
||||
|
||||
---
|
||||
dlls/ntdll/tests/file.c | 25 +++++++-
|
||||
dlls/ntdll/unix/file.c | 122 +++++++++++++++++++++++++++++++++++++++-
|
||||
2 files changed, 145 insertions(+), 2 deletions(-)
|
||||
dlls/ntdll/unix/file.c | 124 +++++++++++++++++++++++++++++++++++++++-
|
||||
2 files changed, 146 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 6164b0c4bde..6610edbd042 100644
|
||||
index 839046a7488..8756c18c9e8 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -135,18 +135,22 @@ static void WINAPI apc( void *arg, IO_STATUS_BLOCK *iosb, ULONG reserved )
|
||||
@@ -36,7 +36,7 @@ index 6164b0c4bde..6610edbd042 100644
|
||||
OBJECT_ATTRIBUTES attr;
|
||||
IO_STATUS_BLOCK io;
|
||||
UNICODE_STRING nameW;
|
||||
@@ -327,6 +331,25 @@ static void create_file_test(void)
|
||||
@@ -326,6 +330,25 @@ static void create_file_test(void)
|
||||
status = pNtQueryFullAttributesFile( &attr, &info );
|
||||
ok( status == STATUS_OBJECT_NAME_INVALID,
|
||||
"query %s failed %x\n", wine_dbgstr_w(nameW.Buffer), status );
|
||||
@@ -63,19 +63,21 @@ index 6164b0c4bde..6610edbd042 100644
|
||||
|
||||
static void open_file_test(void)
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index b6529241739..74f3f707444 100644
|
||||
index 5ab24e2c334..5ad856dbebf 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -3250,7 +3250,7 @@ static NTSTATUS nt_to_unix_file_name_attr( const OBJECT_ATTRIBUTES *attr, char *
|
||||
@@ -3282,8 +3282,8 @@ static NTSTATUS nt_to_unix_file_name_attr( const OBJECT_ATTRIBUTES *attr, char *
|
||||
* element doesn't have to exist; in that case STATUS_NO_SUCH_FILE is
|
||||
* returned, but the unix name is still filled in properly.
|
||||
*/
|
||||
-NTSTATUS nt_to_unix_file_name( const UNICODE_STRING *nameW, char **unix_name_ret, UINT disposition )
|
||||
+static NTSTATUS nt_to_unix_file_name_internal( const UNICODE_STRING *nameW, char **unix_name_ret, UINT disposition )
|
||||
-NTSTATUS nt_to_unix_file_name( const UNICODE_STRING *nameW, char **unix_name_ret,
|
||||
- UNICODE_STRING *nt_name, UINT disposition )
|
||||
+static NTSTATUS nt_to_unix_file_name_internal( const UNICODE_STRING *nameW, char **unix_name_ret,
|
||||
+ UNICODE_STRING *nt_name, UINT disposition )
|
||||
{
|
||||
static const WCHAR unixW[] = {'u','n','i','x'};
|
||||
static const WCHAR pipeW[] = {'p','i','p','e'};
|
||||
@@ -3387,6 +3387,126 @@ NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, char *nam
|
||||
@@ -3421,6 +3421,126 @@ NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, char *nam
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -154,7 +156,7 @@ index b6529241739..74f3f707444 100644
|
||||
+ * returned, but the unix name is still filled in properly.
|
||||
+ */
|
||||
+NTSTATUS nt_to_unix_file_name( const UNICODE_STRING *nameW, char **unix_name_ret,
|
||||
+ UINT disposition )
|
||||
+ UNICODE_STRING *nt_name, UINT disposition )
|
||||
+{
|
||||
+ static const WCHAR systemrootW[] = {'\\','S','y','s','t','e','m','R','o','o','t','\\',0};
|
||||
+ static const WCHAR dosprefixW[] = {'\\','?','?','\\'};
|
||||
@@ -177,7 +179,7 @@ index b6529241739..74f3f707444 100644
|
||||
+ prefix = user_shared_data->NtSystemRoot;
|
||||
+ }
|
||||
+ else
|
||||
+ return nt_to_unix_file_name_internal( nameW, unix_name_ret, disposition );
|
||||
+ return nt_to_unix_file_name_internal( nameW, unix_name_ret, nt_name, disposition );
|
||||
+
|
||||
+ name_len = sizeof(dosprefixW) + wcslen(prefix) * sizeof(WCHAR) +
|
||||
+ nameW->Length - offset * sizeof(WCHAR) + sizeof(WCHAR);
|
||||
@@ -194,7 +196,7 @@ index b6529241739..74f3f707444 100644
|
||||
+
|
||||
+ dospathW.Buffer = name;
|
||||
+ dospathW.Length = wcslen( name ) * sizeof(WCHAR);
|
||||
+ status = nt_to_unix_file_name_internal( &dospathW, unix_name_ret, disposition );
|
||||
+ status = nt_to_unix_file_name_internal( &dospathW, unix_name_ret, nt_name, disposition );
|
||||
+
|
||||
+ free( name );
|
||||
+ return status;
|
||||
@@ -203,5 +205,5 @@ index b6529241739..74f3f707444 100644
|
||||
/******************************************************************
|
||||
* unix_to_nt_file_name
|
||||
--
|
||||
2.27.0
|
||||
2.20.1
|
||||
|
||||
|
@@ -1,273 +0,0 @@
|
||||
From d945688dd6b41731ea1ea515556e78d8de73979f Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Sun, 28 May 2017 05:19:30 +0200
|
||||
Subject: [PATCH] ntdll: Implement NtQueryVirtualMemory(MemorySectionName).
|
||||
(v3)
|
||||
|
||||
Contains several improvements by Sebastian Lackner <sebastian@fds-team.de>.
|
||||
---
|
||||
dlls/ntdll/unix/file.c | 2 +-
|
||||
dlls/ntdll/unix/process.c | 2 +-
|
||||
dlls/ntdll/unix/unix_private.h | 2 +
|
||||
dlls/ntdll/unix/virtual.c | 101 ++++++++++++++++++++++++++++++++-
|
||||
dlls/psapi/tests/psapi_main.c | 8 +--
|
||||
server/mapping.c | 29 ++++++++++
|
||||
server/protocol.def | 9 +++
|
||||
7 files changed, 143 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index 6a47422ac7f..82f314691c0 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -2014,7 +2014,7 @@ static NTSTATUS fill_file_info( const struct stat *st, ULONG attr, void *ptr,
|
||||
}
|
||||
|
||||
|
||||
-static NTSTATUS server_get_unix_name( HANDLE handle, char **unix_name, BOOL nofollow )
|
||||
+NTSTATUS server_get_unix_name( HANDLE handle, char **unix_name, BOOL nofollow )
|
||||
{
|
||||
data_size_t size = 1024;
|
||||
NTSTATUS ret;
|
||||
diff --git a/dlls/ntdll/unix/process.c b/dlls/ntdll/unix/process.c
|
||||
index a094c607da4..90617594411 100644
|
||||
--- a/dlls/ntdll/unix/process.c
|
||||
+++ b/dlls/ntdll/unix/process.c
|
||||
@@ -478,7 +478,7 @@ static ULONG get_env_size( const RTL_USER_PROCESS_PARAMETERS *params, char **win
|
||||
*
|
||||
* Simplified version of RtlDosPathNameToNtPathName_U.
|
||||
*/
|
||||
-static WCHAR *get_nt_pathname( const UNICODE_STRING *str )
|
||||
+WCHAR *get_nt_pathname( const UNICODE_STRING *str )
|
||||
{
|
||||
static const WCHAR ntprefixW[] = {'\\','?','?','\\',0};
|
||||
static const WCHAR uncprefixW[] = {'U','N','C','\\',0};
|
||||
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
|
||||
index 6b7b8a4ce7c..3371a2ffaf0 100644
|
||||
--- a/dlls/ntdll/unix/unix_private.h
|
||||
+++ b/dlls/ntdll/unix/unix_private.h
|
||||
@@ -108,6 +108,7 @@ extern void CDECL get_initial_directory( UNICODE_STRING *dir ) DECLSPEC_HIDDEN;
|
||||
extern void CDECL get_initial_console( RTL_USER_PROCESS_PARAMETERS *params ) DECLSPEC_HIDDEN;
|
||||
extern USHORT * CDECL get_unix_codepage_data(void) DECLSPEC_HIDDEN;
|
||||
extern void CDECL get_locales( WCHAR *sys, WCHAR *user ) DECLSPEC_HIDDEN;
|
||||
+extern WCHAR *get_nt_pathname( const UNICODE_STRING *str ) DECLSPEC_HIDDEN;
|
||||
extern void CDECL virtual_release_address_space(void) DECLSPEC_HIDDEN;
|
||||
|
||||
extern NTSTATUS CDECL unwind_builtin_dll( ULONG type, struct _DISPATCHER_CONTEXT *dispatch,
|
||||
@@ -161,6 +162,7 @@ extern unsigned int server_queue_process_apc( HANDLE process, const apc_call_t *
|
||||
apc_result_t *result ) DECLSPEC_HIDDEN;
|
||||
extern int 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;
|
||||
+extern NTSTATUS server_get_unix_name( HANDLE handle, char **unix_name, BOOL nofollow ) DECLSPEC_HIDDEN;
|
||||
extern size_t server_init_process(void) DECLSPEC_HIDDEN;
|
||||
extern void server_init_process_done(void) DECLSPEC_HIDDEN;
|
||||
extern void server_init_thread( void *entry_point, BOOL *suspend ) DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
|
||||
index a136390c994..457bd45e516 100644
|
||||
--- a/dlls/ntdll/unix/virtual.c
|
||||
+++ b/dlls/ntdll/unix/virtual.c
|
||||
@@ -4042,6 +4042,103 @@ static NTSTATUS get_working_set_ex( HANDLE process, LPCVOID addr,
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
+/* get file name for mapped section */
|
||||
+static NTSTATUS get_section_name( HANDLE process, LPCVOID addr,
|
||||
+ MEMORY_SECTION_NAME *info,
|
||||
+ SIZE_T len, SIZE_T *res_len )
|
||||
+{
|
||||
+ UNICODE_STRING nt_name, dos_path_name;
|
||||
+ WCHAR *nt_nameW;
|
||||
+ char *unix_name;
|
||||
+ data_size_t size = 1024;
|
||||
+ WCHAR *name = NULL;
|
||||
+ NTSTATUS status;
|
||||
+ HANDLE mapping;
|
||||
+
|
||||
+ if (!addr || !info || !res_len) return STATUS_INVALID_PARAMETER;
|
||||
+
|
||||
+ SERVER_START_REQ( get_mapping_file )
|
||||
+ {
|
||||
+ req->process = wine_server_obj_handle( process );
|
||||
+ req->addr = wine_server_client_ptr( addr );
|
||||
+ status = wine_server_call( req );
|
||||
+ mapping = wine_server_ptr_handle( reply->handle );
|
||||
+ }
|
||||
+ SERVER_END_REQ;
|
||||
+
|
||||
+ memset( &nt_name, 0, sizeof(nt_name) );
|
||||
+
|
||||
+ if (!status && mapping)
|
||||
+ {
|
||||
+ status = server_get_unix_name( mapping, &unix_name, FALSE );
|
||||
+ NtClose( mapping );
|
||||
+ if (!status)
|
||||
+ {
|
||||
+ status = unix_to_nt_file_name( unix_name, &nt_nameW );
|
||||
+ free( unix_name );
|
||||
+ }
|
||||
+ if (!status)
|
||||
+ {
|
||||
+ nt_name.Buffer = nt_nameW;
|
||||
+ goto found;
|
||||
+ }
|
||||
+ if (status == STATUS_OBJECT_TYPE_MISMATCH) status = STATUS_FILE_INVALID;
|
||||
+ return status;
|
||||
+ }
|
||||
+
|
||||
+ for (;;)
|
||||
+ {
|
||||
+ if (!(name = malloc( (size + 1) * sizeof(WCHAR) )))
|
||||
+ return STATUS_NO_MEMORY;
|
||||
+
|
||||
+ SERVER_START_REQ( get_dll_info )
|
||||
+ {
|
||||
+ req->handle = wine_server_obj_handle( process );
|
||||
+ req->base_address = (ULONG_PTR)addr;
|
||||
+ wine_server_set_reply( req, name, size * sizeof(WCHAR) );
|
||||
+ status = wine_server_call( req );
|
||||
+ size = reply->filename_len / sizeof(WCHAR);
|
||||
+ }
|
||||
+ SERVER_END_REQ;
|
||||
+
|
||||
+ if (!status)
|
||||
+ {
|
||||
+ name[size] = 0;
|
||||
+ break;
|
||||
+ }
|
||||
+ free( name );
|
||||
+ if (status == STATUS_DLL_NOT_FOUND) return STATUS_INVALID_ADDRESS;
|
||||
+ if (status != STATUS_BUFFER_TOO_SMALL) return status;
|
||||
+ }
|
||||
+
|
||||
+ dos_path_name.Buffer = name;
|
||||
+ dos_path_name.Length = size * sizeof(WCHAR);
|
||||
+
|
||||
+ if (!(nt_name.Buffer = get_nt_pathname( &dos_path_name )))
|
||||
+ {
|
||||
+ free( name );
|
||||
+ return STATUS_INVALID_PARAMETER;
|
||||
+ }
|
||||
+found:
|
||||
+ nt_name.Length = wcslen( nt_name.Buffer ) * sizeof(WCHAR);
|
||||
+ *res_len = sizeof(MEMORY_SECTION_NAME) + nt_name.Length + sizeof(WCHAR);
|
||||
+ if (len >= *res_len)
|
||||
+ {
|
||||
+ info->SectionFileName.Length = nt_name.Length;
|
||||
+ info->SectionFileName.MaximumLength = nt_name.Length + sizeof(WCHAR);
|
||||
+ info->SectionFileName.Buffer = (WCHAR *)(info + 1);
|
||||
+ memcpy(info->SectionFileName.Buffer, nt_name.Buffer, nt_name.Length);
|
||||
+ info->SectionFileName.Buffer[ nt_name.Length / sizeof(WCHAR) ] = 0;
|
||||
+ }
|
||||
+ else
|
||||
+ status = (len < sizeof(MEMORY_SECTION_NAME)) ? STATUS_INFO_LENGTH_MISMATCH : STATUS_BUFFER_OVERFLOW;
|
||||
+
|
||||
+ free( name );
|
||||
+ free( nt_name.Buffer );
|
||||
+ return status;
|
||||
+}
|
||||
+
|
||||
+
|
||||
#define UNIMPLEMENTED_INFO_CLASS(c) \
|
||||
case c: \
|
||||
FIXME("(process=%p,addr=%p) Unimplemented information class: " #c "\n", process, addr); \
|
||||
@@ -4066,8 +4163,10 @@ NTSTATUS WINAPI NtQueryVirtualMemory( HANDLE process, LPCVOID addr,
|
||||
case MemoryWorkingSetExInformation:
|
||||
return get_working_set_ex( process, addr, buffer, len, res_len );
|
||||
|
||||
+ case MemorySectionName:
|
||||
+ return get_section_name( process, addr, buffer, len, res_len );
|
||||
+
|
||||
UNIMPLEMENTED_INFO_CLASS(MemoryWorkingSetList);
|
||||
- UNIMPLEMENTED_INFO_CLASS(MemorySectionName);
|
||||
UNIMPLEMENTED_INFO_CLASS(MemoryBasicVlmInformation);
|
||||
|
||||
default:
|
||||
diff --git a/dlls/psapi/tests/psapi_main.c b/dlls/psapi/tests/psapi_main.c
|
||||
index be12af58311..3e211a771f9 100644
|
||||
--- a/dlls/psapi/tests/psapi_main.c
|
||||
+++ b/dlls/psapi/tests/psapi_main.c
|
||||
@@ -384,14 +384,7 @@ static BOOL nt_get_mapped_file_name(HANDLE process, LPVOID addr, LPWSTR name, DW
|
||||
|
||||
ret_len = 0xdeadbeef;
|
||||
status = pNtQueryVirtualMemory(process, addr, MemorySectionName, buf, buf_len, &ret_len);
|
||||
-todo_wine
|
||||
ok(!status, "NtQueryVirtualMemory error %x\n", status);
|
||||
- /* FIXME: remove once Wine is fixed */
|
||||
- if (status)
|
||||
- {
|
||||
- HeapFree(GetProcessHeap(), 0, buf);
|
||||
- return FALSE;
|
||||
- }
|
||||
|
||||
section_name = (MEMORY_SECTION_NAME *)buf;
|
||||
ok(ret_len == section_name->SectionFileName.MaximumLength + sizeof(*section_name), "got %lu, %u\n",
|
||||
@@ -513,6 +506,7 @@ todo_wine {
|
||||
{
|
||||
ok(memcmp(map_nameW, nt_map_name, lstrlenW(map_nameW)) == 0, "map name does not start with a device name: %s\n", map_name);
|
||||
WideCharToMultiByte(CP_ACP, 0, map_nameW, -1, map_name, MAX_PATH, NULL, NULL);
|
||||
+todo_wine
|
||||
ok(memcmp(map_name, device_name, strlen(device_name)) == 0, "map name does not start with a device name: %s\n", map_name);
|
||||
}
|
||||
|
||||
diff --git a/server/mapping.c b/server/mapping.c
|
||||
index 9e481646f2f..399d0c76918 100644
|
||||
--- a/server/mapping.c
|
||||
+++ b/server/mapping.c
|
||||
@@ -1178,6 +1178,35 @@ DECL_HANDLER(unmap_view)
|
||||
if (view) free_memory_view( view );
|
||||
}
|
||||
|
||||
+/* get file handle from mapping by address */
|
||||
+DECL_HANDLER(get_mapping_file)
|
||||
+{
|
||||
+ struct memory_view *view;
|
||||
+ struct process *process;
|
||||
+ struct file *file;
|
||||
+
|
||||
+ if (!(process = get_process_from_handle( req->process, 0 ))) return;
|
||||
+
|
||||
+ LIST_FOR_EACH_ENTRY( view, &process->views, struct memory_view, entry )
|
||||
+ if (req->addr >= view->base && req->addr < view->base + view->size) break;
|
||||
+
|
||||
+ if (&view->entry == &process->views)
|
||||
+ {
|
||||
+ set_error( STATUS_NOT_MAPPED_VIEW );
|
||||
+ release_object( process );
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (view->fd && (file = create_file_for_fd_obj( view->fd, GENERIC_READ,
|
||||
+ FILE_SHARE_READ | FILE_SHARE_WRITE )))
|
||||
+ {
|
||||
+ reply->handle = alloc_handle( process, file, GENERIC_READ, 0 );
|
||||
+ release_object( file );
|
||||
+ }
|
||||
+
|
||||
+ release_object( process );
|
||||
+}
|
||||
+
|
||||
/* get a range of committed pages in a file mapping */
|
||||
DECL_HANDLER(get_mapping_committed_range)
|
||||
{
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index 957ef25f967..4888cb63506 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -1539,6 +1539,15 @@ enum server_fd_type
|
||||
@END
|
||||
|
||||
|
||||
+/* Get file for a mapping */
|
||||
+@REQ(get_mapping_file)
|
||||
+ obj_handle_t process; /* process handle */
|
||||
+ client_ptr_t addr; /* arbitrary address in view */
|
||||
+@REPLY
|
||||
+ obj_handle_t handle; /* handle to file */
|
||||
+@END
|
||||
+
|
||||
+
|
||||
/* Get a range of committed pages in a file mapping */
|
||||
@REQ(get_mapping_committed_range)
|
||||
client_ptr_t base; /* view base address */
|
||||
--
|
||||
2.29.2
|
||||
|
@@ -1,61 +0,0 @@
|
||||
From 3c24fb315d12b0f5f052cfe5d885947adc5be75c Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Sun, 28 May 2017 10:30:43 +0200
|
||||
Subject: [PATCH] ntdll/tests: Add tests for
|
||||
NtQueryVirtualMemory(MemorySectionName).
|
||||
|
||||
---
|
||||
dlls/ntdll/tests/info.c | 30 ++++++++++++++++++++++++++++++
|
||||
1 file changed, 30 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/tests/info.c b/dlls/ntdll/tests/info.c
|
||||
index 974db1badf09..ff2d388399da 100644
|
||||
--- a/dlls/ntdll/tests/info.c
|
||||
+++ b/dlls/ntdll/tests/info.c
|
||||
@@ -2239,6 +2239,8 @@ static void test_queryvirtualmemory(void)
|
||||
char stackbuf[42];
|
||||
HMODULE module;
|
||||
void *user_shared_data = (void *)0x7ffe0000;
|
||||
+ char buffer_name[sizeof(MEMORY_SECTION_NAME) + MAX_PATH * sizeof(WCHAR)];
|
||||
+ MEMORY_SECTION_NAME *msn = (MEMORY_SECTION_NAME *)buffer_name;
|
||||
|
||||
module = GetModuleHandleA( "ntdll.dll" );
|
||||
status = pNtQueryVirtualMemory(NtCurrentProcess(), module, MemoryBasicInformation, &mbi, sizeof(MEMORY_BASIC_INFORMATION), &readcount);
|
||||
@@ -2321,6 +2323,34 @@ static void test_queryvirtualmemory(void)
|
||||
/* check error code when len is less than MEMORY_BASIC_INFORMATION size */
|
||||
status = pNtQueryVirtualMemory(NtCurrentProcess(), GetProcessHeap(), MemoryBasicInformation, &mbi, sizeof(MEMORY_BASIC_INFORMATION) - 1, &readcount);
|
||||
ok(status == STATUS_INFO_LENGTH_MISMATCH, "Expected STATUS_INFO_LENGTH_MISMATCH, got %08x\n", status);
|
||||
+
|
||||
+ module = GetModuleHandleA( "ntdll.dll" );
|
||||
+ memset(msn, 0, sizeof(*msn));
|
||||
+ readcount = 0;
|
||||
+ status = pNtQueryVirtualMemory(NtCurrentProcess(), module, MemorySectionName, msn, sizeof(*msn), &readcount);
|
||||
+ ok( status == STATUS_BUFFER_OVERFLOW, "Expected STATUS_BUFFER_OVERFLOW, got %08x\n", status);
|
||||
+ ok( readcount > 0, "Expected readcount to be > 0\n");
|
||||
+
|
||||
+ module = GetModuleHandleA( "ntdll.dll" );
|
||||
+ memset(msn, 0, sizeof(*msn));
|
||||
+ readcount = 0;
|
||||
+ status = pNtQueryVirtualMemory(NtCurrentProcess(), module, MemorySectionName, msn, sizeof(*msn) - 1, &readcount);
|
||||
+ ok( status == STATUS_INFO_LENGTH_MISMATCH, "Expected STATUS_INFO_LENGTH_MISMATCH, got %08x\n", status);
|
||||
+ ok( readcount > 0, "Expected readcount to be > 0\n");
|
||||
+
|
||||
+ module = GetModuleHandleA( "ntdll.dll" );
|
||||
+ memset(msn, 0x55, sizeof(*msn));
|
||||
+ memset(buffer_name, 0x77, sizeof(buffer_name));
|
||||
+ readcount = 0;
|
||||
+ status = pNtQueryVirtualMemory(NtCurrentProcess(), module, MemorySectionName, msn, sizeof(buffer_name), &readcount);
|
||||
+ ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status);
|
||||
+ ok( readcount > 0, "Expected readcount to be > 0\n");
|
||||
+
|
||||
+ memset(msn, 0, sizeof(*msn));
|
||||
+ readcount = 0;
|
||||
+ status = pNtQueryVirtualMemory(NtCurrentProcess(), &buffer_name, MemorySectionName, msn, sizeof(buffer_name), &readcount);
|
||||
+ ok( status == STATUS_INVALID_ADDRESS, "Expected STATUS_INVALID_ADDRESS, got %08x\n", status);
|
||||
+ ok( readcount == 0 || broken(readcount != 0) /* wow64 */, "Expected readcount to be 0\n");
|
||||
}
|
||||
|
||||
static void test_affinity(void)
|
||||
--
|
||||
2.29.2
|
||||
|
@@ -1,57 +0,0 @@
|
||||
From 6c2aad105cc878f2a0c3777a9a72fa63361d1ce8 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 28 May 2017 05:44:38 +0200
|
||||
Subject: [PATCH] ntdll: Allow to query section names from other processes.
|
||||
(v2)
|
||||
|
||||
---
|
||||
dlls/psapi/tests/psapi_main.c | 19 +++++++++++++++++++
|
||||
1 file changed, 19 insertions(+)
|
||||
|
||||
diff --git a/dlls/psapi/tests/psapi_main.c b/dlls/psapi/tests/psapi_main.c
|
||||
index 3e211a771f93..40fd08e6adbc 100644
|
||||
--- a/dlls/psapi/tests/psapi_main.c
|
||||
+++ b/dlls/psapi/tests/psapi_main.c
|
||||
@@ -410,6 +410,10 @@ static void test_GetMappedFileName(void)
|
||||
char temp_path[MAX_PATH], file_name[MAX_PATH], map_name[MAX_PATH], device_name[MAX_PATH], drive[3];
|
||||
WCHAR map_nameW[MAX_PATH], nt_map_name[MAX_PATH];
|
||||
HANDLE hfile, hmap;
|
||||
+ HANDLE current_process;
|
||||
+
|
||||
+ DuplicateHandle( GetCurrentProcess(), GetCurrentProcess(),
|
||||
+ GetCurrentProcess(), ¤t_process, 0, 0, DUPLICATE_SAME_ACCESS );
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = GetMappedFileNameA(NULL, hMod, szMapPath, sizeof(szMapPath));
|
||||
@@ -510,6 +514,20 @@ todo_wine
|
||||
ok(memcmp(map_name, device_name, strlen(device_name)) == 0, "map name does not start with a device name: %s\n", map_name);
|
||||
}
|
||||
|
||||
+ SetLastError(0xdeadbeef);
|
||||
+ ret = GetMappedFileNameW(current_process, base, map_nameW, sizeof(map_nameW)/sizeof(map_nameW[0]));
|
||||
+todo_wine {
|
||||
+ ok(ret, "GetMappedFileNameW error %d\n", GetLastError());
|
||||
+ ok(ret > strlen(device_name), "map_name should be longer than device_name\n");
|
||||
+}
|
||||
+ if (nt_get_mapped_file_name(current_process, base, nt_map_name, sizeof(nt_map_name)/sizeof(nt_map_name[0])))
|
||||
+ {
|
||||
+ ok(memcmp(map_nameW, nt_map_name, lstrlenW(map_nameW)) == 0, "map name does not start with a device name: %s\n", map_name);
|
||||
+ WideCharToMultiByte(CP_ACP, 0, map_nameW, -1, map_name, MAX_PATH, NULL, NULL);
|
||||
+todo_wine
|
||||
+ ok(memcmp(map_name, device_name, strlen(device_name)) == 0, "map name does not start with a device name: %s\n", map_name);
|
||||
+ }
|
||||
+
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = GetMappedFileNameA(GetCurrentProcess(), base + 0x2000, map_name, sizeof(map_name));
|
||||
todo_wine {
|
||||
@@ -555,6 +573,7 @@ todo_wine
|
||||
todo_wine
|
||||
ok(GetLastError() == ERROR_FILE_INVALID, "expected ERROR_FILE_INVALID, got %d\n", GetLastError());
|
||||
|
||||
+ CloseHandle(current_process);
|
||||
UnmapViewOfFile(base);
|
||||
CloseHandle(hmap);
|
||||
}
|
||||
--
|
||||
2.29.2
|
||||
|
@@ -1,26 +0,0 @@
|
||||
From e2a538dcaee4c59055b877b63d143a93a6e6abdb Mon Sep 17 00:00:00 2001
|
||||
From: Paul Gofman <pgofman@codeweavers.com>
|
||||
Date: Tue, 15 Dec 2020 00:20:43 +0300
|
||||
Subject: [PATCH] server: Fix process access rights in get_mapping_file
|
||||
handler.
|
||||
|
||||
---
|
||||
server/mapping.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/server/mapping.c b/server/mapping.c
|
||||
index d5f889771e50..3df9fb97a1c5 100644
|
||||
--- a/server/mapping.c
|
||||
+++ b/server/mapping.c
|
||||
@@ -1146,7 +1146,7 @@ DECL_HANDLER(get_mapping_file)
|
||||
struct process *process;
|
||||
struct file *file;
|
||||
|
||||
- if (!(process = get_process_from_handle( req->process, 0 ))) return;
|
||||
+ if (!(process = get_process_from_handle( req->process, PROCESS_QUERY_INFORMATION ))) return;
|
||||
|
||||
LIST_FOR_EACH_ENTRY( view, &process->views, struct memory_view, entry )
|
||||
if (req->addr >= view->base && req->addr < view->base + view->size) break;
|
||||
--
|
||||
2.29.2
|
||||
|
@@ -3,4 +3,5 @@ Fixes: [27248] Implement K32GetMappedFileName
|
||||
Depends: ntdll-NtDevicePath
|
||||
Depends: ntdll-ForceBottomUpAlloc
|
||||
Depends: ntdll-Junction_Points
|
||||
|
||||
# In the process of upstreaming.
|
||||
Disabled: true
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 56459884534d5b0acb6a410d2ba04f6f3aa15ded Mon Sep 17 00:00:00 2001
|
||||
From 24d4c486c981d7e7542a37b2916cb147f3467c92 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 27 Jul 2014 03:35:42 +0200
|
||||
Subject: [PATCH] ntdll: Allow special characters in pipe names.
|
||||
@@ -10,7 +10,7 @@ Based on patch by Valentyn Pavliuchenko.
|
||||
2 files changed, 20 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/tests/pipe.c b/dlls/kernel32/tests/pipe.c
|
||||
index 3c7ca06a045..453dcc80b7b 100644
|
||||
index 91f6df34f81..8437264ae43 100644
|
||||
--- a/dlls/kernel32/tests/pipe.c
|
||||
+++ b/dlls/kernel32/tests/pipe.c
|
||||
@@ -30,6 +30,7 @@
|
||||
@@ -21,7 +21,7 @@ index 3c7ca06a045..453dcc80b7b 100644
|
||||
|
||||
#define NB_SERVER_LOOPS 8
|
||||
|
||||
@@ -674,6 +675,15 @@ static void test_CreateNamedPipe(int pipemode)
|
||||
@@ -673,6 +674,15 @@ static void test_CreateNamedPipe(int pipemode)
|
||||
|
||||
CloseHandle(hnp);
|
||||
|
||||
@@ -38,18 +38,18 @@ index 3c7ca06a045..453dcc80b7b 100644
|
||||
}
|
||||
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index a0ad361fcbb..3c4670e114c 100644
|
||||
index 6337433ed80..5ab24e2c334 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -3282,6 +3282,7 @@ static NTSTATUS nt_to_unix_file_name_attr( const OBJECT_ATTRIBUTES *attr, char *
|
||||
NTSTATUS nt_to_unix_file_name( const UNICODE_STRING *nameW, char **unix_name_ret, UINT disposition )
|
||||
@@ -3286,6 +3286,7 @@ NTSTATUS nt_to_unix_file_name( const UNICODE_STRING *nameW, char **unix_name_ret
|
||||
UNICODE_STRING *nt_name, UINT disposition )
|
||||
{
|
||||
static const WCHAR unixW[] = {'u','n','i','x'};
|
||||
+ static const WCHAR pipeW[] = {'p','i','p','e'};
|
||||
static const WCHAR invalid_charsW[] = { INVALID_NT_CHARS, 0 };
|
||||
|
||||
NTSTATUS status = STATUS_SUCCESS;
|
||||
@@ -3292,6 +3293,7 @@ NTSTATUS nt_to_unix_file_name( const UNICODE_STRING *nameW, char **unix_name_ret
|
||||
@@ -3296,6 +3297,7 @@ NTSTATUS nt_to_unix_file_name( const UNICODE_STRING *nameW, char **unix_name_ret
|
||||
WCHAR prefix[MAX_DIR_ENTRY_LEN + 1];
|
||||
BOOLEAN check_case = FALSE;
|
||||
BOOLEAN is_unix = FALSE;
|
||||
@@ -57,7 +57,7 @@ index a0ad361fcbb..3c4670e114c 100644
|
||||
|
||||
name = nameW->Buffer;
|
||||
name_len = nameW->Length / sizeof(WCHAR);
|
||||
@@ -3325,13 +3327,17 @@ NTSTATUS nt_to_unix_file_name( const UNICODE_STRING *nameW, char **unix_name_ret
|
||||
@@ -3329,13 +3331,17 @@ NTSTATUS nt_to_unix_file_name( const UNICODE_STRING *nameW, char **unix_name_ret
|
||||
name += prefix_len;
|
||||
name_len -= prefix_len;
|
||||
|
||||
@@ -80,5 +80,5 @@ index a0ad361fcbb..3c4670e114c 100644
|
||||
else
|
||||
{
|
||||
--
|
||||
2.27.0
|
||||
2.20.1
|
||||
|
||||
|
@@ -51,7 +51,7 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "7a9745022b1bfcc235b922be98a8fdc91976c587"
|
||||
echo "2d6b0b67d91b6433744ec859b10b8ee8eb4a37b3"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
@@ -142,7 +142,6 @@ patch_enable_all ()
|
||||
enable_krnl386_exe16_Invalid_Console_Handles="$1"
|
||||
enable_libs_Unicode_Collation="$1"
|
||||
enable_loader_KeyboardLayouts="$1"
|
||||
enable_mfplat_streaming_support="$1"
|
||||
enable_mmsystem_dll16_MIDIHDR_Refcount="$1"
|
||||
enable_mountmgr_DosDevices="$1"
|
||||
enable_mscoree_CorValidateImage="$1"
|
||||
@@ -171,7 +170,6 @@ patch_enable_all ()
|
||||
enable_ntdll_NtDevicePath="$1"
|
||||
enable_ntdll_NtQueryEaFile="$1"
|
||||
enable_ntdll_NtQuerySection="$1"
|
||||
enable_ntdll_NtQueryVirtualMemory="$1"
|
||||
enable_ntdll_NtSetLdtEntries="$1"
|
||||
enable_ntdll_Pipe_SpecialCharacters="$1"
|
||||
enable_ntdll_ProcessQuotaLimits="$1"
|
||||
@@ -208,13 +206,11 @@ patch_enable_all ()
|
||||
enable_riched20_IText_Interface="$1"
|
||||
enable_server_FileEndOfFileInformation="$1"
|
||||
enable_server_File_Permissions="$1"
|
||||
enable_server_Inherited_ACLs="$1"
|
||||
enable_server_Key_State="$1"
|
||||
enable_server_PeekMessage="$1"
|
||||
enable_server_Realtime_Priority="$1"
|
||||
enable_server_Signal_Thread="$1"
|
||||
enable_server_Stored_ACLs="$1"
|
||||
enable_server_unix_name="$1"
|
||||
enable_setupapi_DiskSpaceList="$1"
|
||||
enable_setupapi_SPFILENOTIFY_FILEINCABINET="$1"
|
||||
enable_shdocvw_ParseURLFromOutsideSource_Tests="$1"
|
||||
@@ -260,11 +256,6 @@ patch_enable_all ()
|
||||
enable_uxtheme_CloseThemeClass="$1"
|
||||
enable_version_VerQueryValue="$1"
|
||||
enable_widl_SLTG_Typelib_Support="$1"
|
||||
enable_widl_winrt_support="$1"
|
||||
enable_windows_gaming_input_dll="$1"
|
||||
enable_windows_globalization_dll="$1"
|
||||
enable_windows_media_speech_dll="$1"
|
||||
enable_windows_networking_connectivity_dll="$1"
|
||||
enable_windowscodecs_GIF_Encoder="$1"
|
||||
enable_windowscodecs_TIFF_Support="$1"
|
||||
enable_wine_inf_Directory_ContextMenuHandlers="$1"
|
||||
@@ -507,9 +498,6 @@ patch_enable ()
|
||||
loader-KeyboardLayouts)
|
||||
enable_loader_KeyboardLayouts="$2"
|
||||
;;
|
||||
mfplat-streaming-support)
|
||||
enable_mfplat_streaming_support="$2"
|
||||
;;
|
||||
mmsystem.dll16-MIDIHDR_Refcount)
|
||||
enable_mmsystem_dll16_MIDIHDR_Refcount="$2"
|
||||
;;
|
||||
@@ -594,9 +582,6 @@ patch_enable ()
|
||||
ntdll-NtQuerySection)
|
||||
enable_ntdll_NtQuerySection="$2"
|
||||
;;
|
||||
ntdll-NtQueryVirtualMemory)
|
||||
enable_ntdll_NtQueryVirtualMemory="$2"
|
||||
;;
|
||||
ntdll-NtSetLdtEntries)
|
||||
enable_ntdll_NtSetLdtEntries="$2"
|
||||
;;
|
||||
@@ -705,9 +690,6 @@ patch_enable ()
|
||||
server-File_Permissions)
|
||||
enable_server_File_Permissions="$2"
|
||||
;;
|
||||
server-Inherited_ACLs)
|
||||
enable_server_Inherited_ACLs="$2"
|
||||
;;
|
||||
server-Key_State)
|
||||
enable_server_Key_State="$2"
|
||||
;;
|
||||
@@ -723,9 +705,6 @@ patch_enable ()
|
||||
server-Stored_ACLs)
|
||||
enable_server_Stored_ACLs="$2"
|
||||
;;
|
||||
server-unix_name)
|
||||
enable_server_unix_name="$2"
|
||||
;;
|
||||
setupapi-DiskSpaceList)
|
||||
enable_setupapi_DiskSpaceList="$2"
|
||||
;;
|
||||
@@ -861,21 +840,6 @@ patch_enable ()
|
||||
widl-SLTG_Typelib_Support)
|
||||
enable_widl_SLTG_Typelib_Support="$2"
|
||||
;;
|
||||
widl-winrt-support)
|
||||
enable_widl_winrt_support="$2"
|
||||
;;
|
||||
windows.gaming.input-dll)
|
||||
enable_windows_gaming_input_dll="$2"
|
||||
;;
|
||||
windows.globalization-dll)
|
||||
enable_windows_globalization_dll="$2"
|
||||
;;
|
||||
windows.media.speech.dll)
|
||||
enable_windows_media_speech_dll="$2"
|
||||
;;
|
||||
windows.networking.connectivity.dll)
|
||||
enable_windows_networking_connectivity_dll="$2"
|
||||
;;
|
||||
windowscodecs-GIF_Encoder)
|
||||
enable_windowscodecs_GIF_Encoder="$2"
|
||||
;;
|
||||
@@ -1416,34 +1380,6 @@ if test "$enable_wineboot_ProxySettings" -eq 1; then
|
||||
enable_wineboot_drivers_etc_Stubs=1
|
||||
fi
|
||||
|
||||
if test "$enable_windows_networking_connectivity_dll" -eq 1; then
|
||||
if test "$enable_windows_globalization_dll" -gt 1; then
|
||||
abort "Patchset windows.globalization-dll disabled, but windows.networking.connectivity.dll depends on that."
|
||||
fi
|
||||
enable_windows_globalization_dll=1
|
||||
fi
|
||||
|
||||
if test "$enable_windows_globalization_dll" -eq 1; then
|
||||
if test "$enable_windows_gaming_input_dll" -gt 1; then
|
||||
abort "Patchset windows.gaming.input-dll disabled, but windows.globalization-dll depends on that."
|
||||
fi
|
||||
enable_windows_gaming_input_dll=1
|
||||
fi
|
||||
|
||||
if test "$enable_windows_gaming_input_dll" -eq 1; then
|
||||
if test "$enable_windows_media_speech_dll" -gt 1; then
|
||||
abort "Patchset windows.media.speech.dll disabled, but windows.gaming.input-dll depends on that."
|
||||
fi
|
||||
enable_windows_media_speech_dll=1
|
||||
fi
|
||||
|
||||
if test "$enable_windows_media_speech_dll" -eq 1; then
|
||||
if test "$enable_widl_winrt_support" -gt 1; then
|
||||
abort "Patchset widl-winrt-support disabled, but windows.media.speech.dll depends on that."
|
||||
fi
|
||||
enable_widl_winrt_support=1
|
||||
fi
|
||||
|
||||
if test "$enable_user32_window_activation" -eq 1; then
|
||||
if test "$enable_user32_recursive_activation" -gt 1; then
|
||||
abort "Patchset user32-recursive-activation disabled, but user32-window-activation depends on that."
|
||||
@@ -1497,13 +1433,6 @@ if test "$enable_shell32_Progress_Dialog" -eq 1; then
|
||||
enable_shell32_SHFileOperation_Move=1
|
||||
fi
|
||||
|
||||
if test "$enable_server_Inherited_ACLs" -eq 1; then
|
||||
if test "$enable_server_Stored_ACLs" -gt 1; then
|
||||
abort "Patchset server-Stored_ACLs disabled, but server-Inherited_ACLs depends on that."
|
||||
fi
|
||||
enable_server_Stored_ACLs=1
|
||||
fi
|
||||
|
||||
if test "$enable_server_Stored_ACLs" -eq 1; then
|
||||
if test "$enable_ntdll_DOS_Attributes" -gt 1; then
|
||||
abort "Patchset ntdll-DOS_Attributes disabled, but server-Stored_ACLs depends on that."
|
||||
@@ -1543,21 +1472,6 @@ if test "$enable_nvcuvid_CUDA_Video_Support" -eq 1; then
|
||||
enable_nvapi_Stub_DLL=1
|
||||
fi
|
||||
|
||||
if test "$enable_ntdll_NtQueryVirtualMemory" -eq 1; then
|
||||
if test "$enable_ntdll_ForceBottomUpAlloc" -gt 1; then
|
||||
abort "Patchset ntdll-ForceBottomUpAlloc disabled, but ntdll-NtQueryVirtualMemory depends on that."
|
||||
fi
|
||||
if test "$enable_ntdll_Junction_Points" -gt 1; then
|
||||
abort "Patchset ntdll-Junction_Points disabled, but ntdll-NtQueryVirtualMemory depends on that."
|
||||
fi
|
||||
if test "$enable_ntdll_NtDevicePath" -gt 1; then
|
||||
abort "Patchset ntdll-NtDevicePath disabled, but ntdll-NtQueryVirtualMemory depends on that."
|
||||
fi
|
||||
enable_ntdll_ForceBottomUpAlloc=1
|
||||
enable_ntdll_Junction_Points=1
|
||||
enable_ntdll_NtDevicePath=1
|
||||
fi
|
||||
|
||||
if test "$enable_ntdll_NtDevicePath" -eq 1; then
|
||||
if test "$enable_ntdll_Pipe_SpecialCharacters" -gt 1; then
|
||||
abort "Patchset ntdll-Pipe_SpecialCharacters disabled, but ntdll-NtDevicePath depends on that."
|
||||
@@ -2871,70 +2785,6 @@ if test "$enable_loader_KeyboardLayouts" -eq 1; then
|
||||
patch_apply loader-KeyboardLayouts/0002-user32-Improve-GetKeyboardLayoutList.patch
|
||||
fi
|
||||
|
||||
# Patchset mfplat-streaming-support
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#49692] Multiple applications need a Media Foundation media source implementation
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/mf/Makefile.in, dlls/mf/handler.c, dlls/mf/handler.h, dlls/mf/main.c, dlls/mf/session.c, dlls/mf/tests/mf.c,
|
||||
# | dlls/mfreadwrite/reader.c, dlls/winegstreamer/Makefile.in, dlls/winegstreamer/audioconvert.c,
|
||||
# | dlls/winegstreamer/colorconvert.c, dlls/winegstreamer/gst_cbs.c, dlls/winegstreamer/gst_cbs.h,
|
||||
# | dlls/winegstreamer/gst_private.h, dlls/winegstreamer/media_source.c, dlls/winegstreamer/mf_decode.c,
|
||||
# | dlls/winegstreamer/mfplat.c, dlls/winegstreamer/winegstreamer_classes.idl, include/mfidl.idl, tools/make_makefiles,
|
||||
# | tools/makedep.c
|
||||
# |
|
||||
if test "$enable_mfplat_streaming_support" -eq 1; then
|
||||
patch_apply mfplat-streaming-support/0003-winegstreamer-Implement-Process-Input-Output-for-aud.patch
|
||||
patch_apply mfplat-streaming-support/0004-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch
|
||||
patch_apply mfplat-streaming-support/0005-winegstreamer-Implement-Get-Attributes-functions-for.patch
|
||||
patch_apply mfplat-streaming-support/0007-winegstreamer-Introduce-color-conversion-transform.patch
|
||||
patch_apply mfplat-streaming-support/0008-winegstreamer-Register-the-color-conversion-transfor.patch
|
||||
patch_apply mfplat-streaming-support/0009-winegstreamer-Implement-GetInputAvailableType-for-co.patch
|
||||
patch_apply mfplat-streaming-support/0010-winegstreamer-Implement-SetInputType-for-color-conve.patch
|
||||
patch_apply mfplat-streaming-support/0011-winegstreamer-Implement-GetOutputAvailableType-for-c.patch
|
||||
patch_apply mfplat-streaming-support/0012-winegstreamer-Implement-SetOutputType-for-color-conv.patch
|
||||
patch_apply mfplat-streaming-support/0013-winegstreamer-Implement-Process-Input-Output-for-col.patch
|
||||
patch_apply mfplat-streaming-support/0014-winegstreamer-Implement-ProcessMessage-for-color-con.patch
|
||||
patch_apply mfplat-streaming-support/0015-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch
|
||||
patch_apply mfplat-streaming-support/0016-winegstreamer-Implement-Get-Attributes-functions-for.patch
|
||||
patch_apply mfplat-streaming-support/0017-winegstreamer-Implement-Get-Input-Output-CurrentType.patch
|
||||
patch_apply mfplat-streaming-support/0018-winegstreamer-Implement-IMFMediaSource-Stop.patch
|
||||
patch_apply mfplat-streaming-support/0019-winegstreamer-Set-MF_MT_ALL_SAMPLES_INDEPENDENT-attr.patch
|
||||
patch_apply mfplat-streaming-support/0020-mf-Add-invalid-connect-method-test.patch
|
||||
patch_apply mfplat-streaming-support/0021-Allow-for-compressed-types.patch
|
||||
patch_apply mfplat-streaming-support/0022-mf-session-Unconditionally-deliver-NULL-EOS-samples.patch
|
||||
patch_apply mfplat-streaming-support/0023-mf-session-Request-more-samples-when-a-transform-nee.patch
|
||||
patch_apply mfplat-streaming-support/0024-HACK-Flush-decoder-when-changing-times.patch
|
||||
patch_apply mfplat-streaming-support/0025-winegstreamer-Add-IMFSeekInfo-GetNearestKeyFrames-st.patch
|
||||
patch_apply mfplat-streaming-support/0026-winegstreamer-Fixup-raw-audio-caps-to-be-compatible-.patch
|
||||
patch_apply mfplat-streaming-support/0027-winegstreamer-Set-MF_PD_MIME_TYPE-on-source-s-presen.patch
|
||||
patch_apply mfplat-streaming-support/0028-winegstreamer-Insert-parser-into-pipeline-to-rectify.patch
|
||||
patch_apply mfplat-streaming-support/0029-winegstreamer-Translate-H.264-caps-to-attributes.patch
|
||||
patch_apply mfplat-streaming-support/0030-winegstreamer-Translate-WMV-caps-to-attributes.patch
|
||||
patch_apply mfplat-streaming-support/0031-winegstreamer-Translate-AAC-caps-to-attributes.patch
|
||||
patch_apply mfplat-streaming-support/0032-winegstreamer-Translate-MPEG-4-Section-2-caps-to-att.patch
|
||||
patch_apply mfplat-streaming-support/0033-winegstreamer-Translate-WMA-caps-to-attributes.patch
|
||||
patch_apply mfplat-streaming-support/0034-winegstreamer-Translate-H.264-attributes-to-caps.patch
|
||||
patch_apply mfplat-streaming-support/0035-winegstreamer-Translate-WMV-attributes-to-caps.patch
|
||||
patch_apply mfplat-streaming-support/0036-winegstreamer-Translate-AAC-attributes-to-caps.patch
|
||||
patch_apply mfplat-streaming-support/0037-winegstreamer-Translate-MPEG-4-Section-2-attributes-.patch
|
||||
patch_apply mfplat-streaming-support/0038-winegstreamer-Translate-WMA-attributes-to-caps.patch
|
||||
patch_apply mfplat-streaming-support/0039-tools-Add-support-for-multiple-parent-directories.patch
|
||||
patch_apply mfplat-streaming-support/0040-mf-Introduce-handler-helper.patch
|
||||
patch_apply mfplat-streaming-support/0041-winegstreamer-Implement-decoder-MFT-on-gstreamer.patch
|
||||
patch_apply mfplat-streaming-support/0042-mfreadwrite-Select-all-streams-when-creating-a-sourc.patch
|
||||
patch_apply mfplat-streaming-support/0043-Miscellaneous.patch
|
||||
patch_apply mfplat-streaming-support/0044-WMV.patch
|
||||
patch_apply mfplat-streaming-support/0045-Expose-PCM-output-type-on-AAC-decoder.patch
|
||||
patch_apply mfplat-streaming-support/0048-Report-streams-backwards-and-only-select-one-of-each.patch
|
||||
patch_apply mfplat-streaming-support/0049-winegstreamer-Introduce-MPEG-4-Section-2-video-decod.patch
|
||||
patch_apply mfplat-streaming-support/0050-winegstreamer-Introduce-WMA-audio-decoder.patch
|
||||
patch_apply mfplat-streaming-support/0051-winegstreamer-Implement-MF_SD_LANGUAGE.patch
|
||||
patch_apply mfplat-streaming-support/0052-winegstreamer-Force-audio-mpeg-to-decode-in-source.patch
|
||||
patch_apply mfplat-streaming-support/0060-winegstreamer-Support-eAVEncH264VProfile_Constrained.patch
|
||||
fi
|
||||
|
||||
# Patchset mmsystem.dll16-MIDIHDR_Refcount
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
@@ -3270,32 +3120,6 @@ if test "$enable_ntdll_NtQuerySection" -eq 1; then
|
||||
patch_apply ntdll-NtQuerySection/0002-kernel32-tests-Add-tests-for-NtQuerySection.patch
|
||||
fi
|
||||
|
||||
# Patchset ntdll-NtQueryVirtualMemory
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * ntdll-ForceBottomUpAlloc, ntdll-DOS_Attributes, ntdll-NtQueryEaFile, ntdll-Junction_Points, ntdll-
|
||||
# | Pipe_SpecialCharacters, ntdll-NtDevicePath
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#23999] Implement MemorySectionName class in NtQueryVirtualMemory
|
||||
# | * [#27248] Implement K32GetMappedFileName
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/kernelbase/debug.c, dlls/ntdll/tests/info.c, dlls/ntdll/unix/file.c, dlls/ntdll/unix/process.c,
|
||||
# | dlls/ntdll/unix/unix_private.h, dlls/ntdll/unix/virtual.c, dlls/psapi/tests/psapi_main.c, server/mapping.c,
|
||||
# | server/protocol.def
|
||||
# |
|
||||
if test "$enable_ntdll_NtQueryVirtualMemory" -eq 1; then
|
||||
patch_apply ntdll-NtQueryVirtualMemory/0003-ntdll-Implement-NtQueryVirtualMemory-MemorySectionNa.patch
|
||||
patch_apply ntdll-NtQueryVirtualMemory/0004-ntdll-tests-Add-tests-for-NtQueryVirtualMemory-Memor.patch
|
||||
patch_apply ntdll-NtQueryVirtualMemory/0005-ntdll-tests-Add-test-to-ensure-section-name-is-full-.patch
|
||||
patch_apply ntdll-NtQueryVirtualMemory/0006-ntdll-Allow-to-query-section-names-from-other-proces.patch
|
||||
patch_apply ntdll-NtQueryVirtualMemory/0007-kernel32-Implement-K32GetMappedFileName.-v2.patch
|
||||
patch_apply ntdll-NtQueryVirtualMemory/0008-ntdll-Resolve-drive-symlinks-before-returning-sectio.patch
|
||||
patch_apply ntdll-NtQueryVirtualMemory/0009-ntdll-Fixup-builtin-dll-names-in-get_section_name.patch
|
||||
patch_apply ntdll-NtQueryVirtualMemory/0010-server-Fix-process-access-rights-in-get_mapping_file.patch
|
||||
fi
|
||||
|
||||
# Patchset ntdll-NtSetLdtEntries
|
||||
# |
|
||||
# | Modified files:
|
||||
@@ -3672,6 +3496,20 @@ if test "$enable_server_File_Permissions" -eq 1; then
|
||||
patch_apply server-File_Permissions/0008-server-Improve-mapping-of-DACL-to-file-permissions.patch
|
||||
fi
|
||||
|
||||
# Patchset server-Key_State
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#31899] Implement locking and synchronization of key states
|
||||
# | * [#35907] Fix caps lock state issues with multiple processes
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * server/queue.c
|
||||
# |
|
||||
if test "$enable_server_Key_State" -eq 1; then
|
||||
patch_apply server-Key_State/0001-server-Introduce-a-helper-function-to-update-the-thr.patch
|
||||
patch_apply server-Key_State/0002-server-Implement-locking-and-synchronization-of-keys.patch
|
||||
fi
|
||||
|
||||
# Patchset server-Stored_ACLs
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
@@ -3693,44 +3531,6 @@ if test "$enable_server_Stored_ACLs" -eq 1; then
|
||||
patch_apply server-Stored_ACLs/0007-server-Retrieve-file-security-attributes-with-extend.patch
|
||||
fi
|
||||
|
||||
# Patchset server-Inherited_ACLs
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * ntdll-DOS_Attributes, ntdll-NtQueryEaFile, ntdll-Junction_Points, server-File_Permissions, server-Stored_ACLs
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/advapi32/tests/security.c, server/file.c
|
||||
# |
|
||||
if test "$enable_server_Inherited_ACLs" -eq 1; then
|
||||
patch_apply server-Inherited_ACLs/0001-server-Inherit-security-attributes-from-parent-direc.patch
|
||||
fi
|
||||
|
||||
# Patchset server-Key_State
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#31899] Implement locking and synchronization of key states
|
||||
# | * [#35907] Fix caps lock state issues with multiple processes
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * server/queue.c
|
||||
# |
|
||||
if test "$enable_server_Key_State" -eq 1; then
|
||||
patch_apply server-Key_State/0001-server-Introduce-a-helper-function-to-update-the-thr.patch
|
||||
patch_apply server-Key_State/0002-server-Implement-locking-and-synchronization-of-keys.patch
|
||||
fi
|
||||
|
||||
# Patchset server-unix_name
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#46070] Basemark Web 3.0 Desktop Launcher crashes
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * server/fd.c, server/file.c, server/file.h
|
||||
# |
|
||||
if test "$enable_server_unix_name" -eq 1; then
|
||||
patch_apply server-unix_name/0001-server-Try-to-retrieve-the-unix-name-on-handles-crea.patch
|
||||
fi
|
||||
|
||||
# Patchset setupapi-DiskSpaceList
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
@@ -4358,122 +4158,6 @@ if test "$enable_version_VerQueryValue" -eq 1; then
|
||||
patch_apply version-VerQueryValue/0001-version-Test-for-VerQueryValueA-try-2.patch
|
||||
fi
|
||||
|
||||
# Patchset widl-winrt-support
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#49998] widl - Support WinRT idls
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * include/windows.foundation.idl, include/windows.media.speechsynthesis.idl, tools/widl/expr.c, tools/widl/hash.c,
|
||||
# | tools/widl/hash.h, tools/widl/header.c, tools/widl/parser.l, tools/widl/parser.y, tools/widl/typegen.c,
|
||||
# | tools/widl/typelib.c, tools/widl/typetree.c, tools/widl/typetree.h, tools/widl/utils.c, tools/widl/utils.h,
|
||||
# | tools/widl/widltypes.h
|
||||
# |
|
||||
if test "$enable_widl_winrt_support" -eq 1; then
|
||||
patch_apply widl-winrt-support/0012-widl-Support-WinRT-activatable-attribute-parsing.patch
|
||||
patch_apply widl-winrt-support/0013-widl-Support-WinRT-static-attribute-parsing.patch
|
||||
patch_apply widl-winrt-support/0014-include-Add-Windows.Media.SpeechSynthesis.SpeechSynt.patch
|
||||
patch_apply widl-winrt-support/0015-widl-Support-WinRT-requires-keyword.patch
|
||||
patch_apply widl-winrt-support/0016-widl-Support-WinRT-parameterized-type-parsing.patch
|
||||
patch_apply widl-winrt-support/0017-widl-Introduce-new-strappend-helper.patch
|
||||
patch_apply widl-winrt-support/0018-widl-Support-WinRT-parameterized-interface-type.patch
|
||||
patch_apply widl-winrt-support/0019-widl-Support-WinRT-delegate-type.patch
|
||||
patch_apply widl-winrt-support/0020-widl-Support-WinRT-parameterized-delegate-type.patch
|
||||
patch_apply widl-winrt-support/0021-widl-Compute-signatures-for-parameterized-types.patch
|
||||
patch_apply widl-winrt-support/0022-widl-Compute-uuids-for-parameterized-types.patch
|
||||
patch_apply widl-winrt-support/0023-widl-Generate-helper-macros-for-WinRT-implementation.patch
|
||||
patch_apply widl-winrt-support/0024-include-Add-IVectorView-HSTRING-declaration-to-windo.patch
|
||||
patch_apply widl-winrt-support/0025-widl-Never-use-the-namespace-ABI-prefix-for-global-t.patch
|
||||
patch_apply widl-winrt-support/0026-widl-Precompute-qualified-type-names-and-use-them-fo.patch
|
||||
patch_apply widl-winrt-support/0027-widl-Define-the-C-type-name-as-an-alias-for-the-C-qu.patch
|
||||
fi
|
||||
|
||||
# Patchset windows.media.speech.dll
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * widl-winrt-support
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#49740] windows.media.speech: New DLL
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * configure.ac, dlls/windows.media.speech.dll/Makefile.in, dlls/windows.media.speech.dll/windows.media.speech.spec,
|
||||
# | dlls/windows.media.speech.dll/windows.media.speech_main.c, loader/wine.inf.in
|
||||
# |
|
||||
if test "$enable_windows_media_speech_dll" -eq 1; then
|
||||
patch_apply windows.media.speech.dll/0001-windows.media.speech-Add-stub-dll.patch
|
||||
patch_apply windows.media.speech.dll/0002-windows.media.speech-Implement-IInstalledVoicesStati.patch
|
||||
patch_apply windows.media.speech.dll/0003-windows.media.speech-Implement-IInstalledVoicesStati.patch
|
||||
patch_apply windows.media.speech.dll/0004-windows.media.speech-Fake-empty-IInstalledVoicesStat.patch
|
||||
fi
|
||||
|
||||
# Patchset windows.gaming.input-dll
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * widl-winrt-support, windows.media.speech.dll
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#49756] windows.gaming.input: New DLL
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * configure.ac, dlls/windows.gaming.input.dll/Makefile.in, dlls/windows.gaming.input.dll/windows.gaming.input.spec,
|
||||
# | dlls/windows.gaming.input.dll/windows.gaming.input_main.c, include/Makefile.in, include/asyncinfo.idl,
|
||||
# | include/windows.foundation.idl, include/windows.gaming.input.forcefeedback.idl, include/windows.gaming.input.idl,
|
||||
# | include/windows.system.idl, loader/wine.inf.in
|
||||
# |
|
||||
if test "$enable_windows_gaming_input_dll" -eq 1; then
|
||||
patch_apply windows.gaming.input-dll/0001-windows.gaming.input-Add-stub-dll.patch
|
||||
patch_apply windows.gaming.input-dll/0002-windows.gaming.input-Implement-IGamepadStatics-stubs.patch
|
||||
patch_apply windows.gaming.input-dll/0003-windows.gaming.input-Implement-IGamepadStatics-Gamep.patch
|
||||
patch_apply windows.gaming.input-dll/0004-windows.gaming.input-Fake-empty-IGamepadStatics-Game.patch
|
||||
patch_apply windows.gaming.input-dll/0005-windows.gaming.input-Fake-IEventHandler_Gamepad-supp.patch
|
||||
patch_apply windows.gaming.input-dll/0006-windows.gaming.input-Implement-IRawGameControllerSta.patch
|
||||
patch_apply windows.gaming.input-dll/0007-windows.gaming.input-Implement-IRawGameControllerSta.patch
|
||||
patch_apply windows.gaming.input-dll/0008-windows.gaming.input-Fake-empty-IRawGameControllerSt.patch
|
||||
patch_apply windows.gaming.input-dll/0009-windows.gaming.input-Fake-IEventHandler_RawGameContr.patch
|
||||
fi
|
||||
|
||||
# Patchset windows.globalization-dll
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * widl-winrt-support, windows.media.speech.dll, windows.gaming.input-dll
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#49740] windows.globalization: New DLL
|
||||
# | * [#49998] windows.globalization: New DLL
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * configure.ac, dlls/windows.globalization.dll/Makefile.in, dlls/windows.globalization.dll/windows.globalization.spec,
|
||||
# | dlls/windows.globalization.dll/windows.globalization_main.c, include/Makefile.in, include/windows.globalization.idl,
|
||||
# | include/windows.system.userprofile.idl, loader/wine.inf.in
|
||||
# |
|
||||
if test "$enable_windows_globalization_dll" -eq 1; then
|
||||
patch_apply windows.globalization-dll/0001-windows.globalization-Add-stub-dll.patch
|
||||
patch_apply windows.globalization-dll/0002-windows.globalization-Implement-IGlobalizationPrefer.patch
|
||||
patch_apply windows.globalization-dll/0003-windows.globalization-Implement-IGlobalizationPrefer.patch
|
||||
patch_apply windows.globalization-dll/0004-windows.globalization-Implement-IGlobalizationPrefer.patch
|
||||
patch_apply windows.globalization-dll/0005-windows.globalization-Fake-empty-IGlobalizationPrefe.patch
|
||||
fi
|
||||
|
||||
# Patchset windows.networking.connectivity.dll
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * widl-winrt-support, windows.media.speech.dll, windows.gaming.input-dll, windows.globalization-dll
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#46534] windows.networking.connectivity: New DLL
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * configure.ac, dlls/windows.networking.connectivity.dll/Makefile.in,
|
||||
# | dlls/windows.networking.connectivity.dll/windows.networking.connectivity.spec,
|
||||
# | dlls/windows.networking.connectivity.dll/windows.networking.connectivity_main.c, loader/wine.inf.in
|
||||
# |
|
||||
if test "$enable_windows_networking_connectivity_dll" -eq 1; then
|
||||
patch_apply windows.networking.connectivity.dll/0001-windows.networking.connectivity-Add-stub-dll.patch
|
||||
patch_apply windows.networking.connectivity.dll/0002-windows.networking.connectivity-Implement-IActivatio.patch
|
||||
patch_apply windows.networking.connectivity.dll/0003-windows.networking.connectivity-Implement-INetworkIn.patch
|
||||
fi
|
||||
|
||||
# Patchset windowscodecs-GIF_Encoder
|
||||
# |
|
||||
# | Modified files:
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 2964ee0ea43ead52e9b34da5f9cc97792c41010b Mon Sep 17 00:00:00 2001
|
||||
From 88c10b2fa313a63dcfbe54ba687e89e1ed5c1b02 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Fri, 18 Apr 2014 14:08:36 -0600
|
||||
Subject: [PATCH] server: Inherit security attributes from parent directories
|
||||
@@ -10,10 +10,10 @@ Subject: [PATCH] server: Inherit security attributes from parent directories
|
||||
2 files changed, 142 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
|
||||
index 9b2193f6232..21cd746fd2a 100644
|
||||
index d2ce3803bf6..7794e6735f3 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -3661,7 +3661,7 @@ static void test_CreateDirectoryA(void)
|
||||
@@ -3647,7 +3647,7 @@ static void test_CreateDirectoryA(void)
|
||||
(PSID *)&owner, NULL, &pDacl, NULL, &pSD);
|
||||
ok(error == ERROR_SUCCESS, "Failed to get permissions on file\n");
|
||||
test_inherited_dacl(pDacl, admin_sid, user_sid, INHERITED_ACE,
|
||||
@@ -22,7 +22,7 @@ index 9b2193f6232..21cd746fd2a 100644
|
||||
LocalFree(pSD);
|
||||
CloseHandle(hTemp);
|
||||
|
||||
@@ -3728,7 +3728,7 @@ static void test_CreateDirectoryA(void)
|
||||
@@ -3714,7 +3714,7 @@ static void test_CreateDirectoryA(void)
|
||||
(PSID *)&owner, NULL, &pDacl, NULL, &pSD);
|
||||
ok(error == ERROR_SUCCESS, "Failed to get permissions on file\n");
|
||||
test_inherited_dacl(pDacl, admin_sid, user_sid, INHERITED_ACE,
|
||||
@@ -31,7 +31,7 @@ index 9b2193f6232..21cd746fd2a 100644
|
||||
LocalFree(pSD);
|
||||
CloseHandle(hTemp);
|
||||
|
||||
@@ -3793,7 +3793,7 @@ static void test_CreateDirectoryA(void)
|
||||
@@ -3779,7 +3779,7 @@ static void test_CreateDirectoryA(void)
|
||||
ok(error == ERROR_SUCCESS, "Failed to get permissions on file\n");
|
||||
test_inherited_dacl(pDacl, admin_sid, user_sid,
|
||||
OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE | INHERITED_ACE,
|
||||
@@ -40,7 +40,7 @@ index 9b2193f6232..21cd746fd2a 100644
|
||||
LocalFree(pSD);
|
||||
bret = RemoveDirectoryA(tmpfile);
|
||||
ok(bret == TRUE, "RemoveDirectoryA failed with error %u\n", GetLastError());
|
||||
@@ -3873,7 +3873,7 @@ static void test_CreateDirectoryA(void)
|
||||
@@ -3859,7 +3859,7 @@ static void test_CreateDirectoryA(void)
|
||||
ok(error == ERROR_SUCCESS, "Failed to get permissions on file\n");
|
||||
test_inherited_dacl(pDacl, admin_sid, user_sid,
|
||||
OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE | INHERITED_ACE,
|
||||
@@ -50,7 +50,7 @@ index 9b2193f6232..21cd746fd2a 100644
|
||||
CloseHandle(hTemp);
|
||||
|
||||
diff --git a/server/file.c b/server/file.c
|
||||
index fce2ab0a5b6..85940727347 100644
|
||||
index 3911a2c9baf..cb8cd2bc398 100644
|
||||
--- a/server/file.c
|
||||
+++ b/server/file.c
|
||||
@@ -105,6 +105,8 @@ struct file
|
||||
@@ -62,7 +62,7 @@ index fce2ab0a5b6..85940727347 100644
|
||||
static void file_dump( struct object *obj, int verbose );
|
||||
static struct fd *file_get_fd( struct object *obj );
|
||||
static struct security_descriptor *file_get_sd( struct object *obj );
|
||||
@@ -311,11 +313,142 @@ static void set_xattr_sd( int fd, const struct security_descriptor *sd )
|
||||
@@ -311,12 +313,143 @@ static void set_xattr_sd( int fd, const struct security_descriptor *sd )
|
||||
xattr_fset( fd, WINE_XATTR_SD, buffer, len );
|
||||
}
|
||||
|
||||
@@ -197,6 +197,7 @@ index fce2ab0a5b6..85940727347 100644
|
||||
+}
|
||||
+
|
||||
static struct object *create_file( struct fd *root, const char *nameptr, data_size_t len,
|
||||
struct unicode_str nt_name,
|
||||
unsigned int access, unsigned int sharing, int create,
|
||||
unsigned int options, unsigned int attrs,
|
||||
const struct security_descriptor *sd )
|
||||
@@ -205,7 +206,7 @@ index fce2ab0a5b6..85940727347 100644
|
||||
struct object *obj = NULL;
|
||||
struct fd *fd;
|
||||
int flags;
|
||||
@@ -344,6 +477,10 @@ static struct object *create_file( struct fd *root, const char *nameptr, data_si
|
||||
@@ -345,6 +478,10 @@ static struct object *create_file( struct fd *root, const char *nameptr, data_si
|
||||
default: set_error( STATUS_INVALID_PARAMETER ); goto done;
|
||||
}
|
||||
|
||||
@@ -216,7 +217,7 @@ index fce2ab0a5b6..85940727347 100644
|
||||
if (sd)
|
||||
{
|
||||
const SID *owner = sd_get_owner( sd );
|
||||
@@ -382,6 +519,7 @@ static struct object *create_file( struct fd *root, const char *nameptr, data_si
|
||||
@@ -383,6 +520,7 @@ static struct object *create_file( struct fd *root, const char *nameptr, data_si
|
||||
release_object( fd );
|
||||
|
||||
done:
|
||||
|
@@ -1,2 +1,4 @@
|
||||
Depends: server-Stored_ACLs
|
||||
Fixes: Support for inherited file ACLs
|
||||
#Badly broken by bb00942671.
|
||||
Disabled: true
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user