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
87 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
3134cc0b2d | ||
|
1308207a63 | ||
|
082a898ad4 | ||
|
992845eae7 | ||
|
247e77f2e8 | ||
|
76004cd4c4 | ||
|
770269393f | ||
|
29db3393bc | ||
|
b105021410 | ||
|
5f18c8565c | ||
|
f0f856a7ea | ||
|
7332164d55 | ||
|
0a153ac1a0 | ||
|
90ef849e7b | ||
|
9bfe1fe1f2 | ||
|
b1997e35c9 | ||
|
8cbbf850d1 | ||
|
dc2e2153f3 | ||
|
d6ab62c2be | ||
|
a3faa8ac8a | ||
|
c9f414b9e7 | ||
|
57370fd9ae | ||
|
7d9b7bbdf5 | ||
|
05f918ddb4 | ||
|
133bed10d3 | ||
|
00b434ec7f | ||
|
8f33477760 | ||
|
c48811407e | ||
|
547e7c81fb | ||
|
99d6f16c4e | ||
|
2e99ff1d6e | ||
|
a9282e6425 | ||
|
63eedc8289 | ||
|
fea87f9a23 | ||
|
f883c66e40 | ||
|
d8568c947a | ||
|
f61fe9f16b | ||
|
4969e2759b | ||
|
4423ea716e | ||
|
38c1f5e4d5 | ||
|
4e7071e4f1 | ||
|
a0708adf42 | ||
|
9e53a45319 | ||
|
7cc69d7707 | ||
|
39738f05d6 | ||
|
477e9faba2 | ||
|
6f1e25e1c0 | ||
|
36e84f2951 | ||
|
bfd8af12aa | ||
|
cbb09031a6 | ||
|
3f8edce509 | ||
|
56174c3307 | ||
|
a36ea2ace3 | ||
|
8f56ffcf57 | ||
|
d0190e3ade | ||
|
72a13348de | ||
|
a8556b9c25 | ||
|
52a77f6b00 | ||
|
be0910e9a9 | ||
|
270b403c6d | ||
|
4ea094eddb | ||
|
0e7183639d | ||
|
ac1bb98de4 | ||
|
bfdd49203c | ||
|
1773e25340 | ||
|
553986fdfb | ||
|
8ce5fe8929 | ||
|
8b930aea2f | ||
|
e20fec1c52 | ||
|
6f3a3b40aa | ||
|
1184d64c71 | ||
|
e2c7fb5bb6 | ||
|
85ba5095c8 | ||
|
cf0a72b3aa | ||
|
f7bee23139 | ||
|
7ba10a3ef2 | ||
|
8f51d290fd | ||
|
271835fcdd | ||
|
a02caca06d | ||
|
0d4d90ee80 | ||
|
d963a250c9 | ||
|
d82dea3b21 | ||
|
055e049821 | ||
|
5ffc00de0a | ||
|
8e6af31b99 | ||
|
18e878bc40 | ||
|
4c19e3f8e1 |
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -1,38 +0,0 @@
|
||||
From 5487b4720e24aaa7a10719fc36bc23c851a48a9b Mon Sep 17 00:00:00 2001
|
||||
From: Qian Hong <qhong@codeweavers.com>
|
||||
Date: Tue, 28 Apr 2015 22:35:26 +0800
|
||||
Subject: server: Create primary group using DOMAIN_GROUP_RID_USERS.
|
||||
|
||||
---
|
||||
dlls/advapi32/tests/security.c | 2 +-
|
||||
server/token.c | 1 +
|
||||
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
|
||||
index 25b34ba4..573119f 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -2591,7 +2591,7 @@ static void test_process_security(void)
|
||||
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");
|
||||
+ ok(EqualPrefixSid(UsersSid, UserSid), "TokenPrimaryGroup Sid and TokenUser Sid don't match.\n");
|
||||
|
||||
CloseHandle( token );
|
||||
if (!res)
|
||||
diff --git a/server/token.c b/server/token.c
|
||||
index e57cbc6..be8c53b 100644
|
||||
--- a/server/token.c
|
||||
+++ b/server/token.c
|
||||
@@ -695,6 +695,7 @@ struct token *token_create_admin( void )
|
||||
{ security_local_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY },
|
||||
{ security_interactive_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY },
|
||||
{ security_authenticated_user_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY },
|
||||
+ { security_domain_users_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY|SE_GROUP_OWNER },
|
||||
{ alias_admins_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY|SE_GROUP_OWNER },
|
||||
{ alias_users_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY },
|
||||
{ logon_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY|SE_GROUP_LOGON_ID },
|
||||
--
|
||||
2.3.5
|
||||
|
@@ -1 +0,0 @@
|
||||
Depends: server-Misc_ACL
|
||||
|
@@ -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
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: [41591] advapi32: Add RegLoadAppKeyA/RegLoadAppKeyW stubs
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: [38423] Fix the initialization of combined DACLs when the new DACL is empty
|
@@ -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 );
|
||||
}
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -1,141 +0,0 @@
|
||||
From 23ce6bcd9ebd67d6b5ed991bad555ecbc014a08d 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:55:07 +0100
|
||||
Subject: avifil32: Correctly handle compressed frames when desired format is
|
||||
specified.
|
||||
|
||||
---
|
||||
dlls/avifil32/getframe.c | 102 +++++++++++++++++++++++------------------------
|
||||
1 file changed, 50 insertions(+), 52 deletions(-)
|
||||
|
||||
diff --git a/dlls/avifil32/getframe.c b/dlls/avifil32/getframe.c
|
||||
index 46b1683..7d98d2e 100644
|
||||
--- a/dlls/avifil32/getframe.c
|
||||
+++ b/dlls/avifil32/getframe.c
|
||||
@@ -406,8 +406,6 @@ static HRESULT WINAPI IGetFrame_fnSetFormat(IGetFrame *iface,
|
||||
lpbi->biSize + lpbi->biClrUsed * sizeof(RGBQUAD));
|
||||
if (lpbi->biBitCount <= 8)
|
||||
ICDecompressGetPalette(This->hic, This->lpInFormat, This->lpOutFormat);
|
||||
-
|
||||
- return AVIERR_OK;
|
||||
} else {
|
||||
if (bBestDisplay) {
|
||||
ICGetDisplayFormat(This->hic, This->lpInFormat,
|
||||
@@ -417,64 +415,64 @@ static HRESULT WINAPI IGetFrame_fnSetFormat(IGetFrame *iface,
|
||||
AVIFILE_CloseCompressor(This);
|
||||
return AVIERR_NOCOMPRESSOR;
|
||||
}
|
||||
+ }
|
||||
|
||||
- /* check output format */
|
||||
- if (This->lpOutFormat->biClrUsed == 0 &&
|
||||
- This->lpOutFormat->biBitCount <= 8)
|
||||
- This->lpOutFormat->biClrUsed = 1u << This->lpOutFormat->biBitCount;
|
||||
- if (This->lpOutFormat->biSizeImage == 0 &&
|
||||
- This->lpOutFormat->biCompression == BI_RGB) {
|
||||
- This->lpOutFormat->biSizeImage =
|
||||
- DIBWIDTHBYTES(*This->lpOutFormat) * This->lpOutFormat->biHeight;
|
||||
- }
|
||||
+ /* check output format */
|
||||
+ if (This->lpOutFormat->biClrUsed == 0 &&
|
||||
+ This->lpOutFormat->biBitCount <= 8)
|
||||
+ This->lpOutFormat->biClrUsed = 1u << This->lpOutFormat->biBitCount;
|
||||
+ if (This->lpOutFormat->biSizeImage == 0 &&
|
||||
+ This->lpOutFormat->biCompression == BI_RGB) {
|
||||
+ This->lpOutFormat->biSizeImage =
|
||||
+ DIBWIDTHBYTES(*This->lpOutFormat) * This->lpOutFormat->biHeight;
|
||||
+ }
|
||||
|
||||
- if (lpBits == NULL) {
|
||||
- DWORD size = This->lpOutFormat->biClrUsed * sizeof(RGBQUAD);
|
||||
+ if (lpBits == NULL) {
|
||||
+ DWORD size = This->lpOutFormat->biClrUsed * sizeof(RGBQUAD);
|
||||
|
||||
- size += This->lpOutFormat->biSize + This->lpOutFormat->biSizeImage;
|
||||
- This->lpOutFormat = HeapReAlloc(GetProcessHeap(), 0, This->lpOutFormat, size);
|
||||
- if (This->lpOutFormat == NULL) {
|
||||
- AVIFILE_CloseCompressor(This);
|
||||
- return AVIERR_MEMORY;
|
||||
- }
|
||||
- This->lpOutBuffer = DIBPTR(This->lpOutFormat);
|
||||
- } else
|
||||
- This->lpOutBuffer = lpBits;
|
||||
-
|
||||
- /* for user size was irrelevant */
|
||||
- if (dx == -1)
|
||||
- dx = This->lpOutFormat->biWidth;
|
||||
- if (dy == -1)
|
||||
- dy = This->lpOutFormat->biHeight;
|
||||
-
|
||||
- /* need to resize? */
|
||||
- if (x != 0 || y != 0) {
|
||||
- if (dy == This->lpOutFormat->biHeight &&
|
||||
- dx == This->lpOutFormat->biWidth)
|
||||
- This->bResize = FALSE;
|
||||
- else
|
||||
- This->bResize = TRUE;
|
||||
+ size += This->lpOutFormat->biSize + This->lpOutFormat->biSizeImage;
|
||||
+ This->lpOutFormat = HeapReAlloc(GetProcessHeap(), 0, This->lpOutFormat, size);
|
||||
+ if (This->lpOutFormat == NULL) {
|
||||
+ AVIFILE_CloseCompressor(This);
|
||||
+ return AVIERR_MEMORY;
|
||||
}
|
||||
+ This->lpOutBuffer = DIBPTR(This->lpOutFormat);
|
||||
+ } else
|
||||
+ This->lpOutBuffer = lpBits;
|
||||
+
|
||||
+ /* for user size was irrelevant */
|
||||
+ if (dx == -1)
|
||||
+ dx = This->lpOutFormat->biWidth;
|
||||
+ if (dy == -1)
|
||||
+ dy = This->lpOutFormat->biHeight;
|
||||
+
|
||||
+ /* need to resize? */
|
||||
+ if (x != 0 || y != 0) {
|
||||
+ if (dy == This->lpOutFormat->biHeight &&
|
||||
+ dx == This->lpOutFormat->biWidth)
|
||||
+ This->bResize = FALSE;
|
||||
+ else
|
||||
+ This->bResize = TRUE;
|
||||
+ }
|
||||
|
||||
- if (This->bResize) {
|
||||
- This->x = x;
|
||||
- This->y = y;
|
||||
- This->dx = dx;
|
||||
- This->dy = dy;
|
||||
-
|
||||
- if (ICDecompressExBegin(This->hic,0,This->lpInFormat,This->lpInBuffer,0,
|
||||
- 0,This->lpInFormat->biWidth,
|
||||
- This->lpInFormat->biHeight,This->lpOutFormat,
|
||||
- This->lpOutBuffer, x, y, dx, dy) == ICERR_OK)
|
||||
- return AVIERR_OK;
|
||||
- } else if (ICDecompressBegin(This->hic, This->lpInFormat,
|
||||
- This->lpOutFormat) == ICERR_OK)
|
||||
+ if (This->bResize) {
|
||||
+ This->x = x;
|
||||
+ This->y = y;
|
||||
+ This->dx = dx;
|
||||
+ This->dy = dy;
|
||||
+
|
||||
+ if (ICDecompressExBegin(This->hic,0,This->lpInFormat,This->lpInBuffer,0,
|
||||
+ 0,This->lpInFormat->biWidth,
|
||||
+ This->lpInFormat->biHeight,This->lpOutFormat,
|
||||
+ This->lpOutBuffer, x, y, dx, dy) == ICERR_OK)
|
||||
return AVIERR_OK;
|
||||
+ } else if (ICDecompressBegin(This->hic, This->lpInFormat,
|
||||
+ This->lpOutFormat) == ICERR_OK)
|
||||
+ return AVIERR_OK;
|
||||
|
||||
- AVIFILE_CloseCompressor(This);
|
||||
+ AVIFILE_CloseCompressor(This);
|
||||
|
||||
- return AVIERR_COMPRESSOR;
|
||||
- }
|
||||
+ return AVIERR_COMPRESSOR;
|
||||
}
|
||||
|
||||
static const struct IGetFrameVtbl igetframeVtbl = {
|
||||
--
|
||||
2.7.0
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: Correctly handle compressed frames when desired format is specified
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
@@ -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
|
||||
|
@@ -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
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user