Compare commits

...

72 Commits
v4.3 ... v4.7

Author SHA1 Message Date
Alistair Leslie-Hughes
547e7c81fb Release v4.7 2019-04-27 12:56:43 +10:00
Zebediah Figura
99d6f16c4e ntdll-SystemExtendedProcessInformation: Restore mistakenly deleted patchset. 2019-04-26 20:35:04 -05:00
Zebediah Figura
2e99ff1d6e Rebase against 6e3f39a4c59fd529c7b532dcde1bb8c37c467b35. 2019-04-26 16:21:57 -05:00
Alistair Leslie-Hughes
a9282e6425 Added gdi32-D3DKMTQueryStatistics patchset 2019-04-26 13:36:39 +10:00
Alistair Leslie-Hughes
63eedc8289 Updated ntdll-Junction_Points patchset 2019-04-26 10:01:46 +10:00
Alistair Leslie-Hughes
fea87f9a23 Rebase against 85826158947637f790b68742a5448c483f47234f 2019-04-26 09:42:11 +10:00
Alistair Leslie-Hughes
f883c66e40 Updated server-Desktop_Refcount patchset 2019-04-25 18:07:55 +10:00
Zebediah Figura
d8568c947a eventfd_synchronization: Handle directory change notification objects. 2019-04-24 23:57:07 -05:00
Zebediah Figura
f61fe9f16b Rebase against 9b6d198a3c7c8a02aa69c0d3d11829712e9778a6. 2019-04-24 23:57:07 -05:00
Alistair Leslie-Hughes
4969e2759b Updated ntdll-Junction_Points patchset 2019-04-24 11:20:07 +10:00
Alistair Leslie-Hughes
4423ea716e Removed kernel32-CreateSymbolicLink patchset.
The updated ntdll-Junction_Points has replace this patchset.

Thanks for testing Gijs Vermeulen.
2019-04-24 10:24:20 +10:00
Alistair Leslie-Hughes
38c1f5e4d5 Rebase against 75aa4ab16b03a11464ab0d3e4c4cfbff0180c269 2019-04-24 10:09:47 +10:00
Alistair Leslie-Hughes
4e7071e4f1 Updated server-Desktop_Refcount patchset 2019-04-23 16:02:50 +10:00
Alistair Leslie-Hughes
a0708adf42 Updated ntdll-Junction_Points patchset
Changed dependencies to allow ntdll-Junction_Points to be applied
on top of wine.
2019-04-23 11:08:07 +10:00
Alistair Leslie-Hughes
9e53a45319 Added winex11.drv-Query_server_position patchset 2019-04-23 10:40:25 +10:00
Alistair Leslie-Hughes
7cc69d7707 Added winex11.drv-mouse-coorrds patchset 2019-04-23 10:09:57 +10:00
Alistair Leslie-Hughes
39738f05d6 Added windowscodecs-png-network patchset 2019-04-23 10:03:55 +10:00
Alistair Leslie-Hughes
477e9faba2 Rebase against 9d75caf4e1deea0ec8d5ad3f829e7218bc1e3c16 2019-04-23 09:44:01 +10:00
Alistair Leslie-Hughes
6f1e25e1c0 Rebase against 9d7d68747b06a03893df99c4beea36b762508603 2019-04-20 18:45:05 +10:00
Alistair Leslie-Hughes
36e84f2951 Updated ntdll-Junction_Points patchset 2019-04-16 11:14:52 +10:00
Alistair Leslie-Hughes
bfd8af12aa Rebase against f9301c2b66450a1cdd986e9052fcaa76535ba8b7 2019-04-16 09:30:17 +10:00
Alistair Leslie-Hughes
cbb09031a6 Added combase-GetRestrictedErrorInfo patchset 2019-04-15 09:24:55 +10:00
Alistair Leslie-Hughes
3f8edce509 Release v4.6 2019-04-14 11:52:32 +10:00
Zebediah Figura
56174c3307 ntdll-SystemModuleInformation: Add more patches for League of Legends. 2019-04-13 00:02:13 -05:00
Zebediah Figura
a36ea2ace3 Rebase against fabde842ede40fc53cf6f5743d5b477841f7b11c. 2019-04-12 19:34:16 -05:00
Alistair Leslie-Hughes
8f56ffcf57 Rebase against 0cb79db12ac7c48477518dcff269ccc5d6b745e0 2019-04-12 09:17:34 +10:00
Alistair Leslie-Hughes
d0190e3ade Added dinput-wheel-support patchset 2019-04-11 11:43:11 +10:00
Alistair Leslie-Hughes
72a13348de Rebase against 0652a2ccc967c6d1ca04c67f58112ff491ab9a62 2019-04-11 08:48:06 +10:00
Alistair Leslie-Hughes
a8556b9c25 Rebase against 5ed7a61de7e72ecf4cf6ef76d4044f32640b93cb 2019-04-10 09:43:50 +10:00
Zebediah Figura
52a77f6b00 Rebase against 18883a76762afab3e18e1279a9666240e19d4d03. 2019-04-08 17:01:18 -05:00
Zebediah Figura
be0910e9a9 eventfd_synchronization: Add some more dependencies. 2019-04-08 17:00:58 -05:00
Zebediah Figura
270b403c6d ntdll-SystemExtendedProcessInformation: Add patch set. 2019-04-06 21:34:50 -05:00
Zebediah Figura
4ea094eddb d3dx9-32bpp_Alpha_Channel: Restore mistakenly deleted patch.
Only the tests were upstreamed, and they do not pass without this patch.
2019-04-05 18:47:57 -05:00
Zebediah Figura
0e7183639d Rebase against 8ee1e3453e2e714241bcaac0cd75f4af3f828c8d. 2019-04-05 18:43:06 -05:00
Alistair Leslie-Hughes
ac1bb98de4 Updated wintab32-improvements patchset 2019-04-05 14:41:32 +11:00
Alistair Leslie-Hughes
bfdd49203c Added ddraw-Texture_Wrong_Caps patchset 2019-04-05 09:21:16 +11:00
Alistair Leslie-Hughes
1773e25340 Rebase against 17056908acae1d5c7cf5d255ec232210abfe86da 2019-04-05 09:20:03 +11:00
Zebediah Figura
553986fdfb eventfd_synchronization: Add patch set. 2019-04-03 21:40:49 -05:00
Zebediah Figura
8ce5fe8929 Rebase against 8268c47462544baf5bc7e5071c0a9f2d00c5c2cb. 2019-04-03 17:22:20 -05:00
Alistair Leslie-Hughes
8b930aea2f Added kernel32-ReplaceFileW patchset 2019-04-03 17:06:51 +11:00
Alistair Leslie-Hughes
e20fec1c52 Updated wintab32-improvements patchset.
Dropped winex11: Use active owner when sending messages due to regressions.
2019-04-03 16:54:11 +11:00
Alistair Leslie-Hughes
6f3a3b40aa Updated ddraw-Write_Vtable patchset 2019-04-03 11:16:23 +11:00
Alistair Leslie-Hughes
1184d64c71 Rebase against 33c35baa6761b00c8cef236c06cb1655f3f228d9 2019-04-03 09:11:34 +11:00
Alistair Leslie-Hughes
e2c7fb5bb6 Rebase against 56404595d5c42168d4fd4c1ec3a1b802a6aab5c1 2019-04-02 10:10:17 +11:00
Alistair Leslie-Hughes
85ba5095c8 Updated httpapi-HttpCreateServerSession patchset 2019-04-01 10:51:23 +11:00
Alistair Leslie-Hughes
cf0a72b3aa Release v4.5 2019-03-30 16:02:54 +11:00
Alistair Leslie-Hughes
f7bee23139 Rebase against c6ff0e01224e86c7baa31d019fcb0a7bf03e2f96 2019-03-30 16:02:03 +11:00
Alistair Leslie-Hughes
7ba10a3ef2 Rebase against cad72d3cd7a40e2c1f70d19b988e19da62710bf8 2019-03-29 11:49:30 +11:00
Alistair Leslie-Hughes
8f51d290fd Updated ddraw-Rendering_Targets patchset 2019-03-29 08:14:12 +11:00
Alistair Leslie-Hughes
271835fcdd Rebase against 0e8401076679f337655e72fa1726f05fcd89e069 2019-03-28 13:07:06 +11:00
Alistair Leslie-Hughes
a02caca06d Rebase against 829170f3d6b875f7a6f065072cc3334a20ff805e 2019-03-27 11:22:31 +11:00
Alistair Leslie-Hughes
0d4d90ee80 Rebase against c7f323107b3b956d206d8d0ee28851d60f19841c 2019-03-26 13:55:44 +11:00
Alistair Leslie-Hughes
d963a250c9 Rebase against c988910caeebfd1415ad4d036964a67078493e46 2019-03-23 10:56:04 +11:00
Alistair Leslie-Hughes
d82dea3b21 Updated ddraw-version-check patchset 2019-03-22 18:17:08 +11:00
Alistair Leslie-Hughes
055e049821 Updated wined3d-Indexed_Vertex_Blending and wined3d-SWVP-shaders patchset
Thanks Paul Gofman.
2019-03-20 11:02:25 +11:00
Alistair Leslie-Hughes
5ffc00de0a Rebase against 42683dd159385ed2f83fa6d9a8b73ed8b64e04e2 2019-03-20 10:58:11 +11:00
Alistair Leslie-Hughes
8e6af31b99 Rebase against 3e61c7127ed7eb764a8b308fd8897cbc26a93a4a 2019-03-19 09:04:20 +11:00
Alistair Leslie-Hughes
18e878bc40 Updated opencl-version_1_2 patchset. 2019-03-18 13:24:09 +11:00
Alistair Leslie-Hughes
4c19e3f8e1 Updated dinput-remap-joystick patchset 2019-03-18 10:03:40 +11:00
Alistair Leslie-Hughes
b6787bc221 Release v4.4 2019-03-17 17:12:16 +11:00
Zebediah Figura
6c37563f92 Rebase against 05994cd6179626438ef26c13ee45323a6a1f66eb. 2019-03-15 15:57:45 -05:00
Alistair Leslie-Hughes
65e6bb8111 Rebase against fa262317480e52eb3420c4e0ba9bae9e17db4457 2019-03-15 11:44:38 +11:00
Alistair Leslie-Hughes
3d9797093d Added opencl-version_1_2 patchset 2019-03-15 09:51:33 +11:00
Alistair Leslie-Hughes
993b6c9c83 Rebase against f34f13825fd060fda40f0a5b02dc1b420e3a8e1e 2019-03-13 09:54:01 +11:00
Alistair Leslie-Hughes
d866f07818 Added pdh-PdhLookupPerfNameByIndex-processor patchset 2019-03-12 09:19:32 +11:00
Alistair Leslie-Hughes
3d08d08fda Rebase against 5baadda536172d6713fa6fef1196dc2baa773904 2019-03-12 09:07:36 +11:00
Zebediah Figura
01adefa75c Rebase against ab7756619c1b16c761618a68d1b6a06ad437cbe8. 2019-03-07 17:53:33 -06:00
Zebediah Figura
6260ab9bce wined3d-SWVP-shaders, wined3d-Indexed_Vertex_Blending: Updates from Paul Gofman.
Should fix https://bugs.winehq.org/show_bug.cgi?id=46790.
2019-03-07 17:30:08 -06:00
Zebediah Figura
3a1bf0a033 Rebase against 56f34c7489cb463981e987a59aee9f8780fef7cd. 2019-03-06 22:07:08 -06:00
Alistair Leslie-Hughes
06fbe73760 Updated wined3d-SWVP-shaders, wined3d-Indexed_Vertex_Blending patchsets 2019-03-05 09:53:07 +11:00
Alistair Leslie-Hughes
c043d43772 Updated d3dx9_36-DrawText patchset
Thanks github user IIde pointing this out.
2019-03-05 09:18:36 +11:00
Alistair Leslie-Hughes
d3067e60ff Rebase against 6d35c10a7b7155dd552a3ad1a266d205e38f8765 2019-03-05 09:11:28 +11:00
338 changed files with 19575 additions and 13106 deletions

View File

@@ -1,23 +1,23 @@
From f23512417cb3d149a8be4f757282d17cc1f99f9a Mon Sep 17 00:00:00 2001
From fa73044dd60bae90b9a5ec850205a07579d4db17 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 29 May 2014 23:43:45 +0200
Subject: loader: Add commandline option --patches to show the patch list.
Subject: [PATCH] loader: Add commandline option --patches to show the patch
list.
---
dlls/ntdll/misc.c | 8 ++++++++
dlls/ntdll/ntdll.spec | 1 +
include/wine/library.h | 1 +
libs/wine/config.c | 6 ++++++
libs/wine/wine.def | 1 +
libs/wine/wine.map | 1 +
loader/main.c | 42 +++++++++++++++++++++++++++++++++++++++++-
7 files changed, 59 insertions(+), 1 deletion(-)
6 files changed, 58 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c
index ad1b43b..1f985e7 100644
index bb75d9c..21e2db6 100644
--- a/dlls/ntdll/misc.c
+++ b/dlls/ntdll/misc.c
@@ -55,6 +55,14 @@ const char * CDECL NTDLL_wine_get_version(void)
@@ -61,6 +61,14 @@ const char * CDECL NTDLL_wine_get_version(void)
}
/*********************************************************************
@@ -33,10 +33,10 @@ index ad1b43b..1f985e7 100644
*/
const char * CDECL NTDLL_wine_get_build_id(void)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 51de6e7..ee4ed49 100644
index 292b0f6..fb45a94 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1421,6 +1421,7 @@
@@ -1516,6 +1516,7 @@
# Version
@ cdecl wine_get_version() NTDLL_wine_get_version
@@ -57,10 +57,10 @@ index 242bb69..fae73fe 100644
extern void wine_init_argv0_path( const char *argv0 );
extern void wine_exec_wine_binary( const char *name, char **argv, const char *env_var );
diff --git a/libs/wine/config.c b/libs/wine/config.c
index a273502..5262c76 100644
index 3c9110b..5da6263 100644
--- a/libs/wine/config.c
+++ b/libs/wine/config.c
@@ -478,6 +478,12 @@ const char *wine_get_version(void)
@@ -522,6 +522,12 @@ const char *wine_get_version(void)
return PACKAGE_VERSION;
}
@@ -73,18 +73,6 @@ index a273502..5262c76 100644
/* return the build id string */
const char *wine_get_build_id(void)
{
diff --git a/libs/wine/wine.def b/libs/wine/wine.def
index ed315bd..5b42029 100644
--- a/libs/wine/wine.def
+++ b/libs/wine/wine.def
@@ -83,6 +83,7 @@ EXPORTS
wine_get_sortkey
wine_get_user_name
wine_get_version
+ wine_get_patches
wine_init
wine_init_argv0_path
wine_is_dbcs_leadbyte
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
index 2159fac..7cb2918 100644
--- a/libs/wine/wine.map
@@ -98,10 +86,10 @@ index 2159fac..7cb2918 100644
wine_init_argv0_path;
wine_is_dbcs_leadbyte;
diff --git a/loader/main.c b/loader/main.c
index ce21173..4794e51 100644
index f197cf8..f662912 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -89,7 +89,8 @@ static void check_command_line( int argc, char *argv[] )
@@ -54,7 +54,8 @@ static void check_command_line( int argc, char *argv[] )
static const char usage[] =
"Usage: wine PROGRAM [ARGUMENTS...] Run the specified program\n"
" wine --help Display this help and exit\n"
@@ -111,7 +99,7 @@ index ce21173..4794e51 100644
if (argc <= 1)
{
@@ -106,6 +107,45 @@ static void check_command_line( int argc, char *argv[] )
@@ -71,6 +72,45 @@ static void check_command_line( int argc, char *argv[] )
printf( "%s\n", wine_get_build_id() );
exit(0);
}
@@ -158,5 +146,5 @@ index ce21173..4794e51 100644
--
2.2.1
1.9.1

View File

@@ -1,16 +1,15 @@
From 41863fd8fdf3a885efa93359a538e4e74258fb30 Mon Sep 17 00:00:00 2001
From 9618572cf2eace39198fb83b747a70d1865015e3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 28 May 2014 19:50:51 +0200
Subject: loader: Add commandline option --check-libs.
Subject: [PATCH] loader: Add commandline option --check-libs.
---
include/wine/library.h | 2 +
libs/wine/config.c | 124 +++++++++++++++++++++++++++++++++++++++++++++++++
libs/wine/loader.c | 36 ++++++++++++++
libs/wine/wine.def | 2 +
libs/wine/wine.map | 2 +
loader/main.c | 50 +++++++++++++++++++-
6 files changed, 215 insertions(+), 1 deletion(-)
5 files changed, 213 insertions(+), 1 deletion(-)
diff --git a/include/wine/library.h b/include/wine/library.h
index fae73fe..7395a11 100644
@@ -33,10 +32,10 @@ index fae73fe..7395a11 100644
extern void *wine_dlsym( void *handle, const char *symbol, char *error, size_t errorsize );
extern int wine_dlclose( void *handle, char *error, size_t errorsize );
diff --git a/libs/wine/config.c b/libs/wine/config.c
index 12f4a67..be9f401 100644
index 5da6263..6cedfb7 100644
--- a/libs/wine/config.c
+++ b/libs/wine/config.c
@@ -443,6 +443,130 @@ const char *wine_get_build_dir(void)
@@ -488,6 +488,130 @@ const char *wine_get_build_dir(void)
return build_dir;
}
@@ -168,10 +167,10 @@ index 12f4a67..be9f401 100644
const char *wine_get_server_dir(void)
{
diff --git a/libs/wine/loader.c b/libs/wine/loader.c
index b5b32cc..1453a82 100644
index 649aa22..367dde3 100644
--- a/libs/wine/loader.c
+++ b/libs/wine/loader.c
@@ -1041,6 +1041,42 @@ void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize
@@ -1064,6 +1064,42 @@ void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize
}
/***********************************************************************
@@ -214,26 +213,6 @@ index b5b32cc..1453a82 100644
* wine_dlsym
*/
void *wine_dlsym( void *handle, const char *symbol, char *error, size_t errorsize )
diff --git a/libs/wine/wine.def b/libs/wine/wine.def
index 5b42029..6acf329 100644
--- a/libs/wine/wine.def
+++ b/libs/wine/wine.def
@@ -64,6 +64,7 @@ EXPORTS
wine_dbg_sprintf
wine_dbgstr_an
wine_dbgstr_wn
+ wine_dladdr
wine_dlclose
wine_dll_enum_load_path
wine_dll_get_owner
@@ -79,6 +80,7 @@ EXPORTS
wine_get_build_id
wine_get_config_dir
wine_get_data_dir
+ wine_get_libs
wine_get_server_dir
wine_get_sortkey
wine_get_user_name
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
index 7cb2918..72ffed8 100644
--- a/libs/wine/wine.map
@@ -255,7 +234,7 @@ index 7cb2918..72ffed8 100644
wine_get_sortkey;
wine_get_ss;
diff --git a/loader/main.c b/loader/main.c
index 343ea26..44804e1 100644
index f662912..a2dc40c 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -36,6 +36,12 @@
@@ -271,7 +250,7 @@ index 343ea26..44804e1 100644
#include <pthread.h>
#include "wine/library.h"
@@ -90,7 +96,8 @@ static void check_command_line( int argc, char *argv[] )
@@ -55,7 +61,8 @@ static void check_command_line( int argc, char *argv[] )
"Usage: wine PROGRAM [ARGUMENTS...] Run the specified program\n"
" wine --help Display this help and exit\n"
" wine --version Output version information and exit\n"
@@ -281,7 +260,7 @@ index 343ea26..44804e1 100644
if (argc <= 1)
{
@@ -146,6 +153,47 @@ static void check_command_line( int argc, char *argv[] )
@@ -111,6 +118,47 @@ static void check_command_line( int argc, char *argv[] )
exit(0);
}
@@ -330,5 +309,5 @@ index 343ea26..44804e1 100644
--
2.7.1
1.9.1

View File

@@ -1,36 +0,0 @@
From 22a49dfa50cda9b1f5a5c64eabed2d17b0033896 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 4 Aug 2017 02:52:50 +0200
Subject: server: Correctly validate SID length in sd_is_valid.
---
server/token.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/server/token.c b/server/token.c
index acd7a4dedb5..7ab0f634c05 100644
--- a/server/token.c
+++ b/server/token.c
@@ -332,8 +332,7 @@ int sd_is_valid( const struct security_descriptor *sd, data_size_t size )
owner = sd_get_owner( sd );
if (owner)
{
- size_t needed_size = security_sid_len( owner );
- if ((sd->owner_len < sizeof(SID)) || (needed_size > sd->owner_len))
+ if ((sd->owner_len < sizeof(SID)) || (security_sid_len( owner ) > sd->owner_len))
return FALSE;
}
offset += sd->owner_len;
@@ -344,8 +343,7 @@ int sd_is_valid( const struct security_descriptor *sd, data_size_t size )
group = sd_get_group( sd );
if (group)
{
- size_t needed_size = security_sid_len( group );
- if ((sd->group_len < sizeof(SID)) || (needed_size > sd->group_len))
+ if ((sd->group_len < sizeof(SID)) || (security_sid_len( group ) > sd->group_len))
return FALSE;
}
offset += sd->group_len;
--
2.13.1

View File

@@ -1,95 +0,0 @@
From f0290aad953e988b1a15e214ecfc57f21dc136af Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Tue, 28 Apr 2015 23:28:50 +0800
Subject: advapi32/tests: Test prefix and use of TokenPrimaryGroup Sid.
---
dlls/advapi32/tests/security.c | 35 ++++++++++++++++++++++++++++++-----
1 file changed, 30 insertions(+), 5 deletions(-)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index f3fc682..6a716d6 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -2514,19 +2514,21 @@ static void test_granted_access(HANDLE handle, ACCESS_MASK access,
static void test_process_security(void)
{
BOOL res;
+ PTOKEN_USER user;
PTOKEN_OWNER owner;
PTOKEN_PRIMARY_GROUP group;
- PSID AdminSid = NULL, UsersSid = NULL;
+ PSID AdminSid = NULL, UsersSid = NULL, UserSid = NULL;
PACL Acl = NULL, ThreadAcl = NULL;
SECURITY_DESCRIPTOR *SecurityDescriptor = NULL, *ThreadSecurityDescriptor = NULL;
- char buffer[MAX_PATH];
+ char buffer[MAX_PATH], account[MAX_PATH], domain[MAX_PATH];
PROCESS_INFORMATION info;
STARTUPINFOA startup;
SECURITY_ATTRIBUTES psa, tsa;
HANDLE token, event;
- DWORD size;
+ DWORD size, acc_size, dom_size, ret;
SID_IDENTIFIER_AUTHORITY SIDAuthWorld = { SECURITY_WORLD_SID_AUTHORITY };
PSID EveryoneSid = NULL;
+ SID_NAME_USE use;
Acl = HeapAlloc(GetProcessHeap(), 0, 256);
res = InitializeAcl(Acl, 256, ACL_REVISION);
@@ -2558,7 +2560,8 @@ static void test_process_security(void)
owner = HeapAlloc(GetProcessHeap(), 0, size);
res = GetTokenInformation( token, TokenOwner, owner, size, &size );
ok(res, "GetTokenInformation failed with error %d\n", GetLastError());
- AdminSid = ((TOKEN_OWNER*)owner)->Owner;
+ AdminSid = owner->Owner;
+ test_sid_str(AdminSid);
res = GetTokenInformation( token, TokenPrimaryGroup, NULL, 0, &size );
ok(!res, "Expected failure, got %d\n", res);
@@ -2568,13 +2571,34 @@ static void test_process_security(void)
group = HeapAlloc(GetProcessHeap(), 0, size);
res = GetTokenInformation( token, TokenPrimaryGroup, group, size, &size );
ok(res, "GetTokenInformation failed with error %d\n", GetLastError());
- UsersSid = ((TOKEN_PRIMARY_GROUP*)group)->PrimaryGroup;
+ UsersSid = group->PrimaryGroup;
+ test_sid_str(UsersSid);
+
+ acc_size = sizeof(account);
+ dom_size = sizeof(domain);
+ ret = LookupAccountSidA( NULL, UsersSid, account, &acc_size, domain, &dom_size, &use );
+ ok(ret, "LookupAccountSid failed with %d\n", ret);
+ todo_wine ok(use == SidTypeGroup, "expect SidTypeGroup, got %d\n", use);
+ todo_wine ok(!strcmp(account, "None"), "expect None, got %s\n", account);
+
+ res = GetTokenInformation( token, TokenUser, NULL, 0, &size );
+ ok(!res, "Expected failure, got %d\n", res);
+ ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
+ "Expected ERROR_INSUFFICIENT_BUFFER, got %d\n", GetLastError());
+
+ user = HeapAlloc(GetProcessHeap(), 0, size);
+ res = GetTokenInformation( token, TokenUser, user, size, &size );
+ ok(res, "GetTokenInformation failed with error %d\n", GetLastError());
+ UserSid = user->User.Sid;
+ test_sid_str(UserSid);
+ todo_wine ok(EqualPrefixSid(UsersSid, UserSid), "TokenPrimaryGroup Sid and TokenUser Sid don't match.\n");
CloseHandle( token );
if (!res)
{
HeapFree(GetProcessHeap(), 0, group);
HeapFree(GetProcessHeap(), 0, owner);
+ HeapFree(GetProcessHeap(), 0, user);
HeapFree(GetProcessHeap(), 0, Acl);
return;
}
@@ -2681,6 +2705,7 @@ static void test_process_security(void)
CloseHandle( event );
HeapFree(GetProcessHeap(), 0, group);
HeapFree(GetProcessHeap(), 0, owner);
+ HeapFree(GetProcessHeap(), 0, user);
HeapFree(GetProcessHeap(), 0, Acl);
HeapFree(GetProcessHeap(), 0, SecurityDescriptor);
HeapFree(GetProcessHeap(), 0, ThreadAcl);
--
2.3.5

View File

@@ -1 +0,0 @@
Depends: server-Misc_ACL

View File

@@ -1,125 +0,0 @@
From 2b29014573fcb38388dd82e33fa16f67b1a43a8c Mon Sep 17 00:00:00 2001
From: Austin English <austinenglish@gmail.com>
Date: Sun, 23 Oct 2016 16:15:45 -0500
Subject: [PATCH] advapi32: Add RegLoadAppKeyA/RegLoadAppKeyW stubs
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=41591
Signed-off-by: Austin English <austinenglish@gmail.com>
---
dlls/advapi32/advapi32.spec | 4 ++--
dlls/advapi32/registry.c | 24 ++++++++++++++++++++++
.../api-ms-win-core-registry-l1-1-0.spec | 4 ++--
.../api-ms-win-downlevel-advapi32-l1-1-0.spec | 4 ++--
dlls/kernelbase/kernelbase.spec | 4 ++--
include/winreg.h | 3 +++
6 files changed, 35 insertions(+), 8 deletions(-)
diff --git a/dlls/advapi32/advapi32.spec b/dlls/advapi32/advapi32.spec
index e870a5d..042a523 100644
--- a/dlls/advapi32/advapi32.spec
+++ b/dlls/advapi32/advapi32.spec
@@ -648,8 +648,8 @@
@ stdcall RegGetKeySecurity(long long ptr ptr)
@ stdcall RegGetValueA(long str str long ptr ptr ptr)
@ stdcall RegGetValueW(long wstr wstr long ptr ptr ptr)
-# @ stub RegLoadAppKeyA
-# @ stub RegLoadAppKeyW
+@ stdcall RegLoadAppKeyA(str ptr long long long)
+@ stdcall RegLoadAppKeyW(wstr ptr long long long)
@ stdcall RegLoadKeyA(long str str)
@ stdcall RegLoadKeyW(long wstr wstr)
@ stdcall RegLoadMUIStringA(long str str long ptr long str)
diff --git a/dlls/advapi32/registry.c b/dlls/advapi32/registry.c
index 3018372..55df6de 100644
--- a/dlls/advapi32/registry.c
+++ b/dlls/advapi32/registry.c
@@ -3513,3 +3513,27 @@ LONG WINAPI RegDisableReflectionKey(HKEY base)
FIXME("%p: stub\n", base);
return ERROR_SUCCESS;
}
+
+/******************************************************************************
+ * RegLoadAppKeyA [ADVAPI32.@]
+ *
+ */
+LSTATUS WINAPI RegLoadAppKeyA(const char *file, HKEY *result, REGSAM sam, DWORD options, DWORD reserved)
+{
+ FIXME("%s %p %u %u %u: stub\n", wine_dbgstr_a(file), result, sam, options, reserved);
+
+ *result = (HKEY)0xbeefcafe;
+ return ERROR_SUCCESS;
+}
+
+/******************************************************************************
+ * RegLoadAppKeyW [ADVAPI32.@]
+ *
+ */
+LSTATUS WINAPI RegLoadAppKeyW(const WCHAR *file, HKEY *result, REGSAM sam, DWORD options, DWORD reserved)
+{
+ FIXME("%s %p %u %u %u: stub\n", wine_dbgstr_w(file), result, sam, options, reserved);
+
+ *result = (HKEY)0xbeefcafe;
+ return ERROR_SUCCESS;
+}
diff --git a/dlls/api-ms-win-core-registry-l1-1-0/api-ms-win-core-registry-l1-1-0.spec b/dlls/api-ms-win-core-registry-l1-1-0/api-ms-win-core-registry-l1-1-0.spec
index 7a48e3b..f81f027 100644
--- a/dlls/api-ms-win-core-registry-l1-1-0/api-ms-win-core-registry-l1-1-0.spec
+++ b/dlls/api-ms-win-core-registry-l1-1-0/api-ms-win-core-registry-l1-1-0.spec
@@ -17,8 +17,8 @@
@ stdcall RegGetKeySecurity(long long ptr ptr) advapi32.RegGetKeySecurity
@ stdcall RegGetValueA(long str str long ptr ptr ptr) advapi32.RegGetValueA
@ stdcall RegGetValueW(long wstr wstr long ptr ptr ptr) advapi32.RegGetValueW
-@ stub RegLoadAppKeyA
-@ stub RegLoadAppKeyW
+@ stdcall RegLoadAppKeyA(str ptr long long long) advapi32.RegLoadAppKeyA
+@ stdcall RegLoadAppKeyW(wstr ptr long long long) advapi32.RegLoadAppKeyW
@ stdcall RegLoadKeyA(long str str) advapi32.RegLoadKeyA
@ stdcall RegLoadKeyW(long wstr wstr) advapi32.RegLoadKeyW
@ stdcall RegLoadMUIStringA(long str str long ptr long str) advapi32.RegLoadMUIStringA
diff --git a/dlls/api-ms-win-downlevel-advapi32-l1-1-0/api-ms-win-downlevel-advapi32-l1-1-0.spec b/dlls/api-ms-win-downlevel-advapi32-l1-1-0/api-ms-win-downlevel-advapi32-l1-1-0.spec
index 5bdad41..b2dcc17 100644
--- a/dlls/api-ms-win-downlevel-advapi32-l1-1-0/api-ms-win-downlevel-advapi32-l1-1-0.spec
+++ b/dlls/api-ms-win-downlevel-advapi32-l1-1-0/api-ms-win-downlevel-advapi32-l1-1-0.spec
@@ -102,8 +102,8 @@
@ stdcall RegGetKeySecurity(long long ptr ptr) advapi32.RegGetKeySecurity
@ stdcall RegGetValueA(long str str long ptr ptr ptr) advapi32.RegGetValueA
@ stdcall RegGetValueW(long wstr wstr long ptr ptr ptr) advapi32.RegGetValueW
-@ stub RegLoadAppKeyA
-@ stub RegLoadAppKeyW
+@ stdcall RegLoadAppKeyA(str ptr long long long) advapi32.RegLoadAppKeyA
+@ stdcall RegLoadAppKeyW(wstr ptr long long long) advapi32.RegLoadAppKeyW
@ stdcall RegLoadKeyA(long str str) advapi32.RegLoadKeyA
@ stdcall RegLoadKeyW(long wstr wstr) advapi32.RegLoadKeyW
@ stdcall RegLoadMUIStringA(long str str long ptr long str) advapi32.RegLoadMUIStringA
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index 286dae0..c114622 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -1288,8 +1288,8 @@
# @ stub RegKrnResetAppKeyLoaded
# @ stub RegKrnSetDllHasThreadStateGlobal
# @ stub RegKrnSetTermsrvRegistryExtensionFlags
-# @ stub RegLoadAppKeyA
-# @ stub RegLoadAppKeyW
+@ stdcall RegLoadAppKeyA(str ptr long long long) advapi32.RegLoadAppKeyA
+@ stdcall RegLoadAppKeyW(wstr ptr long long long) advapi32.RegLoadAppKeyW
@ stdcall -private RegLoadKeyA(long str str) kernel32.RegLoadKeyA
@ stdcall -private RegLoadKeyW(long wstr wstr) kernel32.RegLoadKeyW
@ stdcall -private RegLoadMUIStringA(long str str long ptr long str) kernel32.RegLoadMUIStringA
diff --git a/include/winreg.h b/include/winreg.h
index 51e9f02..5656eec 100644
--- a/include/winreg.h
+++ b/include/winreg.h
@@ -133,6 +133,9 @@ WINADVAPI LSTATUS WINAPI RegGetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY
WINADVAPI LSTATUS WINAPI RegGetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPDWORD,PVOID,LPDWORD);
WINADVAPI LSTATUS WINAPI RegGetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPDWORD,PVOID,LPDWORD);
#define RegGetValue WINELIB_NAME_AW(RegGetValue)
+WINADVAPI LSTATUS WINAPI RegLoadAppKeyA(const char*,HKEY*,REGSAM,DWORD,DWORD);
+WINADVAPI LSTATUS WINAPI RegLoadAppKeyW(const WCHAR*,HKEY*,REGSAM,DWORD,DWORD);
+#define RegLoadAppKey WINELIB_NAME_AW(RegLoadAppKey)
WINADVAPI LSTATUS WINAPI RegLoadKeyA(HKEY,LPCSTR,LPCSTR);
WINADVAPI LSTATUS WINAPI RegLoadKeyW(HKEY,LPCWSTR,LPCWSTR);
#define RegLoadKey WINELIB_NAME_AW(RegLoadKey)
--
1.9.1

View File

@@ -1 +0,0 @@
Fixes: [41591] advapi32: Add RegLoadAppKeyA/RegLoadAppKeyW stubs

View File

@@ -1,110 +0,0 @@
From 646388b696afda85dccc76678af6a8955bf0b627 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@wine-staging.com>
Date: Fri, 16 Oct 2015 16:03:00 -0600
Subject: advapi32: Move the DACL combining code into a separate routine.
---
dlls/advapi32/security.c | 79 +++++++++++++++++++++++++++---------------------
1 file changed, 45 insertions(+), 34 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index 00dafe8..dad8b22 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -5805,6 +5805,48 @@ BOOL WINAPI FileEncryptionStatusA(LPCSTR lpFileName, LPDWORD lpStatus)
return TRUE;
}
+static NTSTATUS combine_dacls(ACL *parent, ACL *child, ACL **result)
+{
+ ACL *combined;
+ int i;
+
+ /* initialize a combined DACL containing both inherited and new ACEs */
+ combined = heap_alloc_zero(child->AclSize+parent->AclSize);
+ if (!combined)
+ return STATUS_NO_MEMORY;
+
+ memcpy(combined, child, child->AclSize);
+ combined->AclSize = child->AclSize+parent->AclSize;
+
+ /* copy the inherited ACEs */
+ for (i=0; i<parent->AceCount; i++)
+ {
+ ACE_HEADER *ace;
+
+ if (!GetAce(parent, i, (void*)&ace))
+ continue;
+ if (!(ace->AceFlags & (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE)))
+ continue;
+ if ((ace->AceFlags & (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE)) !=
+ (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE))
+ {
+ FIXME("unsupported flags: %x\n", ace->AceFlags);
+ continue;
+ }
+
+ if (ace->AceFlags & NO_PROPAGATE_INHERIT_ACE)
+ ace->AceFlags &= ~(OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE|NO_PROPAGATE_INHERIT_ACE);
+ ace->AceFlags &= ~INHERIT_ONLY_ACE;
+ ace->AceFlags |= INHERITED_ACE;
+
+ if (!AddAce(combined, ACL_REVISION, MAXDWORD, ace, ace->AceSize))
+ WARN("error adding inherited ACE\n");
+ }
+
+ *result = combined;
+ return STATUS_SUCCESS;
+}
+
/******************************************************************************
* SetSecurityInfo [ADVAPI32.@]
*/
@@ -5904,41 +5946,10 @@ DWORD WINAPI SetSecurityInfo(HANDLE handle, SE_OBJECT_TYPE ObjectType,
if (!err)
{
- int i;
-
- dacl = heap_alloc_zero(pDacl->AclSize+parent_dacl->AclSize);
- if (!dacl)
- {
- LocalFree(parent_sd);
- return ERROR_NOT_ENOUGH_MEMORY;
- }
- memcpy(dacl, pDacl, pDacl->AclSize);
- dacl->AclSize = pDacl->AclSize+parent_dacl->AclSize;
-
- for (i=0; i<parent_dacl->AceCount; i++)
- {
- ACE_HEADER *ace;
-
- if (!GetAce(parent_dacl, i, (void*)&ace))
- continue;
- if (!(ace->AceFlags & (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE)))
- continue;
- if ((ace->AceFlags & (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE)) !=
- (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE))
- {
- FIXME("unsupported flags: %x\n", ace->AceFlags);
- continue;
- }
-
- if (ace->AceFlags & NO_PROPAGATE_INHERIT_ACE)
- ace->AceFlags &= ~(OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE|NO_PROPAGATE_INHERIT_ACE);
- ace->AceFlags &= ~INHERIT_ONLY_ACE;
- ace->AceFlags |= INHERITED_ACE;
-
- if(!AddAce(dacl, ACL_REVISION, MAXDWORD, ace, ace->AceSize))
- WARN("error adding inherited ACE\n");
- }
+ status = combine_dacls(parent_dacl, pDacl, &dacl);
LocalFree(parent_sd);
+ if (status != STATUS_SUCCESS)
+ return RtlNtStatusToDosError(status);
}
}
else
--
2.6.1

View File

@@ -1,54 +0,0 @@
From d1accafbe8e52b6b2c84e9fe5d08303fc05858af Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@wine-staging.com>
Date: Fri, 16 Oct 2015 13:58:38 -0600
Subject: advapi32: Fix the initialization of combined DACLs when the new DACL
is empty.
---
dlls/advapi32/security.c | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index dad8b22..11ae487 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -5807,6 +5807,7 @@ BOOL WINAPI FileEncryptionStatusA(LPCSTR lpFileName, LPDWORD lpStatus)
static NTSTATUS combine_dacls(ACL *parent, ACL *child, ACL **result)
{
+ NTSTATUS status;
ACL *combined;
int i;
@@ -5815,8 +5816,26 @@ static NTSTATUS combine_dacls(ACL *parent, ACL *child, ACL **result)
if (!combined)
return STATUS_NO_MEMORY;
- memcpy(combined, child, child->AclSize);
- combined->AclSize = child->AclSize+parent->AclSize;
+ status = RtlCreateAcl(combined, parent->AclSize+child->AclSize, ACL_REVISION);
+ if (status != STATUS_SUCCESS)
+ {
+ heap_free(combined);
+ return status;
+ }
+
+ /* copy the new ACEs */
+ for (i=0; i<child->AceCount; i++)
+ {
+ ACE_HEADER *ace;
+
+ if (!GetAce(child, i, (void*)&ace))
+ {
+ WARN("error obtaining new ACE\n");
+ continue;
+ }
+ if (!AddAce(combined, ACL_REVISION, MAXDWORD, ace, ace->AceSize))
+ WARN("error adding new ACE\n");
+ }
/* copy the inherited ACEs */
for (i=0; i<parent->AceCount; i++)
--
2.6.1

View File

@@ -1 +0,0 @@
Fixes: [38423] Fix the initialization of combined DACLs when the new DACL is empty

View File

@@ -1,4 +1,4 @@
From dd6544561d6432555f14a9004e107e6b87564949 Mon Sep 17 00:00:00 2001
From 19cfff2a16953b65f9767fee571a4ce5d51b0536 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 5 Aug 2017 03:39:55 +0200
Subject: [PATCH] ntdll: Implement process token elevation through manifests.
@@ -12,10 +12,10 @@ Subject: [PATCH] ntdll: Implement process token elevation through manifests.
5 files changed, 68 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index d7dbe57..7588d5a 100644
index c0708c6..479608f 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -3321,6 +3321,32 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
@@ -3505,6 +3505,32 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
/***********************************************************************
@@ -48,7 +48,7 @@ index d7dbe57..7588d5a 100644
* load_global_options
*/
static void load_global_options(void)
@@ -3373,6 +3399,7 @@ static void load_global_options(void)
@@ -3557,6 +3583,7 @@ static void load_global_options(void)
}
@@ -56,7 +56,7 @@ index d7dbe57..7588d5a 100644
/***********************************************************************
* RtlImageDirectoryEntryToData (NTDLL.@)
*/
@@ -3408,7 +3435,6 @@ PVOID WINAPI RtlImageDirectoryEntryToData( HMODULE module, BOOL image, WORD dir,
@@ -3592,7 +3619,6 @@ PVOID WINAPI RtlImageDirectoryEntryToData( HMODULE module, BOOL image, WORD dir,
return RtlImageRvaToVa( nt, module, addr, NULL );
}
@@ -64,16 +64,16 @@ index d7dbe57..7588d5a 100644
/***********************************************************************
* RtlImageRvaToSection (NTDLL.@)
*/
@@ -3505,7 +3531,7 @@ void __wine_process_init(void)
{
static const WCHAR kernel32W[] = {'k','e','r','n','e','l','3','2','.','d','l','l',0};
@@ -3691,7 +3717,7 @@ void __wine_process_init(void)
's','y','s','t','e','m','3','2','\\',
'k','e','r','n','e','l','3','2','.','d','l','l',0};
static const WCHAR globalflagW[] = {'G','l','o','b','a','l','F','l','a','g',0};
-
+ ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION runlevel;
WINE_MODREF *wm;
NTSTATUS status;
ANSI_STRING func_name;
@@ -3556,6 +3582,16 @@ void __wine_process_init(void)
@@ -3742,6 +3768,16 @@ void __wine_process_init(void)
&NtCurrentTeb()->Peb->NtGlobalFlag, sizeof(DWORD), NULL );
heap_set_debug_flags( GetProcessHeap() );
@@ -91,10 +91,10 @@ index d7dbe57..7588d5a 100644
RemoveEntryList( &wm->ldr.InLoadOrderModuleList );
InsertHeadList( &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList, &wm->ldr.InLoadOrderModuleList );
diff --git a/server/process.c b/server/process.c
index 0a25f44..3988b52 100644
index d8fdfcc..2c9365a 100644
--- a/server/process.c
+++ b/server/process.c
@@ -1109,6 +1109,14 @@ struct process_snapshot *process_snap( int *count )
@@ -1129,6 +1129,14 @@ struct process_snapshot *process_snap( int *count )
return snapshot;
}
@@ -110,10 +110,10 @@ index 0a25f44..3988b52 100644
DECL_HANDLER(new_process)
{
diff --git a/server/process.h b/server/process.h
index 4566a04..029b328 100644
index d9d29f0..a494eab 100644
--- a/server/process.h
+++ b/server/process.h
@@ -138,6 +138,7 @@ extern void break_process( struct process *process );
@@ -139,6 +139,7 @@ extern void break_process( struct process *process );
extern void detach_debugged_processes( struct thread *debugger );
extern struct process_snapshot *process_snap( int *count );
extern void enum_processes( int (*cb)(struct process*, void*), void *user);
@@ -122,10 +122,10 @@ index 4566a04..029b328 100644
/* console functions */
extern void inherit_console(struct thread *parent_thread, struct process *process, obj_handle_t hconin);
diff --git a/server/protocol.def b/server/protocol.def
index 071f740..cc44503 100644
index 2b8d51a..650c279 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3674,6 +3674,13 @@ struct handle_info
@@ -3721,6 +3721,13 @@ struct handle_info
@END
@@ -140,10 +140,10 @@ index 071f740..cc44503 100644
@REQ(create_completion)
unsigned int access; /* desired access to a port */
diff --git a/server/token.c b/server/token.c
index e449e61..961fbe7 100644
index fcab799..181219d 100644
--- a/server/token.c
+++ b/server/token.c
@@ -1797,3 +1797,17 @@ DECL_HANDLER(create_token)
@@ -1806,3 +1806,17 @@ DECL_HANDLER(create_token)
release_object( token );
}
}

View File

@@ -1,5 +1,4 @@
Fixes: [40613] Basic implementation for token integrity levels and UAC handling
Fixes: [39262] Run explorer.exe as unevaluated process
Depends: advapi32-CreateRestrictedToken
Depends: server-Misc_ACL
Depends: Staging

View File

@@ -1,183 +0,0 @@
From ef9a368177cf6f1a1ca7f99fd3ae0b8b6918160a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 8 Feb 2016 04:44:24 +0100
Subject: avifile.dll16: Correctly convert result of AVIStreamGetFrame to a
segptr.
---
dlls/avifile.dll16/Makefile.in | 3 +
dlls/avifile.dll16/avifile.dll16.spec | 6 +-
dlls/avifile.dll16/main.c | 133 ++++++++++++++++++++++++++++++++++
3 files changed, 139 insertions(+), 3 deletions(-)
create mode 100644 dlls/avifile.dll16/main.c
diff --git a/dlls/avifile.dll16/Makefile.in b/dlls/avifile.dll16/Makefile.in
index 6050c6c..4152c2f 100644
--- a/dlls/avifile.dll16/Makefile.in
+++ b/dlls/avifile.dll16/Makefile.in
@@ -1,3 +1,6 @@
MODULE = avifile.dll16
IMPORTS = avifil32
EXTRADLLFLAGS = -m16 -Wb,--main-module,avifil32.dll
+
+C_SRCS = \
+ main.c
diff --git a/dlls/avifile.dll16/avifile.dll16.spec b/dlls/avifile.dll16/avifile.dll16.spec
index 71a6c74..0e19413 100644
--- a/dlls/avifile.dll16/avifile.dll16.spec
+++ b/dlls/avifile.dll16/avifile.dll16.spec
@@ -20,9 +20,9 @@
105 stub AVIMAKECOMPRESSEDSTREAM
106 stub AVIMAKEFILEFROMSTREAMS
107 stub AVIMAKESTREAMFROMCLIPBOARD
-110 pascal AVIStreamGetFrame(long long) AVIStreamGetFrame
-111 pascal AVIStreamGetFrameClose(long) AVIStreamGetFrameClose
-112 pascal AVIStreamGetFrameOpen(long ptr) AVIStreamGetFrameOpen
+110 pascal AVIStreamGetFrame(long long) AVIStreamGetFrame16
+111 pascal AVIStreamGetFrameClose(long) AVIStreamGetFrameClose16
+112 pascal AVIStreamGetFrameOpen(long ptr) AVIStreamGetFrameOpen16
120 stub _AVISAVE
121 stub AVISAVEV
122 stub AVISAVEOPTIONS
diff --git a/dlls/avifile.dll16/main.c b/dlls/avifile.dll16/main.c
new file mode 100644
index 0000000..9e1faac
--- /dev/null
+++ b/dlls/avifile.dll16/main.c
@@ -0,0 +1,133 @@
+/*
+ * Wrapper for 16 bit avifile functions
+ *
+ * Copyright 2016 Michael MĂĽller
+ *
+ * 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
+ */
+
+#include "wine/winbase16.h"
+#include "winternl.h"
+#include "wingdi.h"
+#include "vfw.h"
+
+struct frame_wrapper16
+{
+ PGETFRAME pg;
+ PVOID ptr;
+ DWORD size;
+ WORD sel;
+ WORD count;
+};
+
+static void free_segptr_frame(struct frame_wrapper16 *wrapper)
+{
+ int i;
+
+ if (!wrapper->sel)
+ return;
+
+ for (i = 0; i < wrapper->count; i++)
+ FreeSelector16(wrapper->sel + (i << __AHSHIFT));
+
+ wrapper->sel = 0;
+}
+
+static SEGPTR alloc_segptr_frame(struct frame_wrapper16 *wrapper, void *ptr, DWORD size)
+{
+ int i;
+
+ if (wrapper->sel)
+ {
+ if (wrapper->ptr == ptr && wrapper->size == size)
+ return MAKESEGPTR(wrapper->sel, 0);
+ free_segptr_frame(wrapper);
+ }
+
+ wrapper->ptr = ptr;
+ wrapper->size = size;
+ wrapper->count = (size + 0xffff) / 0x10000;
+ wrapper->sel = AllocSelectorArray16(wrapper->count);
+ if (!wrapper->sel)
+ return 0;
+
+ for (i = 0; i < wrapper->count; i++)
+ {
+ SetSelectorBase(wrapper->sel + (i << __AHSHIFT), (DWORD)ptr + i * 0x10000);
+ SetSelectorLimit16(wrapper->sel + (i << __AHSHIFT), size - 1);
+ size -= 0x10000;
+ }
+
+ return MAKESEGPTR(wrapper->sel, 0);
+}
+
+/***********************************************************************
+ * AVIStreamGetFrameOpen (AVIFILE.112)
+ */
+PGETFRAME WINAPI AVIStreamGetFrameOpen16(PAVISTREAM pstream, LPBITMAPINFOHEADER lpbiWanted)
+{
+ struct frame_wrapper16 *wrapper;
+ PGETFRAME pg;
+
+ pg = AVIStreamGetFrameOpen(pstream, lpbiWanted);
+ if (!pg) return NULL;
+
+ wrapper = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*wrapper));
+ if (!wrapper)
+ {
+ AVIStreamGetFrameClose(pg);
+ return NULL;
+ }
+
+ wrapper->pg = pg;
+ return (PGETFRAME)wrapper;
+}
+
+/***********************************************************************
+ * AVIStreamGetFrame (AVIFILE.110)
+ */
+SEGPTR WINAPI AVIStreamGetFrame16(PGETFRAME pg, LONG pos)
+{
+ struct frame_wrapper16 *wrapper = (void *)pg;
+ BITMAPINFOHEADER *bih;
+
+ if (!pg) return 0;
+
+ bih = AVIStreamGetFrame(wrapper->pg, pos);
+ if (bih)
+ {
+ DWORD size = bih->biSize + bih->biSizeImage;
+ return alloc_segptr_frame(wrapper, bih, size);
+ }
+
+ return 0;
+}
+
+
+/***********************************************************************
+ * AVIStreamGetFrameClose (AVIFILE.111)
+ */
+HRESULT WINAPI AVIStreamGetFrameClose16(PGETFRAME pg)
+{
+ struct frame_wrapper16 *wrapper = (void *)pg;
+ HRESULT hr;
+
+ if (!pg) return S_OK;
+
+ hr = AVIStreamGetFrameClose(wrapper->pg);
+ free_segptr_frame(wrapper);
+ HeapFree(GetProcessHeap(), 0, wrapper);
+ return hr;
+}
--
2.9.0

View File

@@ -1,149 +0,0 @@
From b64fdb26c0d998e97f8d4d5193108d92bd0ee0dc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 8 Feb 2016 14:02:09 +0100
Subject: avifile.dll16: Convert between AVISTREAMINFO (16 bit) and
AVISTREAMINFOA.
---
dlls/avifile.dll16/avifile.dll16.spec | 4 +-
dlls/avifile.dll16/main.c | 100 ++++++++++++++++++++++++++++++++++
2 files changed, 102 insertions(+), 2 deletions(-)
diff --git a/dlls/avifile.dll16/avifile.dll16.spec b/dlls/avifile.dll16/avifile.dll16.spec
index 0e19413..7a1aaea 100644
--- a/dlls/avifile.dll16/avifile.dll16.spec
+++ b/dlls/avifile.dll16/avifile.dll16.spec
@@ -36,13 +36,13 @@
141 pascal AVIFileRelease(long) AVIFileRelease
142 pascal AVIFileInfo(long ptr long) AVIFileInfoA
143 pascal AVIFileGetStream(long ptr long long) AVIFileGetStream
-144 pascal AVIFileCreateStream(long ptr ptr) AVIFileCreateStreamA
+144 pascal AVIFileCreateStream(long ptr ptr) AVIFileCreateStream16
146 pascal AVIFileWriteData(long long ptr long) AVIFileWriteData
147 pascal AVIFileReadData(long long ptr ptr) AVIFileReadData
148 pascal AVIFileEndRecord(long) AVIFileEndRecord
160 pascal AVIStreamAddRef(long) AVIStreamAddRef
161 pascal AVIStreamRelease(long) AVIStreamRelease
-162 pascal AVIStreamInfo(long ptr long) AVIStreamInfoA
+162 pascal AVIStreamInfo(long ptr long) AVIStreamInfo16
163 pascal AVIStreamFindSample(long long long) AVIStreamFindSample
164 pascal AVIStreamReadFormat(long long ptr ptr) AVIStreamReadFormat
165 pascal AVIStreamReadData(long long ptr ptr) AVIStreamReadData
diff --git a/dlls/avifile.dll16/main.c b/dlls/avifile.dll16/main.c
index 9e1faac..8bb1769 100644
--- a/dlls/avifile.dll16/main.c
+++ b/dlls/avifile.dll16/main.c
@@ -23,6 +23,27 @@
#include "wingdi.h"
#include "vfw.h"
+typedef struct _AVISTREAMINFO16 {
+ DWORD fccType;
+ DWORD fccHandler;
+ DWORD dwFlags;
+ DWORD dwCaps;
+ WORD wPriority;
+ WORD wLanguage;
+ DWORD dwScale;
+ DWORD dwRate;
+ DWORD dwStart;
+ DWORD dwLength;
+ DWORD dwInitialFrames;
+ DWORD dwSuggestedBufferSize;
+ DWORD dwQuality;
+ DWORD dwSampleSize;
+ RECT16 rcFrame;
+ DWORD dwEditCount;
+ DWORD dwFormatChangeCount;
+ CHAR szName[64];
+} AVISTREAMINFO16, *LPAVISTREAMINFO16, *PAVISTREAMINFO16;
+
struct frame_wrapper16
{
PGETFRAME pg;
@@ -131,3 +152,82 @@ HRESULT WINAPI AVIStreamGetFrameClose16(PGETFRAME pg)
HeapFree(GetProcessHeap(), 0, wrapper);
return hr;
}
+
+/***********************************************************************
+ * AVIFileCreateStream (AVIFILE.144)
+ */
+HRESULT WINAPI AVIFileCreateStream16(PAVIFILE pfile, PAVISTREAM *ppavi, LPAVISTREAMINFO16 asi16)
+{
+ AVISTREAMINFOA asi;
+
+ if (!asi16)
+ return AVIFileCreateStreamA(pfile, ppavi, NULL);
+
+ asi.fccType = asi16->fccType;
+ asi.fccHandler = asi16->fccHandler;
+ asi.dwFlags = asi16->dwFlags;
+ asi.dwCaps = asi16->dwCaps;
+ asi.wPriority = asi16->wPriority;
+ asi.wLanguage = asi16->wLanguage;
+ asi.dwScale = asi16->dwScale;
+ asi.dwRate = asi16->dwRate;
+ asi.dwStart = asi16->dwStart;
+ asi.dwLength = asi16->dwLength;
+ asi.dwInitialFrames = asi16->dwInitialFrames;
+ asi.dwSuggestedBufferSize = asi16->dwSuggestedBufferSize;
+ asi.dwQuality = asi16->dwQuality;
+ asi.dwSampleSize = asi16->dwSampleSize;
+ asi.rcFrame.left = asi16->rcFrame.left;
+ asi.rcFrame.top = asi16->rcFrame.top;
+ asi.rcFrame.right = asi16->rcFrame.right;
+ asi.rcFrame.bottom = asi16->rcFrame.bottom;
+ asi.dwEditCount = asi16->dwEditCount;
+ asi.dwFormatChangeCount = asi16->dwFormatChangeCount;
+ memcpy(&asi.szName, &asi16->szName, sizeof(asi.szName));
+
+ return AVIFileCreateStreamA(pfile, ppavi, &asi);
+}
+
+
+/***********************************************************************
+ * AVIStreamInfo (AVIFILE.162)
+ */
+HRESULT WINAPI AVIStreamInfo16(PAVISTREAM pstream, LPAVISTREAMINFO16 asi16, LONG size)
+{
+ AVISTREAMINFOA asi;
+ HRESULT hr;
+
+ if (!asi16)
+ return AVIStreamInfoA(pstream, NULL, size);
+
+ if (size < sizeof(AVISTREAMINFO16))
+ return AVIERR_BADSIZE;
+
+ hr = AVIStreamInfoA(pstream, &asi, sizeof(asi));
+ if (SUCCEEDED(hr))
+ {
+ asi16->fccType = asi.fccType;
+ asi16->fccHandler = asi.fccHandler;
+ asi16->dwFlags = asi.dwFlags;
+ asi16->dwCaps = asi.dwCaps;
+ asi16->wPriority = asi.wPriority;
+ asi16->wLanguage = asi.wLanguage;
+ asi16->dwScale = asi.dwScale;
+ asi16->dwRate = asi.dwRate;
+ asi16->dwStart = asi.dwStart;
+ asi16->dwLength = asi.dwLength;
+ asi16->dwInitialFrames = asi.dwInitialFrames;
+ asi16->dwSuggestedBufferSize = asi.dwSuggestedBufferSize;
+ asi16->dwQuality = asi.dwQuality;
+ asi16->dwSampleSize = asi.dwSampleSize;
+ asi16->rcFrame.left = asi.rcFrame.left;
+ asi16->rcFrame.top = asi.rcFrame.top;
+ asi16->rcFrame.right = asi.rcFrame.right;
+ asi16->rcFrame.bottom = asi.rcFrame.bottom;
+ asi16->dwEditCount = asi.dwEditCount;
+ asi16->dwFormatChangeCount = asi.dwFormatChangeCount;
+ memcpy(&asi16->szName, &asi.szName, sizeof(asi.szName));
+ }
+
+ return hr;
+}
--
2.9.0

View File

@@ -1,2 +0,0 @@
Fixes: Correctly convert result of AVIStreamGetFrame to a segptr in avifile.dll16
Fixes: Convert between AVISTREAMINFO (16 bit) and AVISTREAMINFOA in avifile.dll16

View File

@@ -0,0 +1,68 @@
From e72b9a5931139e2d4c651e62f9b5ac226af2bedd Mon Sep 17 00:00:00 2001
From: Louis Lenders <xerox.xerox2000x@gmail.com>
Date: Mon, 8 Apr 2019 08:26:43 +0200
Subject: [PATCH 1/2] include: Add restrictederrorinfo.idl.
Signed-off-by: Louis Lenders <xerox.xerox2000x@gmail.com>
---
include/Makefile.in | 1 +
include/restrictederrorinfo.idl | 35 +++++++++++++++++++++++++++++++++++
2 files changed, 36 insertions(+)
create mode 100644 include/restrictederrorinfo.idl
diff --git a/include/Makefile.in b/include/Makefile.in
index b03b967..5bc8dde 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -545,6 +545,7 @@ SOURCES = \
reason.h \
regstr.h \
restartmanager.h \
+ restrictederrorinfo.idl \
richedit.h \
richole.idl \
rmxfguid.h \
diff --git a/include/restrictederrorinfo.idl b/include/restrictederrorinfo.idl
new file mode 100644
index 0000000..e444256
--- /dev/null
+++ b/include/restrictederrorinfo.idl
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2019 Louis Lenders
+ *
+ * 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
+ */
+
+import "oaidl.idl";
+
+[
+ object,
+ uuid(82ba7092-4c88-427d-a7bc-16dd93feb67e),
+ pointer_default(unique)
+]
+interface IRestrictedErrorInfo : IUnknown
+{
+ HRESULT GetErrorDetails (
+ [out] BSTR *desc,
+ [out] HRESULT *error,
+ [out] BSTR *restricted_desc,
+ [out] BSTR *sid);
+
+ HRESULT GetReference ([out] BSTR *reference);
+}
--
1.9.1

View File

@@ -0,0 +1,105 @@
From 61b96f3dab24d3aec26237c8760d75f964474bc5 Mon Sep 17 00:00:00 2001
From: Louis Lenders <xerox.xerox2000x@gmail.com>
Date: Mon, 8 Apr 2019 17:06:58 +0200
Subject: [PATCH 2/2] combase: Add GetRestrictedErrorInfo and
RoOriginateLanguageException stubs.
Signed-off-by: Louis Lenders <xerox.xerox2000x@gmail.com>
---
.../api-ms-win-core-winrt-error-l1-1-0.spec | 2 +-
.../api-ms-win-core-winrt-error-l1-1-1.spec | 4 ++--
dlls/combase/combase.spec | 4 ++--
dlls/combase/roapi.c | 19 +++++++++++++++++++
4 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/dlls/api-ms-win-core-winrt-error-l1-1-0/api-ms-win-core-winrt-error-l1-1-0.spec b/dlls/api-ms-win-core-winrt-error-l1-1-0/api-ms-win-core-winrt-error-l1-1-0.spec
index de0a6d8..99f1ca3 100644
--- a/dlls/api-ms-win-core-winrt-error-l1-1-0/api-ms-win-core-winrt-error-l1-1-0.spec
+++ b/dlls/api-ms-win-core-winrt-error-l1-1-0/api-ms-win-core-winrt-error-l1-1-0.spec
@@ -1,4 +1,4 @@
-@ stub GetRestrictedErrorInfo
+@ stdcall GetRestrictedErrorInfo(ptr) combase.GetRestrictedErrorInfo
@ stub RoCaptureErrorContext
@ stub RoFailFastWithErrorContext
@ stub RoGetErrorReportingFlags
diff --git a/dlls/api-ms-win-core-winrt-error-l1-1-1/api-ms-win-core-winrt-error-l1-1-1.spec b/dlls/api-ms-win-core-winrt-error-l1-1-1/api-ms-win-core-winrt-error-l1-1-1.spec
index b1ad813..0b390f1 100644
--- a/dlls/api-ms-win-core-winrt-error-l1-1-1/api-ms-win-core-winrt-error-l1-1-1.spec
+++ b/dlls/api-ms-win-core-winrt-error-l1-1-1/api-ms-win-core-winrt-error-l1-1-1.spec
@@ -1,4 +1,4 @@
-@ stub GetRestrictedErrorInfo
+@ stdcall GetRestrictedErrorInfo(ptr) combase.GetRestrictedErrorInfo
@ stub IsErrorPropagationEnabled
@ stub RoCaptureErrorContext
@ stub RoClearError
@@ -9,7 +9,7 @@
@ stub RoInspectThreadErrorInfo
@ stub RoOriginateError
@ stub RoOriginateErrorW
-@ stub RoOriginateLanguageException
+@ stdcall RoOriginateLanguageException(long ptr ptr) combase.RoOriginateLanguageException
@ stub RoReportFailedDelegate
@ stub RoReportUnhandledError
@ stub RoResolveRestrictedErrorInfoReference
diff --git a/dlls/combase/combase.spec b/dlls/combase/combase.spec
index 93575d5..f67527a 100644
--- a/dlls/combase/combase.spec
+++ b/dlls/combase/combase.spec
@@ -180,7 +180,7 @@
@ stub GetFuncDescs
@ stdcall GetHGlobalFromStream(ptr ptr) ole32.GetHGlobalFromStream
@ stub GetHookInterface
-@ stub GetRestrictedErrorInfo
+@ stdcall GetRestrictedErrorInfo(ptr)
@ stub HSTRING_UserFree
@ stub HSTRING_UserFree64
@ stub HSTRING_UserMarshal
@@ -260,7 +260,7 @@
@ stub RoInspectThreadErrorInfo
@ stub RoOriginateError
@ stub RoOriginateErrorW
-@ stub RoOriginateLanguageException
+@ stdcall RoOriginateLanguageException(long ptr ptr)
@ stub RoParameterizedTypeExtraGetTypeSignature
@ stdcall RoRegisterActivationFactories(ptr ptr long ptr)
@ stdcall RoRegisterForApartmentShutdown(ptr ptr ptr)
diff --git a/dlls/combase/roapi.c b/dlls/combase/roapi.c
index c9fe80f..2a6dcdf 100644
--- a/dlls/combase/roapi.c
+++ b/dlls/combase/roapi.c
@@ -21,6 +21,7 @@
#include "initguid.h"
#include "roapi.h"
#include "roparameterizediid.h"
+#include "restrictederrorinfo.h"
#include "winstring.h"
#include "wine/debug.h"
@@ -276,6 +277,24 @@ HRESULT WINAPI RoRegisterActivationFactories(HSTRING *classes, PFNGETACTIVATIONF
}
/***********************************************************************
+ * GetRestrictedErrorInfo (combase.@)
+ */
+HRESULT WINAPI GetRestrictedErrorInfo( IRestrictedErrorInfo **info )
+{
+ FIXME( "(%p)\n", info );
+ return E_NOTIMPL;
+}
+
+/***********************************************************************
+ * RoOriginateLanguageException (combase.@)
+ */
+BOOL WINAPI RoOriginateLanguageException( HRESULT error, HSTRING message, IUnknown *language_exception )
+{
+ FIXME("(%x %s %p) stub\n", error, debugstr_hstring(message), language_exception);
+ return FALSE;
+}
+
+/***********************************************************************
* CleanupTlsOleState (combase.@)
*/
void WINAPI CleanupTlsOleState(void *unknown)
--
1.9.1

View File

@@ -0,0 +1 @@
Fixes: [46972] combase: Add GetRestrictedErrorInfo/RoOriginateLanguageException stubs.

View File

@@ -1,140 +0,0 @@
From a26d43a10fb5de70732970b20a29ce4437b33076 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 14 Jan 2017 07:54:39 +0100
Subject: [PATCH] d3d8: Improve ValidatePixelShader stub.
---
dlls/d3d8/d3d8_main.c | 37 +++++++++++++++++--------------------
dlls/d3d8/tests/device.c | 34 ++++++++++++++++++++--------------
2 files changed, 37 insertions(+), 34 deletions(-)
diff --git a/dlls/d3d8/d3d8_main.c b/dlls/d3d8/d3d8_main.c
index 17f35c90..7b28bdf1 100644
--- a/dlls/d3d8/d3d8_main.c
+++ b/dlls/d3d8/d3d8_main.c
@@ -105,39 +105,36 @@ done:
/***********************************************************************
* ValidatePixelShader (D3D8.@)
- *
- * PARAMS
- * toto result?
*/
-HRESULT WINAPI ValidatePixelShader(DWORD* pixelshader, DWORD* reserved1, BOOL boolean, DWORD* toto)
+HRESULT WINAPI ValidatePixelShader(DWORD *pixelshader, DWORD *reserved1, BOOL return_error, char **errors)
{
- HRESULT ret;
- static BOOL warned;
-
- if (TRACE_ON(d3d8) || !warned) {
- FIXME("(%p %p %d %p): stub\n", pixelshader, reserved1, boolean, toto);
- warned = TRUE;
- }
+ const char *message = "";
+ HRESULT hr = E_FAIL;
- if (!pixelshader)
- return E_FAIL;
+ TRACE("(%p %p %d %p): semi-stub\n", pixelshader, reserved1, return_error, errors);
- if (reserved1)
- return E_FAIL;
+ if (!pixelshader)
+ return E_FAIL;
- switch(*pixelshader) {
+ switch (*pixelshader)
+ {
case 0xFFFF0100:
case 0xFFFF0101:
case 0xFFFF0102:
case 0xFFFF0103:
case 0xFFFF0104:
- ret=S_OK;
+ hr = S_OK;
break;
default:
WARN("Invalid shader version token %#x.\n", *pixelshader);
- ret=E_FAIL;
- }
- return ret;
+ message = "(Global Validation Error) Version Token: Unsupported pixel shader version.\n";
+ }
+
+ if (!return_error) message = "";
+ if (errors && (*errors = HeapAlloc(GetProcessHeap(), 0, strlen(message) + 1)))
+ strcpy(*errors, message);
+
+ return hr;
}
void d3d8_resource_cleanup(struct d3d8_resource *resource)
diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c
index 315640d3..6f8354f4 100644
--- a/dlls/d3d8/tests/device.c
+++ b/dlls/d3d8/tests/device.c
@@ -53,7 +53,7 @@ struct device_desc
static DEVMODEW registry_mode;
static HRESULT (WINAPI *ValidateVertexShader)(const DWORD *, const DWORD *, const D3DCAPS8 *, BOOL, char **);
-static HRESULT (WINAPI *ValidatePixelShader)(DWORD *, DWORD *, int, DWORD *);
+static HRESULT (WINAPI *ValidatePixelShader)(DWORD *, DWORD *, BOOL, char **);
static BOOL (WINAPI *pGetCursorInfo)(PCURSORINFO);
@@ -4474,33 +4474,39 @@ static void test_validate_ps(void)
0x00000005, 0x800f0000, 0xb0e40000, 0x80e40000, /* mul r0, t0, r0 */
0x0000ffff, /* end */
};
+ char *errors;
HRESULT hr;
hr = ValidatePixelShader(0, 0, 0, 0);
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
hr = ValidatePixelShader(0, 0, 1, 0);
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
+
+ errors = (void *)0xdeadbeef;
+ hr = ValidatePixelShader(0, 0, 1, &errors);
+ ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
+ ok(errors == (void *)0xdeadbeef, "Expected 0xdeadbeef, got %p.\n", errors);
+
hr = ValidatePixelShader(ps, 0, 0, 0);
ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
-
hr = ValidatePixelShader(ps, 0, 1, 0);
ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
- /* Seems to do some version checking. */
+
*ps = 0xffff0105; /* bogus version */
hr = ValidatePixelShader(ps, 0, 1, 0);
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
- /* I've seen that applications always pass the 2nd parameter as 0.
- * Simple test with a non-zero parameter. */
- *ps = 0xffff0101; /* ps_1_1 */
- hr = ValidatePixelShader(ps, ps, 1, 0);
+
+ errors = (void *)0xdeadbeef;
+ hr = ValidatePixelShader(ps, 0, 0, &errors);
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
- /* I've seen the 3rd parameter always passed as either 0 or 1, but passing
- * other values doesn't seem to hurt. */
- hr = ValidatePixelShader(ps, 0, 12345, 0);
- ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
- /* What is the 4th parameter? The following seems to work ok. */
- hr = ValidatePixelShader(ps, 0, 1, ps);
- ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
+ ok(!strcmp(errors, ""), "Got unexpected string '%s'.\n", errors);
+ HeapFree(GetProcessHeap(), 0, errors);
+
+ errors = (void *)0xdeadbeef;
+ hr = ValidatePixelShader(ps, 0, 1, &errors);
+ ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
+ ok(strstr(errors, "Validation Error") != NULL, "Got unexpected string '%s'.\n", errors);
+ HeapFree(GetProcessHeap(), 0, errors);
}
static void test_volume_get_container(void)
--
2.20.1

View File

@@ -1 +0,0 @@
Fixes: [40036] Improve stubs for Validate{Vertex,Pixel}Shader

Some files were not shown because too many files have changed in this diff Show More