From d805441f461d2f156a3c786e79fd1a4899f83f2b Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Tue, 13 Apr 2021 20:27:50 -0500 Subject: [PATCH] Rebase against c6393968754d64189f111e9277fb9060ec415fae. --- ...d-wined3d_resource_map_info-function.patch | 36 ++++---- ...d3d11_deferred_context_UpdateSubreso.patch | 40 ++++----- ...e-Unix-style-hidden-file-check-withi.patch | 34 ++++---- patches/ntdll-NtDevicePath/definition | 3 +- ...low-special-characters-in-pipe-names.patch | 84 ------------------- .../ntdll-Pipe_SpecialCharacters/definition | 1 - patches/patchinstall.sh | 44 +--------- staging/upstream-commit | 2 +- 8 files changed, 59 insertions(+), 185 deletions(-) delete mode 100644 patches/ntdll-Pipe_SpecialCharacters/0001-ntdll-Allow-special-characters-in-pipe-names.patch delete mode 100644 patches/ntdll-Pipe_SpecialCharacters/definition diff --git a/patches/d3d11-Deferred_Context/0002-wined3d-Add-wined3d_resource_map_info-function.patch b/patches/d3d11-Deferred_Context/0002-wined3d-Add-wined3d_resource_map_info-function.patch index 13879c0f..a43a3d96 100644 --- a/patches/d3d11-Deferred_Context/0002-wined3d-Add-wined3d_resource_map_info-function.patch +++ b/patches/d3d11-Deferred_Context/0002-wined3d-Add-wined3d_resource_map_info-function.patch @@ -1,4 +1,4 @@ -From 881e39d338d1b8faed36440376460d498262c532 Mon Sep 17 00:00:00 2001 +From 1d756dd5a98e84afa53a487cd6b7ecbf0a576422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Thu, 19 Jan 2017 16:54:42 +0100 Subject: [PATCH] wined3d: Add wined3d_resource_map_info function. @@ -13,10 +13,10 @@ Subject: [PATCH] wined3d: Add wined3d_resource_map_info function. 6 files changed, 70 insertions(+) diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c -index 89dab8ebfdd..5ef9a48eeb7 100644 +index ea21f85bc9e..d030a1cecd6 100644 --- a/dlls/wined3d/buffer.c +++ b/dlls/wined3d/buffer.c -@@ -1121,6 +1121,24 @@ static HRESULT buffer_resource_sub_resource_map(struct wined3d_resource *resourc +@@ -949,6 +949,24 @@ static HRESULT buffer_resource_sub_resource_map(struct wined3d_resource *resourc return WINED3D_OK; } @@ -41,7 +41,7 @@ index 89dab8ebfdd..5ef9a48eeb7 100644 static HRESULT buffer_resource_sub_resource_unmap(struct wined3d_resource *resource, unsigned int sub_resource_idx) { struct wined3d_buffer *buffer = buffer_from_resource(resource); -@@ -1279,6 +1297,7 @@ static const struct wined3d_resource_ops buffer_resource_ops = +@@ -1085,6 +1103,7 @@ static const struct wined3d_resource_ops buffer_resource_ops = buffer_resource_preload, buffer_resource_unload, buffer_resource_sub_resource_map, @@ -50,11 +50,11 @@ index 89dab8ebfdd..5ef9a48eeb7 100644 }; diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c -index bba940f42cb..ff31c004b06 100644 +index 6e34605f547..b3a46950f4e 100644 --- a/dlls/wined3d/resource.c +++ b/dlls/wined3d/resource.c -@@ -383,6 +383,14 @@ HRESULT CDECL wined3d_resource_map(struct wined3d_resource *resource, unsigned i - return wined3d_cs_map(resource->device->cs, resource, sub_resource_idx, map_desc, box, flags); +@@ -323,6 +323,14 @@ HRESULT CDECL wined3d_resource_map(struct wined3d_resource *resource, unsigned i + return wined3d_device_context_map(&resource->device->cs->c, resource, sub_resource_idx, map_desc, box, flags); } +HRESULT CDECL wined3d_resource_map_info(struct wined3d_resource *resource, unsigned int sub_resource_idx, @@ -69,10 +69,10 @@ index bba940f42cb..ff31c004b06 100644 { TRACE("resource %p, sub_resource_idx %u.\n", resource, sub_resource_idx); diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c -index 7c9c8298519..73e79ff25b5 100644 +index 333002ebfd5..ad34329af1d 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c -@@ -3155,6 +3155,36 @@ static HRESULT texture_resource_sub_resource_map(struct wined3d_resource *resour +@@ -3509,6 +3509,36 @@ static HRESULT texture_resource_sub_resource_map(struct wined3d_resource *resour return WINED3D_OK; } @@ -109,7 +109,7 @@ index 7c9c8298519..73e79ff25b5 100644 static HRESULT texture_resource_sub_resource_unmap(struct wined3d_resource *resource, unsigned int sub_resource_idx) { struct wined3d_texture_sub_resource *sub_resource; -@@ -3207,6 +3237,7 @@ static const struct wined3d_resource_ops texture_resource_ops = +@@ -3561,6 +3591,7 @@ static const struct wined3d_resource_ops texture_resource_ops = texture_resource_preload, texture_resource_unload, texture_resource_sub_resource_map, @@ -118,10 +118,10 @@ index 7c9c8298519..73e79ff25b5 100644 }; diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec -index e03c57055b7..f68f8199f7e 100644 +index 7c81eff1593..63e7b82abda 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec -@@ -218,6 +218,7 @@ +@@ -230,6 +230,7 @@ @ cdecl wined3d_resource_get_parent(ptr) @ cdecl wined3d_resource_get_priority(ptr) @ cdecl wined3d_resource_map(ptr long ptr ptr long) @@ -130,10 +130,10 @@ index e03c57055b7..f68f8199f7e 100644 @ cdecl wined3d_resource_set_parent(ptr ptr) @ cdecl wined3d_resource_set_priority(ptr long) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 8f9ad1ce856..c7f75d1983c 100644 +index 4d5f4765f57..385d0511d56 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -3368,6 +3368,8 @@ struct wined3d_resource_ops +@@ -4046,6 +4046,8 @@ struct wined3d_resource_ops void (*resource_unload)(struct wined3d_resource *resource); HRESULT (*resource_sub_resource_map)(struct wined3d_resource *resource, unsigned int sub_resource_idx, struct wined3d_map_desc *map_desc, const struct wined3d_box *box, DWORD flags); @@ -143,10 +143,10 @@ index 8f9ad1ce856..c7f75d1983c 100644 }; diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h -index bafab04d3d3..ea50fb7c8d4 100644 +index 2c4b93ce805..760bb709c2b 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h -@@ -1851,6 +1851,13 @@ struct wined3d_map_desc +@@ -1861,6 +1861,13 @@ struct wined3d_map_desc void *data; }; @@ -160,7 +160,7 @@ index bafab04d3d3..ea50fb7c8d4 100644 struct wined3d_sub_resource_data { const void *data; -@@ -2663,6 +2670,8 @@ void * __cdecl wined3d_resource_get_parent(const struct wined3d_resource *resour +@@ -2749,6 +2756,8 @@ void * __cdecl wined3d_resource_get_parent(const struct wined3d_resource *resour DWORD __cdecl wined3d_resource_get_priority(const struct wined3d_resource *resource); HRESULT __cdecl wined3d_resource_map(struct wined3d_resource *resource, unsigned int sub_resource_idx, struct wined3d_map_desc *map_desc, const struct wined3d_box *box, DWORD flags); @@ -170,5 +170,5 @@ index bafab04d3d3..ea50fb7c8d4 100644 void __cdecl wined3d_resource_set_parent(struct wined3d_resource *resource, void *parent); DWORD __cdecl wined3d_resource_set_priority(struct wined3d_resource *resource, DWORD priority); -- -2.24.0 +2.30.2 diff --git a/patches/d3d11-Deferred_Context/0039-d3d11-Implement-d3d11_deferred_context_UpdateSubreso.patch b/patches/d3d11-Deferred_Context/0039-d3d11-Implement-d3d11_deferred_context_UpdateSubreso.patch index 568291d6..22afa71b 100644 --- a/patches/d3d11-Deferred_Context/0039-d3d11-Implement-d3d11_deferred_context_UpdateSubreso.patch +++ b/patches/d3d11-Deferred_Context/0039-d3d11-Implement-d3d11_deferred_context_UpdateSubreso.patch @@ -1,20 +1,20 @@ -From 2aca1492440a076d00c910b6479b76fe69c1b2ee Mon Sep 17 00:00:00 2001 +From 8fe0dad5a51a6ddd712dfc87949e4b3d453c9e0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Thu, 31 Aug 2017 05:04:15 +0200 Subject: [PATCH] d3d11: Implement d3d11_deferred_context_UpdateSubresource. --- - dlls/d3d11/device.c | 75 +++++++++++++++++++++++++++++++++++++- - dlls/wined3d/resource.c | 93 +++++++++++++++++++++++++++++++++++++++++++++++ + dlls/d3d11/device.c | 75 ++++++++++++++++++++++++++++++- + dlls/wined3d/resource.c | 93 +++++++++++++++++++++++++++++++++++++++ dlls/wined3d/wined3d.spec | 1 + include/wine/wined3d.h | 2 + 4 files changed, 170 insertions(+), 1 deletion(-) diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c -index c83d6a0..4f3700d 100644 +index 21da04547a6..70eecdd5a9e 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c -@@ -45,6 +45,7 @@ enum deferred_cmd +@@ -69,6 +69,7 @@ enum deferred_cmd DEFERRED_COPYRESOURCE, /* copy_resource_info */ DEFERRED_SETRESOURCEMINLOD, /* set_resource_min_lod_info */ DEFERRED_COPYSUBRESOURCEREGION, /* copy_subresource_region_info */ @@ -22,10 +22,11 @@ index c83d6a0..4f3700d 100644 DEFERRED_RESOLVESUBRESOURCE, /* resolve_subresource_info */ DEFERRED_COPYSTRUCTURECOUNT, /* copy_structure_count_info */ -@@ -185,6 +186,15 @@ struct deferred_call +@@ -208,6 +209,15 @@ struct deferred_call + D3D11_BOX *src_box; } copy_subresource_region_info; struct - { ++ { + ID3D11Resource *resource; + UINT subresource_idx; + D3D11_BOX *box; @@ -34,11 +35,10 @@ index c83d6a0..4f3700d 100644 + UINT depth_pitch; + } update_subresource_info; + struct -+ { + { ID3D11Resource *dst_resource; UINT dst_subresource_idx; - ID3D11Resource *src_resource; -@@ -568,6 +578,12 @@ static void free_deferred_calls(struct list *commands) +@@ -592,6 +602,12 @@ static void free_deferred_calls(struct list *commands) ID3D11Resource_Release(call->copy_subresource_region_info.src_resource); break; } @@ -51,7 +51,7 @@ index c83d6a0..4f3700d 100644 case DEFERRED_RESOLVESUBRESOURCE: { if (call->resolve_subresource_info.dst_resource) -@@ -899,6 +915,17 @@ static void exec_deferred_calls(ID3D11DeviceContext1 *iface, struct list *comman +@@ -923,6 +939,17 @@ static void exec_deferred_calls(ID3D11DeviceContext1 *iface, struct list *comman call->copy_structure_count_info.src_view); break; } @@ -69,7 +69,7 @@ index c83d6a0..4f3700d 100644 case DEFERRED_CSSETSHADER: { ID3D11DeviceContext1_CSSetShader(iface, call->cs_info.shader, NULL, 0); -@@ -5054,8 +5081,54 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_UpdateSubresource(ID3D11Dev +@@ -5281,8 +5308,54 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_UpdateSubresource(ID3D11Dev ID3D11Resource *resource, UINT subresource_idx, const D3D11_BOX *box, const void *data, UINT row_pitch, UINT depth_pitch) { @@ -126,11 +126,11 @@ index c83d6a0..4f3700d 100644 static void STDMETHODCALLTYPE d3d11_deferred_context_CopyStructureCount(ID3D11DeviceContext *iface, diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c -index 28581a1..c2a9933 100644 +index b3a46950f4e..fae2cae4398 100644 --- a/dlls/wined3d/resource.c +++ b/dlls/wined3d/resource.c -@@ -373,6 +373,99 @@ HRESULT CDECL wined3d_resource_unmap(struct wined3d_resource *resource, unsigned - return wined3d_cs_unmap(resource->device->cs, resource, sub_resource_idx); +@@ -338,6 +338,99 @@ HRESULT CDECL wined3d_resource_unmap(struct wined3d_resource *resource, unsigned + return wined3d_device_context_unmap(&resource->device->cs->c, resource, sub_resource_idx); } +UINT CDECL wined3d_resource_update_info(struct wined3d_resource *resource, unsigned int sub_resource_idx, @@ -230,10 +230,10 @@ index 28581a1..c2a9933 100644 { wined3d_cs_emit_preload_resource(resource->device->cs, resource); diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec -index 58dc0a9..fe6e0af 100644 +index 63e7b82abda..9879f394699 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec -@@ -234,6 +234,7 @@ +@@ -235,6 +235,7 @@ @ cdecl wined3d_resource_set_parent(ptr ptr) @ cdecl wined3d_resource_set_priority(ptr long) @ cdecl wined3d_resource_unmap(ptr long) @@ -242,10 +242,10 @@ index 58dc0a9..fe6e0af 100644 @ cdecl wined3d_rendertarget_view_create(ptr ptr ptr ptr ptr) @ cdecl wined3d_rendertarget_view_create_from_sub_resource(ptr long ptr ptr ptr) diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h -index fa929e5..0adb891 100644 +index 760bb709c2b..7cd6682d494 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h -@@ -2597,6 +2597,8 @@ void __cdecl wined3d_resource_preload(struct wined3d_resource *resource); +@@ -2762,6 +2762,8 @@ void __cdecl wined3d_resource_preload(struct wined3d_resource *resource); void __cdecl wined3d_resource_set_parent(struct wined3d_resource *resource, void *parent); DWORD __cdecl wined3d_resource_set_priority(struct wined3d_resource *resource, DWORD priority); HRESULT __cdecl wined3d_resource_unmap(struct wined3d_resource *resource, unsigned int sub_resource_idx); @@ -255,5 +255,5 @@ index fa929e5..0adb891 100644 HRESULT __cdecl wined3d_rendertarget_view_create(const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops, -- -1.9.1 +2.30.2 diff --git a/patches/ntdll-DOS_Attributes/0007-ntdll-Perform-the-Unix-style-hidden-file-check-withi.patch b/patches/ntdll-DOS_Attributes/0007-ntdll-Perform-the-Unix-style-hidden-file-check-withi.patch index cd06918f..b908a191 100644 --- a/patches/ntdll-DOS_Attributes/0007-ntdll-Perform-the-Unix-style-hidden-file-check-withi.patch +++ b/patches/ntdll-DOS_Attributes/0007-ntdll-Perform-the-Unix-style-hidden-file-check-withi.patch @@ -1,4 +1,4 @@ -From 3f308239ced2e9fa2ac0b298eeb1ad5dde330840 Mon Sep 17 00:00:00 2001 +From a2e3bc27382f9c0c4894c6e0ab121f075e82db3e Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Wed, 20 Aug 2014 11:26:48 -0600 Subject: [PATCH] ntdll: Perform the Unix-style hidden file check within the @@ -9,10 +9,10 @@ Subject: [PATCH] ntdll: Perform the Unix-style hidden file check within the 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c -index 7c737edd22c..c6b4928bd53 100644 +index 73d4cce90ae..b790cde3f90 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c -@@ -1213,15 +1213,15 @@ static BOOLEAN get_dir_case_sensitivity( const char *dir ) +@@ -1328,15 +1328,15 @@ static BOOLEAN get_dir_case_sensitivity( const char *dir ) * * Check if the specified file should be hidden based on its name and the show dot files option. */ @@ -20,20 +20,20 @@ index 7c737edd22c..c6b4928bd53 100644 +static BOOL is_hidden_file( const char *name ) { - WCHAR *p, *end; -+ char *p, *end; ++ const char *p, *end; if (show_dot_files) return FALSE; - end = p = name->Buffer + name->Length/sizeof(WCHAR); -- while (p > name->Buffer && IS_SEPARATOR(p[-1])) p--; -- while (p > name->Buffer && !IS_SEPARATOR(p[-1])) p--; -+ end = p = (char *)name + strlen(name); -+ while (p > name && IS_SEPARATOR(p[-1])) p--; -+ while (p > name && !IS_SEPARATOR(p[-1])) p--; - if (p == end || *p != '.') return FALSE; - /* make sure it isn't '.' or '..' */ - if (p + 1 == end) return FALSE; -@@ -1567,6 +1567,10 @@ static int get_file_info( const char *path, struct stat *st, ULONG *attr ) +- while (p > name->Buffer && p[-1] == '\\') p--; +- while (p > name->Buffer && p[-1] != '\\') p--; ++ end = p = name + strlen( name ); ++ while (p > name && p[-1] == '\\') p--; ++ while (p > name && p[-1] != '\\') p--; + return (p < end && *p == '.'); + } + +@@ -1679,6 +1679,10 @@ static int get_file_info( const char *path, struct stat *st, ULONG *attr ) free( parent_path ); } *attr |= get_file_attributes( st ); @@ -44,7 +44,7 @@ index 7c737edd22c..c6b4928bd53 100644 len = xattr_get( path, SAMBA_XATTR_DOS_ATTRIB, hexattr, sizeof(hexattr)-1 ); if (len == -1) return ret; *attr |= get_file_xattr( hexattr, len ); -@@ -2077,11 +2081,6 @@ static NTSTATUS get_dir_data_entry( struct dir_data *dir_data, void *info_ptr, I +@@ -2186,11 +2190,6 @@ static NTSTATUS get_dir_data_entry( struct dir_data *dir_data, void *info_ptr, I if (class != FileNamesInformation) { if (st.st_dev != dir_data->id.dev) st.st_ino = 0; /* ignore inode if on a different device */ @@ -56,7 +56,7 @@ index 7c737edd22c..c6b4928bd53 100644 fill_file_info( &st, attributes, info, class ); } -@@ -3838,7 +3837,6 @@ NTSTATUS WINAPI NtQueryFullAttributesFile( const OBJECT_ATTRIBUTES *attr, +@@ -4106,7 +4105,6 @@ NTSTATUS WINAPI NtQueryFullAttributesFile( const OBJECT_ATTRIBUTES *attr, info->AllocationSize = std.AllocationSize; info->EndOfFile = std.EndOfFile; info->FileAttributes = basic.FileAttributes; @@ -64,7 +64,7 @@ index 7c737edd22c..c6b4928bd53 100644 } free( unix_name ); } -@@ -3865,10 +3863,7 @@ NTSTATUS WINAPI NtQueryAttributesFile( const OBJECT_ATTRIBUTES *attr, FILE_BASIC +@@ -4133,10 +4131,7 @@ NTSTATUS WINAPI NtQueryAttributesFile( const OBJECT_ATTRIBUTES *attr, FILE_BASIC else if (!S_ISREG(st.st_mode) && !S_ISDIR(st.st_mode)) status = STATUS_INVALID_INFO_CLASS; else @@ -76,5 +76,5 @@ index 7c737edd22c..c6b4928bd53 100644 } else WARN( "%s not found (%x)\n", debugstr_us(attr->ObjectName), status ); -- -2.27.0 +2.30.2 diff --git a/patches/ntdll-NtDevicePath/definition b/patches/ntdll-NtDevicePath/definition index 5362b59a..ddfa9158 100644 --- a/patches/ntdll-NtDevicePath/definition +++ b/patches/ntdll-NtDevicePath/definition @@ -1,3 +1,4 @@ Fixes: [37487] Resolve \\SystemRoot\\ prefix when opening files Fixes: Implement opening files through nt device paths -Depends: ntdll-Pipe_SpecialCharacters +# Temporarily disabled until the upstream code stops being thrashed. +Disabled: true diff --git a/patches/ntdll-Pipe_SpecialCharacters/0001-ntdll-Allow-special-characters-in-pipe-names.patch b/patches/ntdll-Pipe_SpecialCharacters/0001-ntdll-Allow-special-characters-in-pipe-names.patch deleted file mode 100644 index bb23e5d8..00000000 --- a/patches/ntdll-Pipe_SpecialCharacters/0001-ntdll-Allow-special-characters-in-pipe-names.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 24d4c486c981d7e7542a37b2916cb147f3467c92 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Sun, 27 Jul 2014 03:35:42 +0200 -Subject: [PATCH] ntdll: Allow special characters in pipe names. - -Based on patch by Valentyn Pavliuchenko. ---- - dlls/kernel32/tests/pipe.c | 10 ++++++++++ - dlls/ntdll/unix/file.c | 14 ++++++++++---- - 2 files changed, 20 insertions(+), 4 deletions(-) - -diff --git a/dlls/kernel32/tests/pipe.c b/dlls/kernel32/tests/pipe.c -index 91f6df34f81..8437264ae43 100644 ---- a/dlls/kernel32/tests/pipe.c -+++ b/dlls/kernel32/tests/pipe.c -@@ -30,6 +30,7 @@ - #include "wine/test.h" - - #define PIPENAME "\\\\.\\PiPe\\tests_pipe.c" -+#define PIPENAME_SPECIAL "\\\\.\\PiPe\\tests->pipe.c" - - #define NB_SERVER_LOOPS 8 - -@@ -673,6 +674,15 @@ static void test_CreateNamedPipe(int pipemode) - - CloseHandle(hnp); - -+ hnp = CreateNamedPipeA(PIPENAME_SPECIAL, PIPE_ACCESS_DUPLEX, pipemode | PIPE_WAIT, -+ /* nMaxInstances */ 1, -+ /* nOutBufSize */ 1024, -+ /* nInBufSize */ 1024, -+ /* nDefaultWait */ NMPWAIT_USE_DEFAULT_WAIT, -+ /* lpSecurityAttrib */ NULL); -+ ok(hnp != INVALID_HANDLE_VALUE, "CreateNamedPipe with special characters failed\n"); -+ ok(CloseHandle(hnp), "CloseHandle\n"); -+ - if (winetest_debug > 1) trace("test_CreateNamedPipe returning\n"); - } - -diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c -index 6337433ed80..5ab24e2c334 100644 ---- a/dlls/ntdll/unix/file.c -+++ b/dlls/ntdll/unix/file.c -@@ -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; -@@ -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; -+ BOOLEAN is_pipe = FALSE; - - name = nameW->Buffer; - name_len = nameW->Length / sizeof(WCHAR); -@@ -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; - -- /* check for invalid characters (all chars except 0 are valid for unix) */ -- is_unix = (prefix_len == 4 && !memcmp( prefix, unixW, sizeof(unixW) )); -- if (is_unix) -+ /* check for invalid characters (all chars except 0 are valid for unix and pipes) */ -+ if (prefix_len == 4) -+ { -+ is_unix = !memcmp( prefix, unixW, sizeof(unixW) ); -+ is_pipe = !memcmp( prefix, pipeW, sizeof(pipeW) ); -+ } -+ if (is_unix || is_pipe) - { - for (p = name; p < name + name_len; p++) - if (!*p) return STATUS_OBJECT_NAME_INVALID; -- check_case = TRUE; -+ check_case |= is_unix; - } - else - { --- -2.20.1 - diff --git a/patches/ntdll-Pipe_SpecialCharacters/definition b/patches/ntdll-Pipe_SpecialCharacters/definition deleted file mode 100644 index e6f8bf8c..00000000 --- a/patches/ntdll-Pipe_SpecialCharacters/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [28995] Allow special characters in pipe names diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index e1400d75..7615077c 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "4904d90870a716fda971fc12240ddbc23323475c" + echo "c6393968754d64189f111e9277fb9060ec415fae" } # Show version information @@ -164,11 +164,9 @@ patch_enable_all () enable_ntdll_Junction_Points="$1" enable_ntdll_Manifest_Range="$1" enable_ntdll_NtAlertThreadByThreadId="$1" - enable_ntdll_NtDevicePath="$1" enable_ntdll_NtQueryEaFile="$1" enable_ntdll_NtQuerySection="$1" enable_ntdll_NtSetLdtEntries="$1" - enable_ntdll_Pipe_SpecialCharacters="$1" enable_ntdll_ProcessQuotaLimits="$1" enable_ntdll_RtlFirstFreeAce="$1" enable_ntdll_RtlQueryPackageIdentity="$1" @@ -552,9 +550,6 @@ patch_enable () ntdll-NtAlertThreadByThreadId) enable_ntdll_NtAlertThreadByThreadId="$2" ;; - ntdll-NtDevicePath) - enable_ntdll_NtDevicePath="$2" - ;; ntdll-NtQueryEaFile) enable_ntdll_NtQueryEaFile="$2" ;; @@ -564,9 +559,6 @@ patch_enable () ntdll-NtSetLdtEntries) enable_ntdll_NtSetLdtEntries="$2" ;; - ntdll-Pipe_SpecialCharacters) - enable_ntdll_Pipe_SpecialCharacters="$2" - ;; ntdll-ProcessQuotaLimits) enable_ntdll_ProcessQuotaLimits="$2" ;; @@ -1417,13 +1409,6 @@ if test "$enable_nvcuvid_CUDA_Video_Support" -eq 1; then enable_nvapi_Stub_DLL=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." - fi - enable_ntdll_Pipe_SpecialCharacters=1 -fi - if test "$enable_ntdll_Builtin_Prot" -eq 1; then if test "$enable_ntdll_WRITECOPY" -gt 1; then abort "Patchset ntdll-WRITECOPY disabled, but ntdll-Builtin_Prot depends on that." @@ -3005,33 +2990,6 @@ if test "$enable_ntdll_NtAlertThreadByThreadId" -eq 1; then patch_apply ntdll-NtAlertThreadByThreadId/0013-ntdll-Reimplement-SRW-locks-on-top-of-Win32-futexes.patch fi -# Patchset ntdll-Pipe_SpecialCharacters -# | -# | This patchset fixes the following Wine bugs: -# | * [#28995] Allow special characters in pipe names -# | -# | Modified files: -# | * dlls/kernel32/tests/pipe.c, dlls/ntdll/unix/file.c -# | -if test "$enable_ntdll_Pipe_SpecialCharacters" -eq 1; then - patch_apply ntdll-Pipe_SpecialCharacters/0001-ntdll-Allow-special-characters-in-pipe-names.patch -fi - -# Patchset ntdll-NtDevicePath -# | -# | This patchset has the following (direct or indirect) dependencies: -# | * ntdll-Pipe_SpecialCharacters -# | -# | This patchset fixes the following Wine bugs: -# | * [#37487] Resolve \\SystemRoot\\ prefix when opening files -# | -# | Modified files: -# | * dlls/ntdll/tests/file.c, dlls/ntdll/unix/file.c -# | -if test "$enable_ntdll_NtDevicePath" -eq 1; then - patch_apply ntdll-NtDevicePath/0001-ntdll-Implement-opening-files-through-nt-device-path.patch -fi - # Patchset ntdll-NtQuerySection # | # | Modified files: diff --git a/staging/upstream-commit b/staging/upstream-commit index df8fbf64..b8229372 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -4904d90870a716fda971fc12240ddbc23323475c +c6393968754d64189f111e9277fb9060ec415fae