mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-09-13 09:17:20 -07:00
Rebase against c6393968754d64189f111e9277fb9060ec415fae.
This commit is contained in:
parent
2211b6664e
commit
d805441f46
@ -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?= <michael@fds-team.de>
|
||||
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
|
||||
|
||||
|
@ -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?= <michael@fds-team.de>
|
||||
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
|
||||
|
||||
|
@ -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" <erich.e.hoover@gmail.com>
|
||||
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
|
||||
|
||||
|
@ -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
|
||||
|
@ -1,84 +0,0 @@
|
||||
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.
|
||||
|
||||
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
|
||||
|
@ -1 +0,0 @@
|
||||
Fixes: [28995] Allow special characters in pipe names
|
@ -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:
|
||||
|
@ -1 +1 @@
|
||||
4904d90870a716fda971fc12240ddbc23323475c
|
||||
c6393968754d64189f111e9277fb9060ec415fae
|
||||
|
Loading…
Reference in New Issue
Block a user