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
Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
dc83f04f04 | ||
|
761ca063a0 | ||
|
732d40058d | ||
|
64561065d2 | ||
|
1bd95055a7 | ||
|
3f082c2d0a | ||
|
42312b1e3f | ||
|
a840ce50e7 | ||
|
912b650b76 | ||
|
5ae728e2ec | ||
|
9517e98320 | ||
|
bd3794c11e |
@@ -1,24 +0,0 @@
|
||||
From 560a25c662f7b56d2b895759be1ea65c64d0f5af Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 4 Jun 2017 12:57:17 +0200
|
||||
Subject: ws2_32/tests: Work around an incorrect detection in GCC 7.
|
||||
|
||||
---
|
||||
dlls/ws2_32/tests/sock.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
|
||||
index 677a750ec6b..65c82e36524 100644
|
||||
--- a/dlls/ws2_32/tests/sock.c
|
||||
+++ b/dlls/ws2_32/tests/sock.c
|
||||
@@ -3601,6 +3601,7 @@ static DWORD WINAPI SelectReadThread(void *param)
|
||||
struct sockaddr_in addr;
|
||||
struct timeval select_timeout;
|
||||
|
||||
+ memset(&readfds, 0, sizeof(readfds));
|
||||
FD_ZERO(&readfds);
|
||||
FD_SET(par->s, &readfds);
|
||||
select_timeout.tv_sec=5;
|
||||
--
|
||||
2.13.0
|
||||
|
@@ -1,67 +0,0 @@
|
||||
From cd34de81164087b3593d0ec9416e2f157a5df40d Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Fri, 8 Aug 2014 19:33:14 -0600
|
||||
Subject: Appease the blessed version of gcc (4.5) when -Werror is enabled.
|
||||
|
||||
---
|
||||
dlls/d3d9/tests/visual.c | 2 +-
|
||||
dlls/netapi32/netapi32.c | 2 +-
|
||||
dlls/wined3d/glsl_shader.c | 2 +-
|
||||
tools/makedep.c | 2 +-
|
||||
4 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
|
||||
index c8a6a1fa5a8..0261d3708e6 100644
|
||||
--- a/dlls/d3d9/tests/visual.c
|
||||
+++ b/dlls/d3d9/tests/visual.c
|
||||
@@ -12304,7 +12304,7 @@ static void yuv_layout_test(void)
|
||||
IDirect3D9 *d3d;
|
||||
D3DCOLOR color;
|
||||
DWORD ref_color;
|
||||
- BYTE *buf, *chroma_buf, *u_buf, *v_buf;
|
||||
+ BYTE *buf, *chroma_buf, *u_buf = NULL, *v_buf = NULL;
|
||||
UINT width = 20, height = 16;
|
||||
IDirect3DDevice9 *device;
|
||||
ULONG refcount;
|
||||
diff --git a/dlls/netapi32/netapi32.c b/dlls/netapi32/netapi32.c
|
||||
index 278d4528b01..1c5f110b828 100644
|
||||
--- a/dlls/netapi32/netapi32.c
|
||||
+++ b/dlls/netapi32/netapi32.c
|
||||
@@ -780,7 +780,7 @@ static NET_API_STATUS share_info_to_samba( DWORD level, const BYTE *buf, unsigne
|
||||
static NET_API_STATUS share_add( LMSTR servername, DWORD level, LPBYTE buf, LPDWORD parm_err )
|
||||
{
|
||||
char *server = NULL;
|
||||
- unsigned char *info;
|
||||
+ unsigned char *info = NULL;
|
||||
NET_API_STATUS status;
|
||||
|
||||
if (servername && !(server = strdup_unixcp( servername ))) return ERROR_OUTOFMEMORY;
|
||||
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
|
||||
index f96f48d97d1..8fe3318cd78 100644
|
||||
--- a/dlls/wined3d/glsl_shader.c
|
||||
+++ b/dlls/wined3d/glsl_shader.c
|
||||
@@ -9721,7 +9721,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
|
||||
GLuint ds_id = 0;
|
||||
GLuint gs_id = 0;
|
||||
GLuint ps_id = 0;
|
||||
- struct list *ps_list, *vs_list;
|
||||
+ struct list *ps_list = NULL, *vs_list = NULL;
|
||||
WORD attribs_map;
|
||||
struct wined3d_string_buffer *tmp_name;
|
||||
|
||||
diff --git a/tools/makedep.c b/tools/makedep.c
|
||||
index 296356b0a57..5a2873b56f1 100644
|
||||
--- a/tools/makedep.c
|
||||
+++ b/tools/makedep.c
|
||||
@@ -1608,7 +1608,7 @@ static const char *get_make_variable( const struct makefile *make, const char *n
|
||||
static char *get_expanded_make_variable( const struct makefile *make, const char *name )
|
||||
{
|
||||
const char *var;
|
||||
- char *p, *end, *expand, *tmp;
|
||||
+ char *p, *end, *expand, *tmp = NULL;
|
||||
|
||||
var = get_make_variable( make, name );
|
||||
if (!var) return NULL;
|
||||
--
|
||||
2.13.1
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 79ff79dba6d5c8008c53e4bcf5e38c3a54271091 Mon Sep 17 00:00:00 2001
|
||||
From e8bc998c7b00a18a724f6cfd2823aefcd8b1b15c Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Tue, 22 Mar 2016 21:54:26 +0100
|
||||
Subject: d2d1: Avoid implicit cast of interface pointer.
|
||||
@@ -9,10 +9,10 @@ Subject: d2d1: Avoid implicit cast of interface pointer.
|
||||
2 files changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/dlls/d2d1/brush.c b/dlls/d2d1/brush.c
|
||||
index 7f4c7bbb763..30d25fec4b4 100644
|
||||
index b03af89..319a188 100644
|
||||
--- a/dlls/d2d1/brush.c
|
||||
+++ b/dlls/d2d1/brush.c
|
||||
@@ -251,7 +251,7 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory,
|
||||
@@ -256,7 +256,7 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory,
|
||||
|
||||
static inline struct d2d_brush *impl_from_ID2D1SolidColorBrush(ID2D1SolidColorBrush *iface)
|
||||
{
|
||||
@@ -21,7 +21,7 @@ index 7f4c7bbb763..30d25fec4b4 100644
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE d2d_solid_color_brush_QueryInterface(ID2D1SolidColorBrush *iface,
|
||||
@@ -394,7 +394,7 @@ HRESULT d2d_solid_color_brush_create(ID2D1Factory *factory, const D2D1_COLOR_F *
|
||||
@@ -399,7 +399,7 @@ HRESULT d2d_solid_color_brush_create(ID2D1Factory *factory, const D2D1_COLOR_F *
|
||||
|
||||
static inline struct d2d_brush *impl_from_ID2D1LinearGradientBrush(ID2D1LinearGradientBrush *iface)
|
||||
{
|
||||
@@ -30,7 +30,7 @@ index 7f4c7bbb763..30d25fec4b4 100644
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE d2d_linear_gradient_brush_QueryInterface(ID2D1LinearGradientBrush *iface,
|
||||
@@ -580,7 +580,7 @@ HRESULT d2d_linear_gradient_brush_create(ID2D1Factory *factory, const D2D1_LINEA
|
||||
@@ -586,7 +586,7 @@ HRESULT d2d_linear_gradient_brush_create(ID2D1Factory *factory,
|
||||
|
||||
static inline struct d2d_brush *impl_from_ID2D1RadialGradientBrush(ID2D1RadialGradientBrush *iface)
|
||||
{
|
||||
@@ -39,20 +39,20 @@ index 7f4c7bbb763..30d25fec4b4 100644
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE d2d_radial_gradient_brush_QueryInterface(ID2D1RadialGradientBrush *iface,
|
||||
@@ -776,7 +776,7 @@ HRESULT d2d_radial_gradient_brush_create(ID2D1Factory *factory, const D2D1_BRUSH
|
||||
@@ -818,7 +818,7 @@ HRESULT d2d_radial_gradient_brush_create(ID2D1Factory *factory,
|
||||
|
||||
static inline struct d2d_brush *impl_from_ID2D1BitmapBrush(ID2D1BitmapBrush *iface)
|
||||
static inline struct d2d_brush *impl_from_ID2D1BitmapBrush1(ID2D1BitmapBrush1 *iface)
|
||||
{
|
||||
- return CONTAINING_RECORD(iface, struct d2d_brush, ID2D1Brush_iface);
|
||||
+ return CONTAINING_RECORD((ID2D1Brush *)iface, struct d2d_brush, ID2D1Brush_iface);
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE d2d_bitmap_brush_QueryInterface(ID2D1BitmapBrush *iface,
|
||||
static HRESULT STDMETHODCALLTYPE d2d_bitmap_brush_QueryInterface(ID2D1BitmapBrush1 *iface,
|
||||
diff --git a/dlls/d2d1/geometry.c b/dlls/d2d1/geometry.c
|
||||
index a9588985642..b8457a9e1ea 100644
|
||||
index d716fb1..18d8deb 100644
|
||||
--- a/dlls/d2d1/geometry.c
|
||||
+++ b/dlls/d2d1/geometry.c
|
||||
@@ -3024,7 +3024,7 @@ static const struct ID2D1GeometrySinkVtbl d2d_geometry_sink_vtbl =
|
||||
@@ -2987,7 +2987,7 @@ static const struct ID2D1GeometrySinkVtbl d2d_geometry_sink_vtbl =
|
||||
|
||||
static inline struct d2d_geometry *impl_from_ID2D1PathGeometry(ID2D1PathGeometry *iface)
|
||||
{
|
||||
@@ -61,7 +61,7 @@ index a9588985642..b8457a9e1ea 100644
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE d2d_path_geometry_QueryInterface(ID2D1PathGeometry *iface, REFIID iid, void **out)
|
||||
@@ -3540,7 +3540,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory
|
||||
@@ -3503,7 +3503,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory
|
||||
|
||||
static inline struct d2d_geometry *impl_from_ID2D1RectangleGeometry(ID2D1RectangleGeometry *iface)
|
||||
{
|
||||
@@ -70,7 +70,7 @@ index a9588985642..b8457a9e1ea 100644
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE d2d_rectangle_geometry_QueryInterface(ID2D1RectangleGeometry *iface,
|
||||
@@ -3876,7 +3876,7 @@ fail:
|
||||
@@ -3839,7 +3839,7 @@ fail:
|
||||
|
||||
static inline struct d2d_geometry *impl_from_ID2D1TransformedGeometry(ID2D1TransformedGeometry *iface)
|
||||
{
|
||||
@@ -80,5 +80,5 @@ index a9588985642..b8457a9e1ea 100644
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE d2d_transformed_geometry_QueryInterface(ID2D1TransformedGeometry *iface,
|
||||
--
|
||||
2.14.1
|
||||
2.7.4
|
||||
|
||||
|
@@ -1,2 +1 @@
|
||||
Depends: server-Misc_ACL
|
||||
Depends: server-CreateProcess_ACLs
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 45713db2d90bd8833415ad2af1920cc792767535 Mon Sep 17 00:00:00 2001
|
||||
From 6dc2138136a0699c8e8d1337b646a09b93cd8b0f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 5 Aug 2017 04:02:16 +0200
|
||||
Subject: [PATCH] kernel32: Implement CreateProcessInternalW.
|
||||
@@ -11,7 +11,7 @@ Subject: [PATCH] kernel32: Implement CreateProcessInternalW.
|
||||
4 files changed, 17 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
|
||||
index de6f007..a3607d1 100644
|
||||
index cb9c73a..98d5000 100644
|
||||
--- a/dlls/kernel32/kernel32.spec
|
||||
+++ b/dlls/kernel32/kernel32.spec
|
||||
@@ -315,7 +315,7 @@
|
||||
@@ -24,10 +24,10 @@ index de6f007..a3607d1 100644
|
||||
@ stdcall CreateProcessW(wstr wstr ptr ptr long long ptr wstr ptr ptr)
|
||||
@ stdcall CreateRemoteThread(long ptr long ptr long long ptr)
|
||||
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
|
||||
index f568022..e270ca7 100644
|
||||
index 658a0b1..15460aa 100644
|
||||
--- a/dlls/kernel32/process.c
|
||||
+++ b/dlls/kernel32/process.c
|
||||
@@ -2438,12 +2438,13 @@ static LPWSTR get_file_name( LPCWSTR appname, LPWSTR cmdline, LPWSTR buffer,
|
||||
@@ -2588,12 +2588,13 @@ static LPWSTR get_file_name( LPCWSTR appname, LPWSTR cmdline, LPWSTR buffer,
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -47,17 +47,17 @@ index f568022..e270ca7 100644
|
||||
{
|
||||
BOOL retv = FALSE;
|
||||
HANDLE hFile = 0;
|
||||
@@ -2456,6 +2457,9 @@ static BOOL create_process_impl( LPCWSTR app_name, LPWSTR cmd_line, LPSECURITY_A
|
||||
@@ -2608,6 +2609,9 @@ static BOOL create_process_impl( LPCWSTR app_name, LPWSTR cmd_line, LPSECURITY_A
|
||||
|
||||
TRACE("app %s cmdline %s\n", debugstr_w(app_name), debugstr_w(cmd_line) );
|
||||
|
||||
+ if (token) FIXME("Creating a process with a token is not yet implemented\n");
|
||||
+ if (new_token) FIXME("No support for returning created process token\n");
|
||||
+
|
||||
if (!(tidy_cmdline = get_file_name( app_name, cmd_line, name, ARRAY_SIZE( name ),
|
||||
&hFile, &binary_info )))
|
||||
if (!(tidy_cmdline = get_file_name( app_name, cmd_line, name, ARRAY_SIZE( name ), &hFile, &is_64bit )))
|
||||
return FALSE;
|
||||
@@ -2607,8 +2611,8 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA( LPCSTR app_name, LPSTR cmd_line, L
|
||||
if (hFile == INVALID_HANDLE_VALUE) goto done;
|
||||
@@ -2774,8 +2778,8 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA( LPCSTR app_name, LPSTR cmd_line, L
|
||||
FIXME("StartupInfo.lpReserved is used, please report (%s)\n",
|
||||
debugstr_a(startup_info->lpReserved));
|
||||
|
||||
@@ -68,7 +68,7 @@ index f568022..e270ca7 100644
|
||||
done:
|
||||
HeapFree( GetProcessHeap(), 0, app_nameW );
|
||||
HeapFree( GetProcessHeap(), 0, cmd_lineW );
|
||||
@@ -2627,8 +2631,8 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW( LPCWSTR app_name, LPWSTR cmd_line,
|
||||
@@ -2794,8 +2798,8 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW( LPCWSTR app_name, LPWSTR cmd_line,
|
||||
LPVOID env, LPCWSTR cur_dir, LPSTARTUPINFOW startup_info,
|
||||
LPPROCESS_INFORMATION info )
|
||||
{
|
||||
@@ -80,7 +80,7 @@ index f568022..e270ca7 100644
|
||||
|
||||
|
||||
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
|
||||
index fb7fafe..9d6c5f9 100644
|
||||
index 7d8439f..cfc3bec 100644
|
||||
--- a/dlls/kernelbase/kernelbase.spec
|
||||
+++ b/dlls/kernelbase/kernelbase.spec
|
||||
@@ -209,7 +209,7 @@
|
||||
@@ -93,10 +93,10 @@ index fb7fafe..9d6c5f9 100644
|
||||
@ stdcall CreateRemoteThread(long ptr long ptr long long ptr) kernel32.CreateRemoteThread
|
||||
@ stdcall CreateRemoteThreadEx(long ptr long ptr ptr long ptr ptr) kernel32.CreateRemoteThreadEx
|
||||
diff --git a/include/winbase.h b/include/winbase.h
|
||||
index 667df96..b77bced 100644
|
||||
index de52e5a..99e761e 100644
|
||||
--- a/include/winbase.h
|
||||
+++ b/include/winbase.h
|
||||
@@ -1856,6 +1856,7 @@ WINBASEAPI BOOL WINAPI CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTE
|
||||
@@ -1863,6 +1863,7 @@ WINBASEAPI BOOL WINAPI CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTE
|
||||
WINADVAPI BOOL WINAPI CreateProcessAsUserA(HANDLE,LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION);
|
||||
WINADVAPI BOOL WINAPI CreateProcessAsUserW(HANDLE,LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION);
|
||||
#define CreateProcessAsUser WINELIB_NAME_AW(CreateProcessAsUser)
|
||||
@@ -105,5 +105,5 @@ index 667df96..b77bced 100644
|
||||
WINBASEAPI HANDLE WINAPI CreateRemoteThread(HANDLE,LPSECURITY_ATTRIBUTES,SIZE_T,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD);
|
||||
WINBASEAPI HANDLE WINAPI CreateRemoteThreadEx(HANDLE,LPSECURITY_ATTRIBUTES,SIZE_T,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPPROC_THREAD_ATTRIBUTE_LIST,LPDWORD);
|
||||
--
|
||||
1.9.1
|
||||
2.7.4
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From b534f2d905c3ba205c9a4f895149e6be8425b31e Mon Sep 17 00:00:00 2001
|
||||
From ed2822f9c9c1178b78872b13aa5d5df1a397bd35 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 6 Aug 2017 02:08:05 +0200
|
||||
Subject: [PATCH] server: Implement support for creating processes using a
|
||||
@@ -15,10 +15,10 @@ Subject: [PATCH] server: Implement support for creating processes using a
|
||||
7 files changed, 59 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
|
||||
index e270ca7..633065b 100644
|
||||
index e9d10ee..4ea7f1d 100644
|
||||
--- a/dlls/kernel32/process.c
|
||||
+++ b/dlls/kernel32/process.c
|
||||
@@ -2036,7 +2036,7 @@ static NTSTATUS create_struct_sd(PSECURITY_DESCRIPTOR nt_sd, struct security_des
|
||||
@@ -2203,7 +2203,7 @@ static NTSTATUS alloc_object_attributes( const SECURITY_ATTRIBUTES *attr, struct
|
||||
* Create a new process. If hFile is a valid handle we have an exe
|
||||
* file, otherwise it is a Winelib app.
|
||||
*/
|
||||
@@ -27,15 +27,15 @@ index e270ca7..633065b 100644
|
||||
LPCWSTR cur_dir, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
|
||||
BOOL inherit, DWORD flags, LPSTARTUPINFOW startup,
|
||||
LPPROCESS_INFORMATION info, LPCSTR unixdir,
|
||||
@@ -2182,6 +2182,7 @@ static BOOL create_process( HANDLE hFile, LPCWSTR filename, LPWSTR cmd_line, LPW
|
||||
@@ -2316,6 +2316,7 @@ static BOOL create_process( HANDLE hFile, LPCWSTR filename, LPWSTR cmd_line, LPW
|
||||
req->access = PROCESS_ALL_ACCESS;
|
||||
req->cpu = cpu;
|
||||
req->info_size = startup_info_size;
|
||||
req->env_size = (env_end - env) * sizeof(WCHAR);
|
||||
req->process_sd_size = process_sd_size;
|
||||
+ req->token = wine_server_obj_handle( token );
|
||||
|
||||
wine_server_add_data( req, objattr, attr_len );
|
||||
wine_server_add_data( req, startup_info, startup_info_size );
|
||||
wine_server_add_data( req, env, (env_end - env) * sizeof(WCHAR) );
|
||||
@@ -2282,7 +2283,7 @@ error:
|
||||
@@ -2432,7 +2433,7 @@ error:
|
||||
*
|
||||
* Create a new VDM process for a 16-bit or DOS application.
|
||||
*/
|
||||
@@ -43,17 +43,17 @@ index e270ca7..633065b 100644
|
||||
+static BOOL create_vdm_process( HANDLE token, LPCWSTR filename, LPWSTR cmd_line, LPWSTR env, LPCWSTR cur_dir,
|
||||
LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
|
||||
BOOL inherit, DWORD flags, LPSTARTUPINFOW startup,
|
||||
LPPROCESS_INFORMATION info, LPCSTR unixdir,
|
||||
@@ -2306,7 +2307,7 @@ static BOOL create_vdm_process( LPCWSTR filename, LPWSTR cmd_line, LPWSTR env, L
|
||||
return FALSE;
|
||||
}
|
||||
LPPROCESS_INFORMATION info, LPCSTR unixdir, int exec_only )
|
||||
@@ -2458,7 +2459,7 @@ static BOOL create_vdm_process( LPCWSTR filename, LPWSTR cmd_line, LPWSTR env, L
|
||||
sprintfW(new_cmd_line, argsW, winevdmW, buffer, cmd_line);
|
||||
memset( &pe_info, 0, sizeof(pe_info) );
|
||||
pe_info.machine = IMAGE_FILE_MACHINE_I386;
|
||||
- ret = create_process( 0, winevdmW, new_cmd_line, env, cur_dir, psa, tsa, inherit,
|
||||
+ ret = create_process( token, 0, winevdmW, new_cmd_line, env, cur_dir, psa, tsa, inherit,
|
||||
flags, startup, info, unixdir, binary_info, exec_only );
|
||||
flags, startup, info, unixdir, &pe_info, exec_only );
|
||||
HeapFree( GetProcessHeap(), 0, new_cmd_line );
|
||||
return ret;
|
||||
@@ -2318,7 +2319,7 @@ static BOOL create_vdm_process( LPCWSTR filename, LPWSTR cmd_line, LPWSTR env, L
|
||||
@@ -2470,7 +2471,7 @@ static BOOL create_vdm_process( LPCWSTR filename, LPWSTR cmd_line, LPWSTR env, L
|
||||
*
|
||||
* Create a new cmd shell process for a .BAT file.
|
||||
*/
|
||||
@@ -62,7 +62,7 @@ index e270ca7..633065b 100644
|
||||
LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
|
||||
BOOL inherit, DWORD flags, LPSTARTUPINFOW startup,
|
||||
LPPROCESS_INFORMATION info )
|
||||
@@ -2346,8 +2347,8 @@ static BOOL create_cmd_process( LPCWSTR filename, LPWSTR cmd_line, LPVOID env, L
|
||||
@@ -2498,8 +2499,8 @@ static BOOL create_cmd_process( LPCWSTR filename, LPWSTR cmd_line, LPVOID env, L
|
||||
strcatW( newcmdline, quotW );
|
||||
strcatW( newcmdline, cmd_line );
|
||||
strcatW( newcmdline, quotW );
|
||||
@@ -73,7 +73,7 @@ index e270ca7..633065b 100644
|
||||
HeapFree( GetProcessHeap(), 0, newcmdline );
|
||||
return ret;
|
||||
}
|
||||
@@ -2457,7 +2458,9 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
|
||||
@@ -2611,7 +2612,9 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
|
||||
|
||||
TRACE("app %s cmdline %s\n", debugstr_w(app_name), debugstr_w(cmd_line) );
|
||||
|
||||
@@ -83,41 +83,38 @@ index e270ca7..633065b 100644
|
||||
+
|
||||
if (new_token) FIXME("No support for returning created process token\n");
|
||||
|
||||
if (!(tidy_cmdline = get_file_name( app_name, cmd_line, name, ARRAY_SIZE( name ),
|
||||
@@ -2515,20 +2518,20 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
|
||||
debugstr_w(name), (binary_info.flags & BINARY_FLAG_64BIT) ? 64 : 32,
|
||||
wine_dbgstr_longlong(binary_info.res_start), wine_dbgstr_longlong(binary_info.res_end),
|
||||
binary_info.arch, (binary_info.flags & BINARY_FLAG_FAKEDLL) ? ", fakedll" : "" );
|
||||
if (!(tidy_cmdline = get_file_name( app_name, cmd_line, name, ARRAY_SIZE( name ), &hFile, &is_64bit )))
|
||||
@@ -2688,18 +2691,18 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
|
||||
debugstr_w(name), is_64bit_arch(pe_info.machine) ? 64 : 32,
|
||||
wine_dbgstr_longlong(pe_info.base), wine_dbgstr_longlong(pe_info.base + pe_info.map_size),
|
||||
pe_info.machine );
|
||||
- retv = create_process( hFile, name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
|
||||
+ retv = create_process( token, hFile, name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
|
||||
inherit, flags, startup_info, info, unixdir, &binary_info, FALSE );
|
||||
inherit, flags, startup_info, info, unixdir, &pe_info, FALSE );
|
||||
break;
|
||||
case BINARY_OS216:
|
||||
case BINARY_WIN16:
|
||||
case BINARY_DOS:
|
||||
TRACE( "starting %s as Win16/DOS binary\n", debugstr_w(name) );
|
||||
- retv = create_vdm_process( name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
|
||||
+ retv = create_vdm_process( token, name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
|
||||
inherit, flags, startup_info, info, unixdir, &binary_info, FALSE );
|
||||
inherit, flags, startup_info, info, unixdir, FALSE );
|
||||
break;
|
||||
case BINARY_UNIX_LIB:
|
||||
TRACE( "starting %s as %d-bit Winelib app\n",
|
||||
debugstr_w(name), (binary_info.flags & BINARY_FLAG_64BIT) ? 64 : 32 );
|
||||
debugstr_w(name), is_64bit_arch(pe_info.machine) ? 64 : 32 );
|
||||
- retv = create_process( hFile, name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
|
||||
+ retv = create_process( token, hFile, name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
|
||||
inherit, flags, startup_info, info, unixdir, &binary_info, FALSE );
|
||||
inherit, flags, startup_info, info, unixdir, &pe_info, FALSE );
|
||||
break;
|
||||
case BINARY_UNKNOWN:
|
||||
@@ -2540,7 +2543,7 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
|
||||
@@ -2709,14 +2712,14 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
|
||||
if (!strcmpiW( p, comW ) || !strcmpiW( p, pifW ))
|
||||
{
|
||||
TRACE( "starting %s as DOS binary\n", debugstr_w(name) );
|
||||
binary_info.type = BINARY_DOS;
|
||||
binary_info.arch = IMAGE_FILE_MACHINE_I386;
|
||||
- retv = create_vdm_process( name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
|
||||
+ retv = create_vdm_process( token, name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
|
||||
inherit, flags, startup_info, info, unixdir,
|
||||
&binary_info, FALSE );
|
||||
inherit, flags, startup_info, info, unixdir, FALSE );
|
||||
break;
|
||||
@@ -2548,7 +2551,7 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
|
||||
}
|
||||
if (!strcmpiW( p, batW ) || !strcmpiW( p, cmdW ) )
|
||||
{
|
||||
TRACE( "starting %s as batch binary\n", debugstr_w(name) );
|
||||
@@ -126,44 +123,44 @@ index e270ca7..633065b 100644
|
||||
inherit, flags, startup_info, info );
|
||||
break;
|
||||
}
|
||||
@@ -2668,12 +2671,12 @@ static void exec_process( LPCWSTR name )
|
||||
debugstr_w(name), (binary_info.flags & BINARY_FLAG_64BIT) ? 64 : 32,
|
||||
wine_dbgstr_longlong(binary_info.res_start), wine_dbgstr_longlong(binary_info.res_end),
|
||||
binary_info.arch );
|
||||
@@ -2832,12 +2835,12 @@ static void exec_process( LPCWSTR name )
|
||||
debugstr_w(name), is_64bit_arch(pe_info.machine) ? 64 : 32,
|
||||
wine_dbgstr_longlong(pe_info.base), wine_dbgstr_longlong(pe_info.base + pe_info.map_size),
|
||||
pe_info.machine );
|
||||
- create_process( hFile, name, GetCommandLineW(), NULL, NULL, NULL, NULL,
|
||||
+ create_process( NULL, hFile, name, GetCommandLineW(), NULL, NULL, NULL, NULL,
|
||||
FALSE, 0, &startup_info, &info, NULL, &binary_info, TRUE );
|
||||
FALSE, 0, &startup_info, &info, NULL, &pe_info, TRUE );
|
||||
break;
|
||||
case BINARY_UNIX_LIB:
|
||||
TRACE( "%s is a Unix library, starting as Winelib app\n", debugstr_w(name) );
|
||||
- create_process( hFile, name, GetCommandLineW(), NULL, NULL, NULL, NULL,
|
||||
+ create_process( NULL, hFile, name, GetCommandLineW(), NULL, NULL, NULL, NULL,
|
||||
FALSE, 0, &startup_info, &info, NULL, &binary_info, TRUE );
|
||||
FALSE, 0, &startup_info, &info, NULL, &pe_info, TRUE );
|
||||
break;
|
||||
case BINARY_UNKNOWN:
|
||||
@@ -2687,7 +2690,7 @@ static void exec_process( LPCWSTR name )
|
||||
@@ -2847,7 +2850,7 @@ static void exec_process( LPCWSTR name )
|
||||
/* fall through */
|
||||
case BINARY_WIN16:
|
||||
case BINARY_DOS:
|
||||
TRACE( "starting %s as Win16/DOS binary\n", debugstr_w(name) );
|
||||
- create_vdm_process( name, GetCommandLineW(), NULL, NULL, NULL, NULL,
|
||||
+ create_vdm_process( NULL, name, GetCommandLineW(), NULL, NULL, NULL, NULL,
|
||||
FALSE, 0, &startup_info, &info, NULL, &binary_info, TRUE );
|
||||
FALSE, 0, &startup_info, &info, NULL, TRUE );
|
||||
break;
|
||||
default:
|
||||
diff --git a/server/process.c b/server/process.c
|
||||
index 81cea2f..7d2206f 100644
|
||||
index 653e513..2bb49e2 100644
|
||||
--- a/server/process.c
|
||||
+++ b/server/process.c
|
||||
@@ -496,7 +496,7 @@ static void start_sigkill_timer( struct process *process )
|
||||
|
||||
/* create a new process and its main thread */
|
||||
@@ -486,7 +486,7 @@ static void start_sigkill_timer( struct process *process )
|
||||
/* create a new process */
|
||||
/* if the function fails the fd is closed */
|
||||
-struct thread *create_process( int fd, struct thread *parent_thread, int inherit_all )
|
||||
+struct thread *create_process( int fd, struct thread *parent_thread, int inherit_all, struct token *token )
|
||||
struct process *create_process( int fd, struct thread *parent_thread, int inherit_all,
|
||||
- const struct security_descriptor *sd )
|
||||
+ const struct security_descriptor *sd, struct token *token )
|
||||
{
|
||||
struct process *process;
|
||||
struct thread *thread = NULL;
|
||||
@@ -567,7 +567,7 @@ struct thread *create_process( int fd, struct thread *parent_thread, int inherit
|
||||
|
||||
@@ -562,7 +562,7 @@ struct process *create_process( int fd, struct thread *parent_thread, int inheri
|
||||
: alloc_handle_table( process, 0 );
|
||||
/* Note: for security reasons, starting a new process does not attempt
|
||||
* to use the current impersonation token for the new process */
|
||||
@@ -172,15 +169,15 @@ index 81cea2f..7d2206f 100644
|
||||
process->affinity = parent->affinity;
|
||||
}
|
||||
if (!process->handles || !process->token) goto error;
|
||||
@@ -1147,6 +1147,7 @@ DECL_HANDLER(new_process)
|
||||
struct startup_info *info;
|
||||
struct thread *thread;
|
||||
struct process *process;
|
||||
@@ -1128,6 +1128,7 @@ DECL_HANDLER(new_process)
|
||||
const struct security_descriptor *sd;
|
||||
const struct object_attributes *objattr = get_req_object_attributes( &sd, &name, NULL );
|
||||
struct process *process = NULL;
|
||||
+ struct token *token = NULL;
|
||||
struct process *parent = current->process;
|
||||
int socket_fd = thread_get_inflight_fd( current, req->socket_fd );
|
||||
const struct security_descriptor *process_sd = NULL, *thread_sd = NULL;
|
||||
@@ -1182,9 +1183,27 @@ DECL_HANDLER(new_process)
|
||||
|
||||
@@ -1168,13 +1169,31 @@ DECL_HANDLER(new_process)
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -203,75 +200,79 @@ index 81cea2f..7d2206f 100644
|
||||
+
|
||||
if (!req->info_size) /* create an orphaned process */
|
||||
{
|
||||
- create_process( socket_fd, NULL, 0 );
|
||||
+ create_process( socket_fd, NULL, 0, token );
|
||||
- if ((process = create_process( socket_fd, NULL, 0, sd )))
|
||||
+ if ((process = create_process( socket_fd, NULL, 0, sd, token )))
|
||||
{
|
||||
create_thread( -1, process, NULL );
|
||||
release_object( process );
|
||||
}
|
||||
+ if (token) release_object( token );
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1192,6 +1211,7 @@ DECL_HANDLER(new_process)
|
||||
@@ -1182,6 +1201,7 @@ DECL_HANDLER(new_process)
|
||||
if (!(info = alloc_object( &startup_info_ops )))
|
||||
{
|
||||
close( socket_fd );
|
||||
+ if (token) release_object( token );
|
||||
return;
|
||||
}
|
||||
info->exe_file = NULL;
|
||||
@@ -1274,7 +1294,7 @@ DECL_HANDLER(new_process)
|
||||
}
|
||||
info->process = NULL;
|
||||
@@ -1228,7 +1248,7 @@ DECL_HANDLER(new_process)
|
||||
#undef FIXUP_LEN
|
||||
}
|
||||
|
||||
- if (!(thread = create_process( socket_fd, current, req->inherit_all ))) goto done;
|
||||
+ if (!(thread = create_process( socket_fd, current, req->inherit_all, token ))) goto done;
|
||||
process = thread->process;
|
||||
- if (!(process = create_process( socket_fd, current, req->inherit_all, sd ))) goto done;
|
||||
+ if (!(process = create_process( socket_fd, current, req->inherit_all, sd, token ))) goto done;
|
||||
|
||||
process->startup_info = (struct startup_info *)grab_object( info );
|
||||
|
||||
@@ -1356,6 +1376,7 @@ DECL_HANDLER(new_process)
|
||||
}
|
||||
@@ -1290,6 +1310,7 @@ DECL_HANDLER(new_process)
|
||||
reply->handle = alloc_handle_no_access_check( parent, process, req->access, objattr->attributes );
|
||||
|
||||
done:
|
||||
+ if (token) release_object( token );
|
||||
if (process) release_object( process );
|
||||
release_object( info );
|
||||
}
|
||||
|
||||
diff --git a/server/process.h b/server/process.h
|
||||
index 78e88ec..313c36a 100644
|
||||
index 1128dba..ec44e02 100644
|
||||
--- a/server/process.h
|
||||
+++ b/server/process.h
|
||||
@@ -114,7 +114,7 @@ struct process_snapshot
|
||||
extern unsigned int alloc_ptid( void *ptr );
|
||||
@@ -116,7 +116,7 @@ extern unsigned int alloc_ptid( void *ptr );
|
||||
extern void free_ptid( unsigned int id );
|
||||
extern void *get_ptid_entry( unsigned int id );
|
||||
-extern struct thread *create_process( int fd, struct thread *parent_thread, int inherit_all );
|
||||
+extern struct thread *create_process( int fd, struct thread *parent_thread, int inherit_all, struct token *token );
|
||||
extern struct process *create_process( int fd, struct thread *parent_thread, int inherit_all,
|
||||
- const struct security_descriptor *sd );
|
||||
+ const struct security_descriptor *sd, struct token *token );
|
||||
extern data_size_t init_process( struct thread *thread );
|
||||
extern struct thread *get_process_first_thread( struct process *process );
|
||||
extern struct process *get_process_from_id( process_id_t id );
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index b29df0a..95a120e 100644
|
||||
index 2ddc62f..897aa2b 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -748,6 +748,7 @@ struct rawinput_device
|
||||
@@ -743,6 +743,7 @@ struct rawinput_device
|
||||
unsigned int access; /* access rights for process object */
|
||||
cpu_type_t cpu; /* CPU that the new process will use */
|
||||
data_size_t info_size; /* size of startup info */
|
||||
data_size_t env_size; /* size of the environment */
|
||||
data_size_t process_sd_size;/* size of the process security descriptor */
|
||||
+ obj_handle_t token; /* token for the new process */
|
||||
VARARG(objattr,object_attributes); /* object attributes */
|
||||
VARARG(info,startup_info,info_size); /* startup information */
|
||||
VARARG(env,unicode_str,env_size); /* environment for new process */
|
||||
VARARG(process_sd,security_descriptor,process_sd_size); /* security descriptor to set on the process */
|
||||
VARARG(env,unicode_str); /* environment for new process */
|
||||
diff --git a/server/request.c b/server/request.c
|
||||
index 6120bc5..a648c30 100644
|
||||
index c10c4e6..86f293f 100644
|
||||
--- a/server/request.c
|
||||
+++ b/server/request.c
|
||||
@@ -570,7 +570,7 @@ static void master_socket_poll_event( struct fd *fd, int event )
|
||||
@@ -577,7 +577,7 @@ static void master_socket_poll_event( struct fd *fd, int event )
|
||||
int client = accept( get_unix_fd( master_socket->fd ), (struct sockaddr *) &dummy, &len );
|
||||
if (client == -1) return;
|
||||
fcntl( client, F_SETFL, O_NONBLOCK );
|
||||
- create_process( client, NULL, 0 );
|
||||
+ create_process( client, NULL, 0, NULL );
|
||||
}
|
||||
}
|
||||
|
||||
- if ((process = create_process( client, NULL, 0, NULL )))
|
||||
+ if ((process = create_process( client, NULL, 0, NULL, NULL )))
|
||||
{
|
||||
create_thread( -1, process, NULL );
|
||||
release_object( process );
|
||||
diff --git a/server/security.h b/server/security.h
|
||||
index 21e90cc..32dfe5f 100644
|
||||
--- a/server/security.h
|
||||
@@ -286,7 +287,7 @@ index 21e90cc..32dfe5f 100644
|
||||
static inline const ACE_HEADER *ace_next( const ACE_HEADER *ace )
|
||||
{
|
||||
diff --git a/server/token.c b/server/token.c
|
||||
index de1d624..2804247 100644
|
||||
index 1184241..5db97b4 100644
|
||||
--- a/server/token.c
|
||||
+++ b/server/token.c
|
||||
@@ -836,6 +836,12 @@ int token_assign_label( struct token *token, PSID label )
|
||||
@@ -302,7 +303,7 @@ index de1d624..2804247 100644
|
||||
struct token *token_create_admin( void )
|
||||
{
|
||||
struct token *token = NULL;
|
||||
@@ -1263,6 +1269,11 @@ const SID *token_get_primary_group( struct token *token )
|
||||
@@ -1262,6 +1268,11 @@ const SID *token_get_primary_group( struct token *token )
|
||||
return token->primary_group;
|
||||
}
|
||||
|
||||
@@ -315,5 +316,5 @@ index de1d624..2804247 100644
|
||||
{
|
||||
GENERIC_MAPPING mapping;
|
||||
--
|
||||
1.9.1
|
||||
2.7.4
|
||||
|
||||
|
@@ -1,20 +1,20 @@
|
||||
From b14282d138ff6a5ad1d5c152d0a556c9ca648c36 Mon Sep 17 00:00:00 2001
|
||||
From 6d8fd34cabbcbc64062675be610fb8704fcdc3ec Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Mon, 7 Aug 2017 03:33:26 +0200
|
||||
Subject: [PATCH] server: Correctly assign security labels for tokens.
|
||||
|
||||
---
|
||||
dlls/advapi32/tests/security.c | 21 +++++++++--------
|
||||
server/process.c | 8 +------
|
||||
dlls/advapi32/tests/security.c | 21 ++++++++++-----------
|
||||
server/process.c | 8 +-------
|
||||
server/security.h | 2 +-
|
||||
server/token.c | 41 ++++++++++++++++++++--------------
|
||||
server/token.c | 41 ++++++++++++++++++++++++-----------------
|
||||
4 files changed, 36 insertions(+), 36 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
|
||||
index 0271cd72e0..3b07e7cd2f 100644
|
||||
index bf4161c..0610ec7 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -7215,7 +7215,6 @@ static void test_token_security_descriptor(void)
|
||||
@@ -7186,7 +7186,6 @@ static void test_token_security_descriptor(void)
|
||||
defaulted = TRUE;
|
||||
ret = GetSecurityDescriptorDacl(sd2, &present, &acl2, &defaulted);
|
||||
ok(ret, "GetSecurityDescriptorDacl failed with error %u\n", GetLastError());
|
||||
@@ -22,7 +22,7 @@ index 0271cd72e0..3b07e7cd2f 100644
|
||||
ok(present, "DACL not present\n");
|
||||
|
||||
if (present)
|
||||
@@ -7336,7 +7335,7 @@ static void test_token_security_descriptor(void)
|
||||
@@ -7307,7 +7306,7 @@ static void test_token_security_descriptor(void)
|
||||
ok(ret, "GetAce failed with error %u\n", GetLastError());
|
||||
ok(ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
|
||||
"Unexpected ACE type %#x\n", ace->Header.AceType);
|
||||
@@ -31,7 +31,7 @@ index 0271cd72e0..3b07e7cd2f 100644
|
||||
"Expected medium integrity level\n");
|
||||
}
|
||||
|
||||
@@ -7389,8 +7388,8 @@ static void test_token_security_descriptor(void)
|
||||
@@ -7360,8 +7359,8 @@ static void test_token_security_descriptor(void)
|
||||
sacl = NULL;
|
||||
ret = GetSecurityDescriptorSacl(sd3, &present, &sacl, &defaulted);
|
||||
ok(ret, "GetSecurityDescriptorSacl failed with error %u\n", GetLastError());
|
||||
@@ -42,7 +42,7 @@ index 0271cd72e0..3b07e7cd2f 100644
|
||||
|
||||
if (sacl)
|
||||
{
|
||||
@@ -7439,8 +7438,8 @@ static void test_token_security_descriptor(void)
|
||||
@@ -7410,8 +7409,8 @@ static void test_token_security_descriptor(void)
|
||||
sacl = NULL;
|
||||
ret = GetSecurityDescriptorSacl(sd3, &present, &sacl, &defaulted);
|
||||
ok(ret, "GetSecurityDescriptorSacl failed with error %u\n", GetLastError());
|
||||
@@ -53,7 +53,7 @@ index 0271cd72e0..3b07e7cd2f 100644
|
||||
|
||||
if (sacl)
|
||||
{
|
||||
@@ -7504,8 +7503,8 @@ static void test_token_security_descriptor(void)
|
||||
@@ -7475,8 +7474,8 @@ static void test_token_security_descriptor(void)
|
||||
|
||||
ret = GetSecurityDescriptorSacl(sd3, &present, &sacl, &defaulted);
|
||||
ok(ret, "GetSecurityDescriptorSacl failed with error %u\n", GetLastError());
|
||||
@@ -64,7 +64,7 @@ index 0271cd72e0..3b07e7cd2f 100644
|
||||
|
||||
if (sacl)
|
||||
{
|
||||
@@ -7542,8 +7541,8 @@ static void test_token_security_descriptor(void)
|
||||
@@ -7513,8 +7512,8 @@ static void test_token_security_descriptor(void)
|
||||
sacl = NULL;
|
||||
ret = GetSecurityDescriptorSacl(sd3, &present, &sacl, &defaulted);
|
||||
ok(ret, "GetSecurityDescriptorSacl failed with error %u\n", GetLastError());
|
||||
@@ -75,7 +75,7 @@ index 0271cd72e0..3b07e7cd2f 100644
|
||||
|
||||
if (sacl)
|
||||
{
|
||||
@@ -7761,7 +7760,7 @@ static void test_child_token_sd_medium(void)
|
||||
@@ -7732,7 +7731,7 @@ static void test_child_token_sd_medium(void)
|
||||
ok(ret, "GetAce failed with error %u\n", GetLastError());
|
||||
ok(ace_label->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
|
||||
"Unexpected ACE type %#x\n", ace_label->Header.AceType);
|
||||
@@ -85,10 +85,10 @@ index 0271cd72e0..3b07e7cd2f 100644
|
||||
|
||||
memset(buffer_integrity, 0, sizeof(buffer_integrity));
|
||||
diff --git a/server/process.c b/server/process.c
|
||||
index 7d2206f274..74cc320f44 100644
|
||||
index b7c9da3..250f777 100644
|
||||
--- a/server/process.c
|
||||
+++ b/server/process.c
|
||||
@@ -567,17 +567,11 @@ struct thread *create_process( int fd, struct thread *parent_thread, int inherit
|
||||
@@ -562,17 +562,11 @@ struct process *create_process( int fd, struct thread *parent_thread, int inheri
|
||||
: alloc_handle_table( process, 0 );
|
||||
/* Note: for security reasons, starting a new process does not attempt
|
||||
* to use the current impersonation token for the new process */
|
||||
@@ -104,11 +104,11 @@ index 7d2206f274..74cc320f44 100644
|
||||
- if (!token_assign_label( process->token, security_high_label_sid ))
|
||||
- goto error;
|
||||
-
|
||||
/* create the main thread */
|
||||
if (pipe( request_pipe ) == -1)
|
||||
{
|
||||
set_fd_events( process->msg_fd, POLLIN ); /* start listening to events */
|
||||
return process;
|
||||
|
||||
diff --git a/server/security.h b/server/security.h
|
||||
index 32dfe5f8db..87377ccd67 100644
|
||||
index 32dfe5f..87377cc 100644
|
||||
--- a/server/security.h
|
||||
+++ b/server/security.h
|
||||
@@ -59,7 +59,7 @@ extern int token_assign_label( struct token *token, PSID label );
|
||||
@@ -121,7 +121,7 @@ index 32dfe5f8db..87377ccd67 100644
|
||||
const LUID_AND_ATTRIBUTES *reqprivs,
|
||||
unsigned int count, LUID_AND_ATTRIBUTES *usedprivs);
|
||||
diff --git a/server/token.c b/server/token.c
|
||||
index 28042471b0..e5639fc0d5 100644
|
||||
index 5db97b4..bd251c7 100644
|
||||
--- a/server/token.c
|
||||
+++ b/server/token.c
|
||||
@@ -668,7 +668,7 @@ static int filter_privilege( struct privilege *privilege, const LUID_AND_ATTRIBU
|
||||
@@ -146,7 +146,7 @@ index 28042471b0..e5639fc0d5 100644
|
||||
return token;
|
||||
}
|
||||
|
||||
@@ -907,6 +913,12 @@ struct token *token_create_admin( void )
|
||||
@@ -906,6 +912,12 @@ struct token *token_create_admin( void )
|
||||
admin_source, NULL, -1, TokenElevationTypeFull, &high_label_sid );
|
||||
/* we really need a primary group */
|
||||
assert( token->primary_group );
|
||||
@@ -159,7 +159,7 @@ index 28042471b0..e5639fc0d5 100644
|
||||
}
|
||||
|
||||
free( logon_sid );
|
||||
@@ -965,6 +977,12 @@ static struct token *token_create_limited( void )
|
||||
@@ -964,6 +976,12 @@ static struct token *token_create_limited( void )
|
||||
admin_source, NULL, -1, TokenElevationTypeLimited, &medium_label_sid );
|
||||
/* we really need a primary group */
|
||||
assert( token->primary_group );
|
||||
@@ -172,7 +172,7 @@ index 28042471b0..e5639fc0d5 100644
|
||||
}
|
||||
|
||||
free( logon_sid );
|
||||
@@ -1433,7 +1451,8 @@ DECL_HANDLER(duplicate_token)
|
||||
@@ -1432,7 +1450,8 @@ DECL_HANDLER(duplicate_token)
|
||||
TOKEN_DUPLICATE,
|
||||
&token_ops )))
|
||||
{
|
||||
@@ -182,7 +182,7 @@ index 28042471b0..e5639fc0d5 100644
|
||||
if (token)
|
||||
{
|
||||
unsigned int access = req->access ? req->access : get_handle_access( current->process, req->handle );
|
||||
@@ -1463,7 +1482,7 @@ DECL_HANDLER(filter_token)
|
||||
@@ -1462,7 +1481,7 @@ DECL_HANDLER(filter_token)
|
||||
group_count = get_sid_count( filter_groups, get_req_data_size() - priv_count * sizeof(LUID_AND_ATTRIBUTES) );
|
||||
|
||||
token = token_duplicate( src_token, src_token->primary, src_token->impersonation_level, NULL,
|
||||
@@ -191,7 +191,7 @@ index 28042471b0..e5639fc0d5 100644
|
||||
if (token)
|
||||
{
|
||||
unsigned int access = get_handle_access( current->process, req->handle );
|
||||
@@ -1789,23 +1808,11 @@ DECL_HANDLER(set_token_default_dacl)
|
||||
@@ -1788,23 +1807,11 @@ DECL_HANDLER(set_token_default_dacl)
|
||||
DECL_HANDLER(create_token)
|
||||
{
|
||||
struct token *token;
|
||||
@@ -218,5 +218,5 @@ index 28042471b0..e5639fc0d5 100644
|
||||
}
|
||||
}
|
||||
--
|
||||
2.18.0
|
||||
2.7.4
|
||||
|
||||
|
@@ -1,6 +1,5 @@
|
||||
Fixes: [40613] Basic implementation for token integrity levels and UAC handling
|
||||
Fixes: [39262] Run explorer.exe as unevaluated process
|
||||
Depends: advapi32-CreateRestrictedToken
|
||||
Depends: server-CreateProcess_ACLs
|
||||
Depends: server-Misc_ACL
|
||||
Depends: Staging
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 46f234ba973f5c9c60cd1d39f2c61202f92458b7 Mon Sep 17 00:00:00 2001
|
||||
From 37a07b352d184b7d7c53084eb6e2d3190f8f581d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Wed, 29 Jul 2015 17:09:50 +0200
|
||||
Subject: [PATCH] ddraw: Create rendering targets in video memory if possible.
|
||||
@@ -12,10 +12,10 @@ Based on a patch by Henri Verbeet.
|
||||
4 files changed, 38 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
|
||||
index 9115a59..3f14a9a 100644
|
||||
index e9e06ee..6677220 100644
|
||||
--- a/dlls/ddraw/ddraw.c
|
||||
+++ b/dlls/ddraw/ddraw.c
|
||||
@@ -4241,7 +4241,7 @@ static HRESULT WINAPI d3d7_CreateDevice(IDirect3D7 *iface, REFCLSID riid,
|
||||
@@ -4211,7 +4211,7 @@ static HRESULT WINAPI d3d7_CreateDevice(IDirect3D7 *iface, REFCLSID riid,
|
||||
TRACE("iface %p, riid %s, surface %p, device %p.\n", iface, debugstr_guid(riid), surface, device);
|
||||
|
||||
wined3d_mutex_lock();
|
||||
@@ -24,7 +24,7 @@ index 9115a59..3f14a9a 100644
|
||||
{
|
||||
*device = &object->IDirect3DDevice7_iface;
|
||||
}
|
||||
@@ -4270,7 +4270,7 @@ static HRESULT WINAPI d3d3_CreateDevice(IDirect3D3 *iface, REFCLSID riid,
|
||||
@@ -4240,7 +4240,7 @@ static HRESULT WINAPI d3d3_CreateDevice(IDirect3D3 *iface, REFCLSID riid,
|
||||
return CLASS_E_NOAGGREGATION;
|
||||
|
||||
wined3d_mutex_lock();
|
||||
@@ -33,7 +33,7 @@ index 9115a59..3f14a9a 100644
|
||||
{
|
||||
*device = &device_impl->IDirect3DDevice3_iface;
|
||||
}
|
||||
@@ -4296,7 +4296,7 @@ static HRESULT WINAPI d3d2_CreateDevice(IDirect3D2 *iface, REFCLSID riid,
|
||||
@@ -4266,7 +4266,7 @@ static HRESULT WINAPI d3d2_CreateDevice(IDirect3D2 *iface, REFCLSID riid,
|
||||
iface, debugstr_guid(riid), surface, device);
|
||||
|
||||
wined3d_mutex_lock();
|
||||
@@ -43,10 +43,10 @@ index 9115a59..3f14a9a 100644
|
||||
*device = &device_impl->IDirect3DDevice2_iface;
|
||||
}
|
||||
diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h
|
||||
index 61f5347..baeb9db 100644
|
||||
index 495cb8b..4af638b 100644
|
||||
--- a/dlls/ddraw/ddraw_private.h
|
||||
+++ b/dlls/ddraw/ddraw_private.h
|
||||
@@ -305,6 +305,7 @@ struct d3d_device
|
||||
@@ -303,6 +303,7 @@ struct d3d_device
|
||||
IUnknown IUnknown_inner;
|
||||
LONG ref;
|
||||
UINT version;
|
||||
@@ -54,7 +54,7 @@ index 61f5347..baeb9db 100644
|
||||
|
||||
IUnknown *outer_unknown;
|
||||
struct wined3d_device *wined3d_device;
|
||||
@@ -349,7 +350,7 @@ struct d3d_device
|
||||
@@ -347,7 +348,7 @@ struct d3d_device
|
||||
struct wined3d_vec4 user_clip_planes[D3DMAXUSERCLIPPLANES];
|
||||
};
|
||||
|
||||
@@ -64,7 +64,7 @@ index 61f5347..baeb9db 100644
|
||||
enum wined3d_depth_buffer_type d3d_device_update_depth_stencil(struct d3d_device *device) DECLSPEC_HIDDEN;
|
||||
|
||||
diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c
|
||||
index c2d87dd..43f7402 100644
|
||||
index 7866c28..81ace96 100644
|
||||
--- a/dlls/ddraw/device.c
|
||||
+++ b/dlls/ddraw/device.c
|
||||
@@ -1854,7 +1854,7 @@ static HRESULT d3d_device7_SetRenderTarget(IDirect3DDevice7 *iface,
|
||||
@@ -94,7 +94,7 @@ index c2d87dd..43f7402 100644
|
||||
{
|
||||
WARN("Surface %p is not in video memory.\n", target_impl);
|
||||
IDirectDrawSurface_AddRef(target);
|
||||
@@ -6903,7 +6903,7 @@ enum wined3d_depth_buffer_type d3d_device_update_depth_stencil(struct d3d_device
|
||||
@@ -6891,7 +6891,7 @@ enum wined3d_depth_buffer_type d3d_device_update_depth_stencil(struct d3d_device
|
||||
return WINED3D_ZB_TRUE;
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ index c2d87dd..43f7402 100644
|
||||
struct ddraw_surface *target, IUnknown *rt_iface, UINT version, IUnknown *outer_unknown)
|
||||
{
|
||||
static const D3DMATRIX ident =
|
||||
@@ -6926,6 +6926,7 @@ static HRESULT d3d_device_init(struct d3d_device *device, struct ddraw *ddraw,
|
||||
@@ -6914,6 +6914,7 @@ static HRESULT d3d_device_init(struct d3d_device *device, struct ddraw *ddraw,
|
||||
device->IUnknown_inner.lpVtbl = &d3d_device_inner_vtbl;
|
||||
device->ref = 1;
|
||||
device->version = version;
|
||||
@@ -111,7 +111,7 @@ index c2d87dd..43f7402 100644
|
||||
|
||||
if (outer_unknown)
|
||||
device->outer_unknown = outer_unknown;
|
||||
@@ -6976,14 +6977,18 @@ static HRESULT d3d_device_init(struct d3d_device *device, struct ddraw *ddraw,
|
||||
@@ -6964,14 +6965,18 @@ static HRESULT d3d_device_init(struct d3d_device *device, struct ddraw *ddraw,
|
||||
return D3D_OK;
|
||||
}
|
||||
|
||||
@@ -133,8 +133,8 @@ index c2d87dd..43f7402 100644
|
||||
|
||||
if (!(target->surface_desc.ddsCaps.dwCaps & DDSCAPS_3DDEVICE)
|
||||
|| (target->surface_desc.ddsCaps.dwCaps & DDSCAPS_ZBUFFER))
|
||||
@@ -6998,7 +7003,7 @@ HRESULT d3d_device_create(struct ddraw *ddraw, struct ddraw_surface *target, IUn
|
||||
return DDERR_NOPALETTEATTACHED;
|
||||
@@ -6994,7 +6999,7 @@ HRESULT d3d_device_create(struct ddraw *ddraw, struct ddraw_surface *target, IUn
|
||||
return DDERR_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
- if (!(target->surface_desc.ddsCaps.dwCaps & DDSCAPS_VIDEOMEMORY))
|
||||
@@ -142,7 +142,7 @@ index c2d87dd..43f7402 100644
|
||||
{
|
||||
WARN("Surface %p is not in video memory.\n", target);
|
||||
return D3DERR_SURFACENOTINVIDMEM;
|
||||
@@ -7024,7 +7029,7 @@ HRESULT d3d_device_create(struct ddraw *ddraw, struct ddraw_surface *target, IUn
|
||||
@@ -7012,7 +7017,7 @@ HRESULT d3d_device_create(struct ddraw *ddraw, struct ddraw_surface *target, IUn
|
||||
return DDERR_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
@@ -152,10 +152,10 @@ index c2d87dd..43f7402 100644
|
||||
WARN("Failed to initialize device, hr %#x.\n", hr);
|
||||
heap_free(object);
|
||||
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
|
||||
index a30b44f..9d4e83c 100644
|
||||
index d201d9d..41fe6a1 100644
|
||||
--- a/dlls/ddraw/surface.c
|
||||
+++ b/dlls/ddraw/surface.c
|
||||
@@ -209,7 +209,7 @@ static HRESULT WINAPI ddraw_surface7_QueryInterface(IDirectDrawSurface7 *iface,
|
||||
@@ -226,7 +226,7 @@ static HRESULT WINAPI ddraw_surface7_QueryInterface(IDirectDrawSurface7 *iface,
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
@@ -164,7 +164,7 @@ index a30b44f..9d4e83c 100644
|
||||
1, &This->device1, (IUnknown *)&This->IDirectDrawSurface_iface)))
|
||||
{
|
||||
This->device1 = NULL;
|
||||
@@ -6111,7 +6111,24 @@ HRESULT ddraw_surface_create(struct ddraw *ddraw, const DDSURFACEDESC2 *surface_
|
||||
@@ -6155,7 +6155,24 @@ HRESULT ddraw_surface_create(struct ddraw *ddraw, const DDSURFACEDESC2 *surface_
|
||||
|
||||
if (desc->ddsCaps.dwCaps & DDSCAPS_SYSTEMMEMORY)
|
||||
{
|
||||
@@ -191,5 +191,5 @@ index a30b44f..9d4e83c 100644
|
||||
}
|
||||
else
|
||||
--
|
||||
1.9.1
|
||||
2.7.4
|
||||
|
||||
|
@@ -1,29 +1,28 @@
|
||||
From 76cd66f5f32045665fe392401b63738a5a089072 Mon Sep 17 00:00:00 2001
|
||||
From f66f232de49f8fd3e14e8f328e16e89b83e7dcc8 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Harmstone <mark@harmstone.com>
|
||||
Date: Fri, 27 Mar 2015 20:58:37 +0000
|
||||
Subject: dsound: Add EAX init and free stubs.
|
||||
Subject: [PATCH] dsound: Add EAX init and free stubs.
|
||||
|
||||
---
|
||||
dlls/dsound/buffer.c | 5 +++++
|
||||
dlls/dsound/buffer.c | 4 ++++
|
||||
dlls/dsound/dsound_private.h | 2 ++
|
||||
dlls/dsound/eax.c | 28 +++++++++++++++++++++++++++-
|
||||
3 files changed, 34 insertions(+), 1 deletion(-)
|
||||
3 files changed, 33 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
|
||||
index 1c318f5..c098043 100644
|
||||
index 720bec9..7e9e478 100644
|
||||
--- a/dlls/dsound/buffer.c
|
||||
+++ b/dlls/dsound/buffer.c
|
||||
@@ -1130,6 +1130,9 @@ HRESULT IDirectSoundBufferImpl_Create(
|
||||
HeapFree(GetProcessHeap(),0,dsb);
|
||||
dsb = NULL;
|
||||
}
|
||||
+
|
||||
+ if (dsb->device->eax.using_eax)
|
||||
+ init_eax_buffer(dsb);
|
||||
}
|
||||
@@ -1104,6 +1104,8 @@ HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *ds
|
||||
DSOUND_RecalcVolPan(&(dsb->volpan));
|
||||
|
||||
IDirectSoundBuffer8_AddRef(&dsb->IDirectSoundBuffer8_iface);
|
||||
@@ -1169,6 +1172,8 @@ void secondarybuffer_destroy(IDirectSoundBufferImpl *This)
|
||||
RtlInitializeResource(&dsb->lock);
|
||||
+ if (dsb->device->eax.using_eax)
|
||||
+ init_eax_buffer(dsb);
|
||||
|
||||
/* register buffer */
|
||||
err = DirectSoundDevice_AddBuffer(device, dsb);
|
||||
@@ -1147,6 +1149,8 @@ void secondarybuffer_destroy(IDirectSoundBufferImpl *This)
|
||||
HeapFree(GetProcessHeap(), 0, This->filters);
|
||||
}
|
||||
|
||||
@@ -33,10 +32,10 @@ index 1c318f5..c098043 100644
|
||||
|
||||
TRACE("(%p) released\n", This);
|
||||
diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h
|
||||
index c732b52..a918cd2 100644
|
||||
index e412533..6c90726 100644
|
||||
--- a/dlls/dsound/dsound_private.h
|
||||
+++ b/dlls/dsound/dsound_private.h
|
||||
@@ -240,6 +240,8 @@ HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
|
||||
@@ -235,6 +235,8 @@ HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
|
||||
HRESULT WINAPI EAX_Set(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
|
||||
ULONG dwPropID, void *pInstanceData, ULONG cbInstanceData, void *pPropData,
|
||||
ULONG cbPropData) DECLSPEC_HIDDEN;
|
||||
@@ -98,5 +97,5 @@ index 3931681..c0afb0f 100644
|
||||
|
||||
HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
|
||||
--
|
||||
2.3.3
|
||||
1.9.1
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
From de001ceaf5bab22bacfd14c927bfa8c0f29c74a1 Mon Sep 17 00:00:00 2001
|
||||
From 630c89c7e41eb1cde6dd99bf5c3462d173236b3a Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 4 Apr 2015 21:09:18 +0200
|
||||
Subject: dsound: Various improvements to EAX support.
|
||||
Subject: [PATCH] dsound: Various improvements to EAX support.
|
||||
|
||||
The previous version had several problems (see wine-staging bug 195):
|
||||
* IDirectSoundBufferImpl_Duplicate doesn't initialize EAX properties
|
||||
@@ -16,18 +16,18 @@ update it later when necessary (-> much faster). Moreover, to avoid unnecessary
|
||||
locking, we initialize the EAX-specific properties always (for both the device and
|
||||
the buffers).
|
||||
---
|
||||
dlls/dsound/buffer.c | 11 ++++---
|
||||
dlls/dsound/buffer.c | 6 ++--
|
||||
dlls/dsound/dsound.c | 2 ++
|
||||
dlls/dsound/dsound_eax.h | 1 +
|
||||
dlls/dsound/dsound_private.h | 1 +
|
||||
dlls/dsound/eax.c | 68 +++++++++++++++++++-------------------------
|
||||
5 files changed, 39 insertions(+), 44 deletions(-)
|
||||
5 files changed, 37 insertions(+), 41 deletions(-)
|
||||
|
||||
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
|
||||
index c098043..3641e32 100644
|
||||
index 7e9e478..088a5e7 100644
|
||||
--- a/dlls/dsound/buffer.c
|
||||
+++ b/dlls/dsound/buffer.c
|
||||
@@ -1092,8 +1092,6 @@ HRESULT IDirectSoundBufferImpl_Create(
|
||||
@@ -1078,8 +1078,6 @@ HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *ds
|
||||
/* calculate fragment size and write lead */
|
||||
DSOUND_RecalcFormat(dsb);
|
||||
|
||||
@@ -36,26 +36,7 @@ index c098043..3641e32 100644
|
||||
if (dsb->dsbd.dwFlags & DSBCAPS_CTRL3D) {
|
||||
dsb->ds3db_ds3db.dwSize = sizeof(DS3DBUFFER);
|
||||
dsb->ds3db_ds3db.vPosition.x = 0.0;
|
||||
@@ -1121,6 +1119,8 @@ HRESULT IDirectSoundBufferImpl_Create(
|
||||
|
||||
/* register buffer if not primary */
|
||||
if (!(dsbd->dwFlags & DSBCAPS_PRIMARYBUFFER)) {
|
||||
+ init_eax_buffer(dsb);
|
||||
+
|
||||
err = DirectSoundDevice_AddBuffer(device, dsb);
|
||||
if (err != DS_OK) {
|
||||
HeapFree(GetProcessHeap(),0,dsb->buffer->memory);
|
||||
@@ -1130,9 +1130,6 @@ HRESULT IDirectSoundBufferImpl_Create(
|
||||
HeapFree(GetProcessHeap(),0,dsb);
|
||||
dsb = NULL;
|
||||
}
|
||||
-
|
||||
- if (dsb->device->eax.using_eax)
|
||||
- init_eax_buffer(dsb);
|
||||
}
|
||||
|
||||
IDirectSoundBuffer8_AddRef(&dsb->IDirectSoundBuffer8_iface);
|
||||
@@ -1188,7 +1185,7 @@ HRESULT IDirectSoundBufferImpl_Duplicate(
|
||||
@@ -1165,7 +1163,7 @@ HRESULT IDirectSoundBufferImpl_Duplicate(
|
||||
HRESULT hres = DS_OK;
|
||||
TRACE("(%p,%p,%p)\n", device, ppdsb, pdsb);
|
||||
|
||||
@@ -64,7 +45,7 @@ index c098043..3641e32 100644
|
||||
if (dsb == NULL) {
|
||||
WARN("out of memory\n");
|
||||
*ppdsb = NULL;
|
||||
@@ -1225,6 +1222,8 @@ HRESULT IDirectSoundBufferImpl_Duplicate(
|
||||
@@ -1202,6 +1200,8 @@ HRESULT IDirectSoundBufferImpl_Duplicate(
|
||||
|
||||
RtlInitializeResource(&dsb->lock);
|
||||
|
||||
@@ -74,10 +55,10 @@ index c098043..3641e32 100644
|
||||
hres = DirectSoundDevice_AddBuffer(device, dsb);
|
||||
if (hres != DS_OK) {
|
||||
diff --git a/dlls/dsound/dsound.c b/dlls/dsound/dsound.c
|
||||
index 551c40a..4abb142 100644
|
||||
index 59e2fcd..13cda26 100644
|
||||
--- a/dlls/dsound/dsound.c
|
||||
+++ b/dlls/dsound/dsound.c
|
||||
@@ -186,6 +186,8 @@ static HRESULT DirectSoundDevice_Create(DirectSoundDevice ** ppDevice)
|
||||
@@ -181,6 +181,8 @@ static HRESULT DirectSoundDevice_Create(DirectSoundDevice ** ppDevice)
|
||||
|
||||
RtlInitializeResource(&(device->buffer_list_lock));
|
||||
|
||||
@@ -99,10 +80,10 @@ index a650108..a555a75 100644
|
||||
|
||||
float *SampleBuffer;
|
||||
diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h
|
||||
index cc55d70..a9987d0 100644
|
||||
index 6f8dddd..039154a 100644
|
||||
--- a/dlls/dsound/dsound_private.h
|
||||
+++ b/dlls/dsound/dsound_private.h
|
||||
@@ -240,6 +240,7 @@ HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
|
||||
@@ -235,6 +235,7 @@ HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
|
||||
HRESULT WINAPI EAX_Set(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
|
||||
ULONG dwPropID, void *pInstanceData, ULONG cbInstanceData, void *pPropData,
|
||||
ULONG cbPropData) DECLSPEC_HIDDEN;
|
||||
@@ -272,5 +253,5 @@ index a05b00e..e10156e 100644
|
||||
switch (dwPropID) {
|
||||
case DSPROPERTY_EAXBUFFER_ALL:
|
||||
--
|
||||
2.4.0
|
||||
1.9.1
|
||||
|
||||
|
@@ -1,3 +1,2 @@
|
||||
Fixes: Software support for Environmental Audio Extensions (EAX)
|
||||
Depends: dsound-Fast_Mixer
|
||||
Depends: dsound-Revert_Cleanup
|
||||
|
@@ -1,106 +0,0 @@
|
||||
From 49a87ca03766da11e80ec5f0677d1cd7d46b17ca Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Wed, 23 Dec 2015 00:58:57 +0100
|
||||
Subject: Revert "dsound: Use a better name for
|
||||
IDirectSoundBufferImpl_Create()."
|
||||
|
||||
This reverts commit bb72548f3870b1df03ad9fe7ad2e543a69d5d574.
|
||||
---
|
||||
dlls/dsound/buffer.c | 24 +++++++++++++++---------
|
||||
dlls/dsound/dsound.c | 7 +++++--
|
||||
dlls/dsound/dsound_private.h | 6 ++++--
|
||||
3 files changed, 24 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
|
||||
index e85a5d1..c59090a 100644
|
||||
--- a/dlls/dsound/buffer.c
|
||||
+++ b/dlls/dsound/buffer.c
|
||||
@@ -983,15 +983,19 @@ static const IDirectSoundBuffer8Vtbl dsbvt =
|
||||
IDirectSoundBufferImpl_GetObjectInPath
|
||||
};
|
||||
|
||||
-HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *dsbd,
|
||||
- IDirectSoundBuffer **buffer)
|
||||
+HRESULT IDirectSoundBufferImpl_Create(
|
||||
+ DirectSoundDevice * device,
|
||||
+ IDirectSoundBufferImpl **pdsb,
|
||||
+ LPCDSBUFFERDESC dsbd)
|
||||
{
|
||||
IDirectSoundBufferImpl *dsb;
|
||||
LPWAVEFORMATEX wfex = dsbd->lpwfxFormat;
|
||||
HRESULT err = DS_OK;
|
||||
DWORD capf = 0;
|
||||
|
||||
- TRACE("(%p,%p,%p)\n", device, dsbd, buffer);
|
||||
+ TRACE("(%p,%p,%p)\n",device,pdsb,dsbd);
|
||||
+
|
||||
+ *pdsb = NULL;
|
||||
|
||||
if (dsbd->dwBufferBytes < DSBSIZE_MIN || dsbd->dwBufferBytes > DSBSIZE_MAX) {
|
||||
WARN("invalid parameter: dsbd->dwBufferBytes = %d\n", dsbd->dwBufferBytes);
|
||||
@@ -1103,12 +1107,14 @@ HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *ds
|
||||
|
||||
RtlInitializeResource(&dsb->lock);
|
||||
|
||||
- /* register buffer */
|
||||
- err = DirectSoundDevice_AddBuffer(device, dsb);
|
||||
- if (err == DS_OK)
|
||||
- *buffer = (IDirectSoundBuffer*)&dsb->IDirectSoundBuffer8_iface;
|
||||
- else
|
||||
- IDirectSoundBuffer8_Release(&dsb->IDirectSoundBuffer8_iface);
|
||||
+ /* register buffer if not primary */
|
||||
+ if (!(dsbd->dwFlags & DSBCAPS_PRIMARYBUFFER)) {
|
||||
+ err = DirectSoundDevice_AddBuffer(device, dsb);
|
||||
+ if (err == DS_OK)
|
||||
+ *pdsb = dsb;
|
||||
+ else
|
||||
+ IDirectSoundBuffer8_Release(&dsb->IDirectSoundBuffer8_iface);
|
||||
+ }
|
||||
|
||||
return err;
|
||||
}
|
||||
diff --git a/dlls/dsound/dsound.c b/dlls/dsound/dsound.c
|
||||
index fb9fd66..64bfbd3 100644
|
||||
--- a/dlls/dsound/dsound.c
|
||||
+++ b/dlls/dsound/dsound.c
|
||||
@@ -461,6 +461,8 @@ static HRESULT DirectSoundDevice_CreateSoundBuffer(
|
||||
WARN("primarybuffer_create() failed\n");
|
||||
}
|
||||
} else {
|
||||
+ IDirectSoundBufferImpl * dsb;
|
||||
+
|
||||
if (dsbd->lpwfxFormat == NULL) {
|
||||
WARN("invalid parameter: dsbd->lpwfxFormat can't be NULL for "
|
||||
"secondary buffer\n");
|
||||
@@ -537,8 +539,9 @@ static HRESULT DirectSoundDevice_CreateSoundBuffer(
|
||||
return DSERR_INVALIDPARAM;
|
||||
}
|
||||
|
||||
- hres = secondarybuffer_create(device, dsbd, ppdsb);
|
||||
- if (SUCCEEDED(hres)) {
|
||||
+ hres = IDirectSoundBufferImpl_Create(device, &dsb, dsbd);
|
||||
+ if (dsb) {
|
||||
+ *ppdsb = (IDirectSoundBuffer*)&dsb->IDirectSoundBuffer8_iface;
|
||||
if (dsbd->dwFlags & DSBCAPS_LOCHARDWARE)
|
||||
device->drvcaps.dwFreeHwMixingAllBuffers--;
|
||||
} else
|
||||
diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h
|
||||
index 63d1226..303ce0e 100644
|
||||
--- a/dlls/dsound/dsound_private.h
|
||||
+++ b/dlls/dsound/dsound_private.h
|
||||
@@ -181,8 +181,10 @@ void put_stereo2surround51(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD c
|
||||
void put_surround512stereo(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel, float value) DECLSPEC_HIDDEN;
|
||||
void put_quad2stereo(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel, float value) DECLSPEC_HIDDEN;
|
||||
|
||||
-HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *dsbd,
|
||||
- IDirectSoundBuffer **buffer) DECLSPEC_HIDDEN;
|
||||
+HRESULT IDirectSoundBufferImpl_Create(
|
||||
+ DirectSoundDevice *device,
|
||||
+ IDirectSoundBufferImpl **ppdsb,
|
||||
+ LPCDSBUFFERDESC dsbd) DECLSPEC_HIDDEN;
|
||||
HRESULT IDirectSoundBufferImpl_Duplicate(
|
||||
DirectSoundDevice *device,
|
||||
IDirectSoundBufferImpl **ppdsb,
|
||||
--
|
||||
2.8.0
|
||||
|
@@ -1,116 +0,0 @@
|
||||
From 974a901f92d5197d3db6356df454bdd47dea39da Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Wed, 23 Dec 2015 00:59:07 +0100
|
||||
Subject: Revert "dsound: Simplify error handling when creating a sound
|
||||
buffer."
|
||||
|
||||
This reverts commit d51d55bab8995f94dcc78ce8418a4149836c27b0.
|
||||
---
|
||||
dlls/dsound/buffer.c | 46 ++++++++++++++++++++++++++++++----------------
|
||||
1 file changed, 30 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
|
||||
index d7717fd..5aa2834 100644
|
||||
--- a/dlls/dsound/buffer.c
|
||||
+++ b/dlls/dsound/buffer.c
|
||||
@@ -992,28 +992,29 @@ HRESULT IDirectSoundBufferImpl_Create(
|
||||
LPWAVEFORMATEX wfex = dsbd->lpwfxFormat;
|
||||
HRESULT err = DS_OK;
|
||||
DWORD capf = 0;
|
||||
-
|
||||
TRACE("(%p,%p,%p)\n",device,pdsb,dsbd);
|
||||
|
||||
- *pdsb = NULL;
|
||||
-
|
||||
if (dsbd->dwBufferBytes < DSBSIZE_MIN || dsbd->dwBufferBytes > DSBSIZE_MAX) {
|
||||
WARN("invalid parameter: dsbd->dwBufferBytes = %d\n", dsbd->dwBufferBytes);
|
||||
+ *pdsb = NULL;
|
||||
return DSERR_INVALIDPARAM; /* FIXME: which error? */
|
||||
}
|
||||
|
||||
dsb = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(*dsb));
|
||||
|
||||
- if (!dsb)
|
||||
+ if (dsb == 0) {
|
||||
+ WARN("out of memory\n");
|
||||
+ *pdsb = NULL;
|
||||
return DSERR_OUTOFMEMORY;
|
||||
+ }
|
||||
|
||||
TRACE("Created buffer at %p\n", dsb);
|
||||
|
||||
- dsb->ref = 1;
|
||||
+ dsb->ref = 0;
|
||||
dsb->refn = 0;
|
||||
dsb->ref3D = 0;
|
||||
dsb->refiks = 0;
|
||||
- dsb->numIfaces = 1;
|
||||
+ dsb->numIfaces = 0;
|
||||
dsb->device = device;
|
||||
dsb->IDirectSoundBuffer8_iface.lpVtbl = &dsbvt;
|
||||
dsb->IDirectSoundNotify_iface.lpVtbl = &dsnvt;
|
||||
@@ -1024,8 +1025,9 @@ HRESULT IDirectSoundBufferImpl_Create(
|
||||
CopyMemory(&dsb->dsbd, dsbd, dsbd->dwSize);
|
||||
|
||||
dsb->pwfx = DSOUND_CopyFormat(wfex);
|
||||
- if (!dsb->pwfx) {
|
||||
- IDirectSoundBuffer8_Release(&dsb->IDirectSoundBuffer8_iface);
|
||||
+ if (dsb->pwfx == NULL) {
|
||||
+ HeapFree(GetProcessHeap(),0,dsb);
|
||||
+ *pdsb = NULL;
|
||||
return DSERR_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
@@ -1050,16 +1052,22 @@ HRESULT IDirectSoundBufferImpl_Create(
|
||||
|
||||
/* Allocate an empty buffer */
|
||||
dsb->buffer = HeapAlloc(GetProcessHeap(),0,sizeof(*(dsb->buffer)));
|
||||
- if (!dsb->buffer) {
|
||||
- IDirectSoundBuffer8_Release(&dsb->IDirectSoundBuffer8_iface);
|
||||
+ if (dsb->buffer == NULL) {
|
||||
+ WARN("out of memory\n");
|
||||
+ HeapFree(GetProcessHeap(),0,dsb->pwfx);
|
||||
+ HeapFree(GetProcessHeap(),0,dsb);
|
||||
+ *pdsb = NULL;
|
||||
return DSERR_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
/* Allocate system memory for buffer */
|
||||
dsb->buffer->memory = HeapAlloc(GetProcessHeap(),0,dsb->buflen);
|
||||
- if (!dsb->buffer->memory) {
|
||||
+ if (dsb->buffer->memory == NULL) {
|
||||
WARN("out of memory\n");
|
||||
- IDirectSoundBuffer8_Release(&dsb->IDirectSoundBuffer8_iface);
|
||||
+ HeapFree(GetProcessHeap(),0,dsb->pwfx);
|
||||
+ HeapFree(GetProcessHeap(),0,dsb->buffer);
|
||||
+ HeapFree(GetProcessHeap(),0,dsb);
|
||||
+ *pdsb = NULL;
|
||||
return DSERR_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
@@ -1110,12 +1118,18 @@ HRESULT IDirectSoundBufferImpl_Create(
|
||||
/* register buffer if not primary */
|
||||
if (!(dsbd->dwFlags & DSBCAPS_PRIMARYBUFFER)) {
|
||||
err = DirectSoundDevice_AddBuffer(device, dsb);
|
||||
- if (err == DS_OK)
|
||||
- *pdsb = dsb;
|
||||
- else
|
||||
- IDirectSoundBuffer8_Release(&dsb->IDirectSoundBuffer8_iface);
|
||||
+ if (err != DS_OK) {
|
||||
+ HeapFree(GetProcessHeap(),0,dsb->buffer->memory);
|
||||
+ HeapFree(GetProcessHeap(),0,dsb->buffer);
|
||||
+ RtlDeleteResource(&dsb->lock);
|
||||
+ HeapFree(GetProcessHeap(),0,dsb->pwfx);
|
||||
+ HeapFree(GetProcessHeap(),0,dsb);
|
||||
+ dsb = NULL;
|
||||
+ }
|
||||
}
|
||||
|
||||
+ IDirectSoundBuffer8_AddRef(&dsb->IDirectSoundBuffer8_iface);
|
||||
+ *pdsb = dsb;
|
||||
return err;
|
||||
}
|
||||
|
||||
--
|
||||
2.6.4
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From b0949848b3ba61c901fd705c5769b2014a96dabf Mon Sep 17 00:00:00 2001
|
||||
From 04ccb4bc45d41ab247076f3d83329236a1c30125 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Sat, 3 Jan 2015 20:55:43 -0700
|
||||
Subject: kernel32: Consider the working directory first when launching
|
||||
@@ -9,12 +9,12 @@ Subject: kernel32: Consider the working directory first when launching
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
|
||||
index 0a087ab..ec9d991 100644
|
||||
index 98ea09b..a5433d7 100644
|
||||
--- a/dlls/kernel32/process.c
|
||||
+++ b/dlls/kernel32/process.c
|
||||
@@ -259,9 +259,17 @@ static HANDLE open_exe_file( const WCHAR *name, struct binary_info *binary_info
|
||||
static BOOL find_exe_file( const WCHAR *name, WCHAR *buffer, int buflen,
|
||||
HANDLE *handle, struct binary_info *binary_info )
|
||||
@@ -441,9 +441,17 @@ static HANDLE open_exe_file( const WCHAR *name, BOOL *is_64bit )
|
||||
*/
|
||||
static BOOL find_exe_file( const WCHAR *name, WCHAR *buffer, int buflen, HANDLE *handle )
|
||||
{
|
||||
+ WCHAR cur_dir[MAX_PATH];
|
||||
+
|
||||
@@ -32,5 +32,5 @@ index 0a087ab..ec9d991 100644
|
||||
!SearchPathW( NULL, name, NULL, buflen, buffer, NULL )) return FALSE;
|
||||
|
||||
--
|
||||
1.9.1
|
||||
2.7.4
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 25b0ee6993d4a790a2acf8f90ee8bc9dc261fce8 Mon Sep 17 00:00:00 2001
|
||||
From f840f5b4a1378ee7e1c669547deb8cce1325909c Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Mon, 2 Jan 2017 15:34:21 +0800
|
||||
Subject: [PATCH] server: All fields up to CheckSum are mandatory regardless of
|
||||
@@ -9,7 +9,7 @@ Subject: [PATCH] server: All fields up to CheckSum are mandatory regardless of
|
||||
1 file changed, 10 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/server/mapping.c b/server/mapping.c
|
||||
index 1ed8c9d..ce0bf52 100644
|
||||
index 2955766..877eec1 100644
|
||||
--- a/server/mapping.c
|
||||
+++ b/server/mapping.c
|
||||
@@ -580,11 +580,10 @@ static unsigned int get_image_params( struct mapping *mapping, file_pos_t file_s
|
||||
@@ -25,8 +25,8 @@ index 1ed8c9d..ce0bf52 100644
|
||||
- if (size < sizeof(nt)) memset( (char *)&nt + size, 0, sizeof(nt) - size );
|
||||
if (nt.Signature != IMAGE_NT_SIGNATURE)
|
||||
{
|
||||
if (*(WORD *)&nt.Signature == IMAGE_OS2_SIGNATURE) return STATUS_INVALID_IMAGE_NE_FORMAT;
|
||||
@@ -594,6 +593,10 @@ static unsigned int get_image_params( struct mapping *mapping, file_pos_t file_s
|
||||
IMAGE_OS2_HEADER *os2 = (IMAGE_OS2_HEADER *)&nt;
|
||||
@@ -597,6 +596,10 @@ static unsigned int get_image_params( struct mapping *mapping, file_pos_t file_s
|
||||
switch (nt.opt.hdr32.Magic)
|
||||
{
|
||||
case IMAGE_NT_OPTIONAL_HDR32_MAGIC:
|
||||
@@ -37,7 +37,7 @@ index 1ed8c9d..ce0bf52 100644
|
||||
switch (nt.FileHeader.Machine)
|
||||
{
|
||||
case IMAGE_FILE_MACHINE_I386:
|
||||
@@ -636,6 +639,10 @@ static unsigned int get_image_params( struct mapping *mapping, file_pos_t file_s
|
||||
@@ -639,6 +642,10 @@ static unsigned int get_image_params( struct mapping *mapping, file_pos_t file_s
|
||||
break;
|
||||
|
||||
case IMAGE_NT_OPTIONAL_HDR64_MAGIC:
|
||||
@@ -49,5 +49,5 @@ index 1ed8c9d..ce0bf52 100644
|
||||
switch (nt.FileHeader.Machine)
|
||||
{
|
||||
--
|
||||
1.9.1
|
||||
2.7.4
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From c04c1737fad3efc975d9cedcd2f12547cc482f68 Mon Sep 17 00:00:00 2001
|
||||
From 3b075f8bd5e11c89d3c5c86350a492b21a8f2437 Mon Sep 17 00:00:00 2001
|
||||
From: Qian Hong <qhong@codeweavers.com>
|
||||
Date: Fri, 17 Apr 2015 00:59:02 +0800
|
||||
Subject: ntdll/tests: Added tests to set disposition on file which is mapped
|
||||
@@ -9,15 +9,15 @@ Subject: ntdll/tests: Added tests to set disposition on file which is mapped
|
||||
1 file changed, 70 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 2e630e3..740e44a 100644
|
||||
index 42eece5..34ece75 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -2099,12 +2099,13 @@ static void test_file_disposition_information(void)
|
||||
@@ -2618,12 +2618,13 @@ static void test_file_disposition_information(void)
|
||||
{
|
||||
char tmp_path[MAX_PATH], buffer[MAX_PATH + 16];
|
||||
DWORD dirpos;
|
||||
- HANDLE handle, handle2;
|
||||
+ HANDLE handle, handle2, mapping;
|
||||
- HANDLE handle, handle2, handle3;
|
||||
+ HANDLE handle, handle2, handle3, mapping;
|
||||
NTSTATUS res;
|
||||
IO_STATUS_BLOCK io;
|
||||
FILE_DISPOSITION_INFORMATION fdi;
|
||||
@@ -27,7 +27,7 @@ index 2e630e3..740e44a 100644
|
||||
|
||||
GetTempPathA( MAX_PATH, tmp_path );
|
||||
|
||||
@@ -2269,6 +2270,74 @@ static void test_file_disposition_information(void)
|
||||
@@ -2946,6 +2947,74 @@ todo_wine
|
||||
todo_wine
|
||||
ok( !fileDeleted, "Directory shouldn't have been deleted\n" );
|
||||
RemoveDirectoryA( buffer );
|
||||
@@ -103,5 +103,5 @@ index 2e630e3..740e44a 100644
|
||||
|
||||
static void test_iocompletion(void)
|
||||
--
|
||||
2.5.0
|
||||
2.7.4
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 8ebb22fe5f693288dd36dca0aa911164385b6e77 Mon Sep 17 00:00:00 2001
|
||||
From 62a2aa4ae486d307eb3616bf715924983c6d3458 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Mon, 3 Apr 2017 05:30:27 +0200
|
||||
Subject: [PATCH] ntdll: Implement HashLinks field in LDR module data.
|
||||
@@ -10,7 +10,7 @@ Subject: [PATCH] ntdll: Implement HashLinks field in LDR module data.
|
||||
3 files changed, 144 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
|
||||
index 037c01e..369d48b 100644
|
||||
index e7a1a43..7528098 100644
|
||||
--- a/dlls/kernel32/tests/loader.c
|
||||
+++ b/dlls/kernel32/tests/loader.c
|
||||
@@ -29,6 +29,7 @@
|
||||
@@ -21,7 +21,7 @@ index 037c01e..369d48b 100644
|
||||
#include "wine/test.h"
|
||||
#include "delayloadhandler.h"
|
||||
|
||||
@@ -3573,6 +3574,79 @@ static void test_InMemoryOrderModuleList(void)
|
||||
@@ -3600,6 +3601,79 @@ static void test_InMemoryOrderModuleList(void)
|
||||
ok(entry2 == mark2, "expected entry2 == mark2, got %p and %p\n", entry2, mark2);
|
||||
}
|
||||
|
||||
@@ -101,17 +101,17 @@ index 037c01e..369d48b 100644
|
||||
START_TEST(loader)
|
||||
{
|
||||
int argc;
|
||||
@@ -3637,4 +3711,5 @@ START_TEST(loader)
|
||||
@@ -3664,4 +3738,5 @@ START_TEST(loader)
|
||||
test_import_resolution();
|
||||
test_ExitProcess();
|
||||
test_InMemoryOrderModuleList();
|
||||
+ test_HashLinks();
|
||||
}
|
||||
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
|
||||
index c24fa95..246bc0b 100644
|
||||
index da83b27..9493770 100644
|
||||
--- a/dlls/ntdll/loader.c
|
||||
+++ b/dlls/ntdll/loader.c
|
||||
@@ -96,6 +96,9 @@ static const char * const reason_names[] =
|
||||
@@ -93,6 +93,9 @@ static const char * const reason_names[] =
|
||||
|
||||
static const WCHAR dllW[] = {'.','d','l','l',0};
|
||||
|
||||
@@ -121,7 +121,7 @@ index c24fa95..246bc0b 100644
|
||||
/* internal representation of 32bit modules. per process. */
|
||||
typedef struct _wine_modref
|
||||
{
|
||||
@@ -382,6 +385,52 @@ static void call_ldr_notifications( ULONG reason, LDR_MODULE *module )
|
||||
@@ -376,6 +379,52 @@ static void call_ldr_notifications( ULONG reason, LDR_MODULE *module )
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
@@ -174,7 +174,7 @@ index c24fa95..246bc0b 100644
|
||||
* get_modref
|
||||
*
|
||||
* Looks for the referenced HMODULE in the current process
|
||||
@@ -1100,7 +1149,12 @@ static WINE_MODREF *alloc_module( HMODULE hModule, LPCWSTR filename, LPCWSTR fak
|
||||
@@ -1094,7 +1143,12 @@ static WINE_MODREF *alloc_module( HMODULE hModule, LPCWSTR filename )
|
||||
&wm->ldr.InLoadOrderModuleList);
|
||||
InsertTailList(&NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList,
|
||||
&wm->ldr.InMemoryOrderModuleList);
|
||||
@@ -187,7 +187,7 @@ index c24fa95..246bc0b 100644
|
||||
|
||||
if (!(nt->OptionalHeader.DllCharacteristics & IMAGE_DLLCHARACTERISTICS_NX_COMPAT))
|
||||
{
|
||||
@@ -1864,6 +1918,7 @@ static void load_builtin_callback( void *module, const char *filename )
|
||||
@@ -1768,6 +1822,7 @@ static void load_builtin_callback( void *module, const char *filename )
|
||||
/* the module has only be inserted in the load & memory order lists */
|
||||
RemoveEntryList(&wm->ldr.InLoadOrderModuleList);
|
||||
RemoveEntryList(&wm->ldr.InMemoryOrderModuleList);
|
||||
@@ -195,7 +195,7 @@ index c24fa95..246bc0b 100644
|
||||
/* FIXME: free the modref */
|
||||
builtin_load_info->status = STATUS_DLL_NOT_FOUND;
|
||||
return;
|
||||
@@ -2124,6 +2179,7 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, LPCWSTR fakemo
|
||||
@@ -2028,6 +2083,7 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, HANDLE file,
|
||||
/* the module has only be inserted in the load & memory order lists */
|
||||
RemoveEntryList(&wm->ldr.InLoadOrderModuleList);
|
||||
RemoveEntryList(&wm->ldr.InMemoryOrderModuleList);
|
||||
@@ -203,7 +203,7 @@ index c24fa95..246bc0b 100644
|
||||
|
||||
/* FIXME: there are several more dangling references
|
||||
* left. Including dlls loaded by this dll before the
|
||||
@@ -3299,6 +3355,7 @@ static void free_modref( WINE_MODREF *wm )
|
||||
@@ -3030,6 +3086,7 @@ static void free_modref( WINE_MODREF *wm )
|
||||
{
|
||||
RemoveEntryList(&wm->ldr.InLoadOrderModuleList);
|
||||
RemoveEntryList(&wm->ldr.InMemoryOrderModuleList);
|
||||
@@ -211,7 +211,7 @@ index c24fa95..246bc0b 100644
|
||||
if (wm->ldr.InInitializationOrderModuleList.Flink)
|
||||
RemoveEntryList(&wm->ldr.InInitializationOrderModuleList);
|
||||
|
||||
@@ -3696,6 +3753,9 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2,
|
||||
@@ -3357,6 +3414,9 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2,
|
||||
RemoveEntryList( &wm->ldr.InMemoryOrderModuleList );
|
||||
InsertHeadList( &peb->LdrData->InMemoryOrderModuleList, &wm->ldr.InMemoryOrderModuleList );
|
||||
|
||||
@@ -221,15 +221,15 @@ index c24fa95..246bc0b 100644
|
||||
if ((status = virtual_alloc_thread_stack( NtCurrentTeb(), 0, 0, NULL )) != STATUS_SUCCESS)
|
||||
{
|
||||
ERR( "Main exe initialization for %s failed, status %x\n",
|
||||
@@ -3842,6 +3902,7 @@ void __wine_process_init(void)
|
||||
@@ -3505,6 +3565,7 @@ void __wine_process_init(void)
|
||||
NTSTATUS status;
|
||||
ANSI_STRING func_name;
|
||||
void (* DECLSPEC_NORETURN CDECL init_func)(void);
|
||||
+ DWORD i;
|
||||
|
||||
main_exe_file = thread_init();
|
||||
thread_init();
|
||||
|
||||
@@ -3851,6 +3912,10 @@ void __wine_process_init(void)
|
||||
@@ -3514,6 +3575,10 @@ void __wine_process_init(void)
|
||||
|
||||
load_global_options();
|
||||
|
||||
@@ -241,10 +241,10 @@ index c24fa95..246bc0b 100644
|
||||
wine_dll_set_callback( load_builtin_callback );
|
||||
|
||||
diff --git a/include/winternl.h b/include/winternl.h
|
||||
index 558f643..737e7f1 100644
|
||||
index c07cdec..4f04a28 100644
|
||||
--- a/include/winternl.h
|
||||
+++ b/include/winternl.h
|
||||
@@ -2171,8 +2171,7 @@ typedef struct _LDR_MODULE
|
||||
@@ -2192,8 +2192,7 @@ typedef struct _LDR_MODULE
|
||||
ULONG Flags;
|
||||
SHORT LoadCount;
|
||||
SHORT TlsIndex;
|
||||
@@ -254,7 +254,7 @@ index 558f643..737e7f1 100644
|
||||
ULONG TimeDateStamp;
|
||||
HANDLE ActivationContext;
|
||||
PVOID PatchInformation;
|
||||
@@ -2182,6 +2181,9 @@ typedef struct _LDR_MODULE
|
||||
@@ -2203,6 +2202,9 @@ typedef struct _LDR_MODULE
|
||||
PVOID ContextInformation;
|
||||
ULONG_PTR OriginalBase;
|
||||
LARGE_INTEGER LoadTime;
|
||||
@@ -265,5 +265,5 @@ index 558f643..737e7f1 100644
|
||||
|
||||
typedef struct _LDR_DLL_LOADED_NOTIFICATION_DATA
|
||||
--
|
||||
1.9.1
|
||||
2.7.4
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 97655d49034368dde4a9565f15692ae9416b8bc8 Mon Sep 17 00:00:00 2001
|
||||
From 204020058c317ff7180f3d637da102526751ac29 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 16 Jan 2014 20:56:49 -0700
|
||||
Subject: [PATCH] ntdll: Add support for junction point creation.
|
||||
@@ -6,20 +6,18 @@ Subject: [PATCH] ntdll: Add support for junction point creation.
|
||||
---
|
||||
dlls/ntdll/file.c | 91 +++++++++++++++++++++++++++++++++++++++++++++++
|
||||
dlls/ntdll/tests/file.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
include/Makefile.in | 1 +
|
||||
include/ntifs.h | 50 ++++++++++++++++++++++++++
|
||||
4 files changed, 236 insertions(+)
|
||||
create mode 100644 include/ntifs.h
|
||||
include/ddk/ntifs.h | 26 ++++++++++++++
|
||||
3 files changed, 211 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index c4528fe..8cd673a 100644
|
||||
index 348a6b6..d34a28d 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -108,12 +108,14 @@
|
||||
#include "winioctl.h"
|
||||
#include "ddk/ntddk.h"
|
||||
#include "ddk/ntddser.h"
|
||||
+#include "ntifs.h"
|
||||
+#include "ddk/ntifs.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(ntdll);
|
||||
WINE_DECLARE_DEBUG_CHANNEL(winediag);
|
||||
@@ -107,7 +105,7 @@ index c4528fe..8cd673a 100644
|
||||
/**************************************************************************
|
||||
* NtFsControlFile [NTDLL.@]
|
||||
* ZwFsControlFile [NTDLL.@]
|
||||
@@ -1738,11 +1810,30 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
|
||||
@@ -1728,11 +1800,30 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -139,18 +137,18 @@ index c4528fe..8cd673a 100644
|
||||
return server_ioctl_file( handle, event, apc, apc_context, io, code,
|
||||
in_buffer, in_size, out_buffer, out_size );
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index bf87000..198e415 100644
|
||||
index 6d5ce72..60b32f5 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -37,6 +37,7 @@
|
||||
#include "winternl.h"
|
||||
@@ -38,6 +38,7 @@
|
||||
#include "winuser.h"
|
||||
#include "winioctl.h"
|
||||
+#include "ntifs.h"
|
||||
#include "winnls.h"
|
||||
+#include "ddk/ntifs.h"
|
||||
|
||||
#ifndef IO_COMPLETION_ALL_ACCESS
|
||||
#define IO_COMPLETION_ALL_ACCESS 0x001F0003
|
||||
@@ -4335,6 +4336,98 @@ static void test_query_ea(void)
|
||||
@@ -4540,6 +4541,98 @@ static void test_query_ea(void)
|
||||
#undef EA_BUFFER_SIZE
|
||||
}
|
||||
|
||||
@@ -249,53 +247,20 @@ index bf87000..198e415 100644
|
||||
START_TEST(file)
|
||||
{
|
||||
HMODULE hkernel32 = GetModuleHandleA("kernel32.dll");
|
||||
@@ -4401,4 +4494,5 @@ START_TEST(file)
|
||||
@@ -4607,4 +4700,5 @@ START_TEST(file)
|
||||
test_ioctl();
|
||||
test_flush_buffers_file();
|
||||
test_query_ea();
|
||||
+ test_junction_points();
|
||||
}
|
||||
diff --git a/include/Makefile.in b/include/Makefile.in
|
||||
index 78ab095..dc2bede 100644
|
||||
--- a/include/Makefile.in
|
||||
+++ b/include/Makefile.in
|
||||
@@ -469,6 +469,7 @@ SOURCES = \
|
||||
ntddstor.h \
|
||||
ntdef.h \
|
||||
ntdsapi.h \
|
||||
+ ntifs.h \
|
||||
ntlsa.h \
|
||||
ntquery.h \
|
||||
ntsecapi.h \
|
||||
diff --git a/include/ntifs.h b/include/ntifs.h
|
||||
new file mode 100644
|
||||
index 0000000..85100fe
|
||||
--- /dev/null
|
||||
+++ b/include/ntifs.h
|
||||
@@ -0,0 +1,50 @@
|
||||
+/*
|
||||
+ * Win32 definitions for Windows NT
|
||||
+ *
|
||||
+ * Copyright 2012 Erich Hoover
|
||||
+ *
|
||||
+ * This library is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU Lesser General Public
|
||||
+ * License as published by the Free Software Foundation; either
|
||||
+ * version 2.1 of the License, or (at your option) any later version.
|
||||
+ *
|
||||
+ * This library is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ * Lesser General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU Lesser General Public
|
||||
+ * License along with this library; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
+ */
|
||||
+
|
||||
+#ifndef __WINE_NTIFS_H
|
||||
+#define __WINE_NTIFS_H
|
||||
+
|
||||
diff --git a/include/ddk/ntifs.h b/include/ddk/ntifs.h
|
||||
index a1ed847..ccbd2a7 100644
|
||||
--- a/include/ddk/ntifs.h
|
||||
+++ b/include/ddk/ntifs.h
|
||||
@@ -132,4 +132,30 @@ typedef struct _FS_FILTER_CALLBACKS
|
||||
BOOLEAN WINAPI FsRtlIsNameInExpression(PUNICODE_STRING, PUNICODE_STRING, BOOLEAN, PWCH);
|
||||
NTSTATUS WINAPI ObQueryNameString(PVOID,POBJECT_NAME_INFORMATION,ULONG,PULONG);
|
||||
|
||||
+typedef struct _REPARSE_DATA_BUFFER {
|
||||
+ ULONG ReparseTag;
|
||||
+ USHORT ReparseDataLength;
|
||||
@@ -322,7 +287,7 @@ index 0000000..85100fe
|
||||
+ };
|
||||
+} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
|
||||
+
|
||||
+#endif /* __WINE_NTIFS_H */
|
||||
#endif
|
||||
--
|
||||
1.9.1
|
||||
2.7.4
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 029fb5b0aa9c8ecb76da3aae5a2394072bf2fa33 Mon Sep 17 00:00:00 2001
|
||||
From 1fe09b6fd1dd6fe7520932c2c226728301d5d099 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 16 Jan 2014 21:00:21 -0700
|
||||
Subject: [PATCH] ntdll: Add support for deleting junction points.
|
||||
@@ -6,11 +6,11 @@ Subject: [PATCH] ntdll: Add support for deleting junction points.
|
||||
---
|
||||
dlls/ntdll/file.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
dlls/ntdll/tests/file.c | 22 +++++++++++++++++++++
|
||||
include/ntifs.h | 12 ++++++++++++
|
||||
include/ddk/ntifs.h | 12 ++++++++++++
|
||||
3 files changed, 85 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index 73f9de4..4594c57 100644
|
||||
index 66cc16a..9b8d4c8 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -1775,6 +1775,41 @@ cleanup:
|
||||
@@ -55,7 +55,7 @@ index 73f9de4..4594c57 100644
|
||||
/**************************************************************************
|
||||
* NtFsControlFile [NTDLL.@]
|
||||
* ZwFsControlFile [NTDLL.@]
|
||||
@@ -1871,6 +1906,22 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
|
||||
@@ -1861,6 +1896,22 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
|
||||
status = STATUS_SUCCESS;
|
||||
break;
|
||||
|
||||
@@ -79,10 +79,10 @@ index 73f9de4..4594c57 100644
|
||||
{
|
||||
REPARSE_DATA_BUFFER *buffer = (REPARSE_DATA_BUFFER *)out_buffer;
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 286d1e4..a5cb3b7 100644
|
||||
index 94d5a04..a92961d 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -4360,12 +4360,15 @@ static void test_junction_points(void)
|
||||
@@ -4565,12 +4565,15 @@ static void test_junction_points(void)
|
||||
static const WCHAR junctionW[] = {'\\','j','u','n','c','t','i','o','n',0};
|
||||
WCHAR path[MAX_PATH], junction_path[MAX_PATH], target_path[MAX_PATH];
|
||||
static const WCHAR targetW[] = {'\\','t','a','r','g','e','t',0};
|
||||
@@ -98,7 +98,7 @@ index 286d1e4..a5cb3b7 100644
|
||||
UNICODE_STRING nameW;
|
||||
HANDLE hJunction;
|
||||
WCHAR *dest;
|
||||
@@ -4413,6 +4416,8 @@ static void test_junction_points(void)
|
||||
@@ -4618,6 +4621,8 @@ static void test_junction_points(void)
|
||||
win_skip("Failed to open junction point directory handle (0x%x).\n", GetLastError());
|
||||
goto cleanup;
|
||||
}
|
||||
@@ -107,7 +107,7 @@ index 286d1e4..a5cb3b7 100644
|
||||
buffer_len = build_reparse_buffer(nameW.Buffer, &buffer);
|
||||
bret = DeviceIoControl(hJunction, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0);
|
||||
ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError());
|
||||
@@ -4427,6 +4432,23 @@ static void test_junction_points(void)
|
||||
@@ -4632,6 +4637,23 @@ static void test_junction_points(void)
|
||||
ok(bret, "Failed to read junction point!\n");
|
||||
ok((memcmp(dest, nameW.Buffer, string_len) == 0), "Junction point destination does not match ('%s' != '%s')!\n",
|
||||
wine_dbgstr_w(dest), wine_dbgstr_w(nameW.Buffer));
|
||||
@@ -131,11 +131,11 @@ index 286d1e4..a5cb3b7 100644
|
||||
CloseHandle(hJunction);
|
||||
|
||||
cleanup:
|
||||
diff --git a/include/ntifs.h b/include/ntifs.h
|
||||
index 85100fe..10820e4 100644
|
||||
--- a/include/ntifs.h
|
||||
+++ b/include/ntifs.h
|
||||
@@ -47,4 +47,16 @@ typedef struct _REPARSE_DATA_BUFFER {
|
||||
diff --git a/include/ddk/ntifs.h b/include/ddk/ntifs.h
|
||||
index ccbd2a7..679d8ba 100644
|
||||
--- a/include/ddk/ntifs.h
|
||||
+++ b/include/ddk/ntifs.h
|
||||
@@ -158,4 +158,16 @@ typedef struct _REPARSE_DATA_BUFFER {
|
||||
};
|
||||
} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
|
||||
|
||||
@@ -151,7 +151,7 @@ index 85100fe..10820e4 100644
|
||||
+
|
||||
+#define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER, GenericReparseBuffer)
|
||||
+
|
||||
#endif /* __WINE_NTIFS_H */
|
||||
#endif
|
||||
--
|
||||
1.9.1
|
||||
2.7.4
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user