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 | |
---|---|---|---|
|
7397ac1394 | ||
|
6b626b3f42 | ||
|
ec7eae9400 | ||
|
1a199958e7 | ||
|
2bf9187a19 | ||
|
b3eb9ef535 | ||
|
78c9cb74ff | ||
|
b52328c75a | ||
|
00fbf6afc8 | ||
|
1281216a26 | ||
|
dd166155b5 | ||
|
8112d76673 | ||
|
ee44570fb0 | ||
|
3b127e5f51 | ||
|
1e2b0d3e0c | ||
|
a358f0984b | ||
|
c08a9ab0d6 | ||
|
4483c9737e | ||
|
522961364f | ||
|
f8b5d1530a | ||
|
75760561c3 | ||
|
79af70fad1 | ||
|
3bb2024464 | ||
|
2ad4a084dd | ||
|
4465c82831 | ||
|
141b05e4ff | ||
|
50a0e530a8 | ||
|
b3a71a8918 | ||
|
82a0709ef2 | ||
|
bf90df4eed | ||
|
e2e200361f | ||
|
ad962f7d64 | ||
|
d28e0d12bb | ||
|
938ffad317 | ||
|
6b3228a788 | ||
|
6b709dc505 | ||
|
8ca9f08b92 | ||
|
39c7e02819 | ||
|
398d920e3a | ||
|
5a40e8f8b3 | ||
|
d4fa026231 | ||
|
43a640f8fd | ||
|
deb73bfa7c | ||
|
f2fd04974f | ||
|
9961dd76da | ||
|
d86ab36369 | ||
|
034992d90e | ||
|
5b67aa1fc3 | ||
|
d3cebda659 | ||
|
f438f86e52 | ||
|
17396cec6d | ||
|
c4d19a5e32 | ||
|
fbe5fa909a | ||
|
a8ed1e17c2 | ||
|
38d1d5a2fe | ||
|
4a42867417 | ||
|
436e1adc84 | ||
|
c46fab6261 | ||
|
e875860886 | ||
|
a6c6b83eb7 | ||
|
b727968b45 | ||
|
929a758ef4 | ||
|
1b0da6367b | ||
|
515f93534d | ||
|
d95ae10e5a | ||
|
eaf5582379 | ||
|
61c40e8075 | ||
|
89e2d01a1d | ||
|
43c1f6218c | ||
|
69b39e2f8a | ||
|
2260ec5633 | ||
|
3aa3a625e3 | ||
|
b5a323aaa3 | ||
|
0b0ad0faa4 | ||
|
a95641d039 | ||
|
2c23a6155e | ||
|
3ddc7bcaff | ||
|
9f334d5964 | ||
|
d926a91bfa | ||
|
0fabea78c6 | ||
|
50a53675fe | ||
|
ceb2471ad2 | ||
|
3d23048fe4 | ||
|
e1b287d31a | ||
|
af8f18a1f6 | ||
|
002886bffa | ||
|
104c5b24f1 |
@@ -66,7 +66,8 @@ Configuration:
|
||||
|
||||
Backends:
|
||||
--backend=patch Use regular 'patch' utility to apply patches (default)
|
||||
--backend=epatch Use 'epatch' to apply patches (Gentoo only)
|
||||
--backend=eapply Use 'eapply' to apply patches (Gentoo only)
|
||||
--backend=epatch Use 'epatch' to apply patches (Gentoo only, deprecated)
|
||||
--backend=git-am Use 'git am' to apply patches
|
||||
--backend=git-apply Use 'git apply' to apply patches
|
||||
--backend=stg Import the patches using stacked git
|
||||
|
@@ -0,0 +1,25 @@
|
||||
From 1d2744df97beb00c40ae4c9d307334f4fe0c253d Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 31 Jul 2016 00:01:52 +0200
|
||||
Subject: include: Avoid shift overflow warning.
|
||||
|
||||
---
|
||||
include/d3dtypes.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/d3dtypes.h b/include/d3dtypes.h
|
||||
index 75aee55..8a884a8 100644
|
||||
--- a/include/d3dtypes.h
|
||||
+++ b/include/d3dtypes.h
|
||||
@@ -53,7 +53,7 @@ typedef LONG D3DFIXED;
|
||||
#define RGBA_GETRED(rgb) (((rgb) >> 16) & 0xff)
|
||||
#define RGBA_GETGREEN(rgb) (((rgb) >> 8) & 0xff)
|
||||
#define RGBA_GETBLUE(rgb) ((rgb) & 0xff)
|
||||
-#define RGBA_MAKE(r, g, b, a) ((D3DCOLOR) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b)))
|
||||
+#define RGBA_MAKE(r, g, b, a) ((D3DCOLOR) (((DWORD)(a) << 24) | ((r) << 16) | ((g) << 8) | (b)))
|
||||
|
||||
#define D3DRGB(r, g, b) \
|
||||
(0xff000000 | ( ((LONG)((r) * 255)) << 16) | (((LONG)((g) * 255)) << 8) | (LONG)((b) * 255))
|
||||
--
|
||||
2.9.0
|
||||
|
@@ -0,0 +1,277 @@
|
||||
From cb383abcb7d36d739092a93c1f276895622b6806 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 28 Aug 2016 21:56:41 +0200
|
||||
Subject: advapi32: Implement GetExplicitEntriesFromAclW.
|
||||
|
||||
---
|
||||
dlls/advapi32/security.c | 81 ++++++++++++++++++++++-
|
||||
dlls/advapi32/tests/security.c | 142 +++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 221 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
|
||||
index 92a1789..c60aa4e 100644
|
||||
--- a/dlls/advapi32/security.c
|
||||
+++ b/dlls/advapi32/security.c
|
||||
@@ -4202,8 +4202,85 @@ DWORD WINAPI GetExplicitEntriesFromAclA( PACL pacl, PULONG pcCountOfExplicitEntr
|
||||
DWORD WINAPI GetExplicitEntriesFromAclW( PACL pacl, PULONG pcCountOfExplicitEntries,
|
||||
PEXPLICIT_ACCESSW* pListOfExplicitEntries)
|
||||
{
|
||||
- FIXME("%p %p %p\n",pacl, pcCountOfExplicitEntries, pListOfExplicitEntries);
|
||||
- return ERROR_CALL_NOT_IMPLEMENTED;
|
||||
+ ACL_SIZE_INFORMATION sizeinfo;
|
||||
+ EXPLICIT_ACCESSW* entries;
|
||||
+ MAX_SID *sid_entries;
|
||||
+ ACE_HEADER *ace;
|
||||
+ NTSTATUS status;
|
||||
+ int i;
|
||||
+
|
||||
+ FIXME("%p %p %p: semi-stub\n",pacl, pcCountOfExplicitEntries, pListOfExplicitEntries);
|
||||
+
|
||||
+ if (!pcCountOfExplicitEntries || !pListOfExplicitEntries)
|
||||
+ return ERROR_INVALID_PARAMETER;
|
||||
+
|
||||
+ status = RtlQueryInformationAcl(pacl, &sizeinfo, sizeof(sizeinfo), AclSizeInformation);
|
||||
+ if (status) return RtlNtStatusToDosError(status);
|
||||
+
|
||||
+ if (!sizeinfo.AceCount)
|
||||
+ {
|
||||
+ *pcCountOfExplicitEntries = 0;
|
||||
+ *pListOfExplicitEntries = NULL;
|
||||
+ return ERROR_SUCCESS;
|
||||
+ }
|
||||
+
|
||||
+ entries = LocalAlloc(LMEM_FIXED | LMEM_ZEROINIT, (sizeof(EXPLICIT_ACCESSW) + sizeof(MAX_SID)) * sizeinfo.AceCount);
|
||||
+ if (!entries) return ERROR_OUTOFMEMORY;
|
||||
+ sid_entries = (MAX_SID*)((char*)entries + sizeof(EXPLICIT_ACCESSW) * sizeinfo.AceCount);
|
||||
+
|
||||
+ for (i = 0; i < sizeinfo.AceCount; i++)
|
||||
+ {
|
||||
+ status = RtlGetAce(pacl, i, (void**)&ace);
|
||||
+ if (status) goto error;
|
||||
+
|
||||
+ switch (ace->AceType)
|
||||
+ {
|
||||
+ case ACCESS_ALLOWED_ACE_TYPE:
|
||||
+ {
|
||||
+ ACCESS_ALLOWED_ACE *allow = (ACCESS_ALLOWED_ACE *)ace;
|
||||
+ entries[i].grfAccessMode = GRANT_ACCESS;
|
||||
+ entries[i].grfInheritance = ace->AceFlags;
|
||||
+ entries[i].grfAccessPermissions = allow->Mask;
|
||||
+
|
||||
+ CopySid(sizeof(MAX_SID), (PSID)&sid_entries[i], (PSID)&allow->SidStart);
|
||||
+ entries[i].Trustee.pMultipleTrustee = NULL;
|
||||
+ entries[i].Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
|
||||
+ entries[i].Trustee.TrusteeForm = TRUSTEE_IS_SID;
|
||||
+ entries[i].Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN;
|
||||
+ entries[i].Trustee.ptstrName = (WCHAR *)&sid_entries[i];
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ case ACCESS_DENIED_ACE_TYPE:
|
||||
+ {
|
||||
+ ACCESS_DENIED_ACE *deny = (ACCESS_DENIED_ACE *)ace;
|
||||
+ entries[i].grfAccessMode = DENY_ACCESS;
|
||||
+ entries[i].grfInheritance = ace->AceFlags;
|
||||
+ entries[i].grfAccessPermissions = deny->Mask;
|
||||
+
|
||||
+ CopySid(sizeof(MAX_SID), (PSID)&sid_entries[i], (PSID)&deny->SidStart);
|
||||
+ entries[i].Trustee.pMultipleTrustee = NULL;
|
||||
+ entries[i].Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
|
||||
+ entries[i].Trustee.TrusteeForm = TRUSTEE_IS_SID;
|
||||
+ entries[i].Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN;
|
||||
+ entries[i].Trustee.ptstrName = (WCHAR *)&sid_entries[i];
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ default:
|
||||
+ FIXME("Unhandled ace type %d\n", ace->AceType);
|
||||
+ entries[i].grfAccessMode = NOT_USED_ACCESS;
|
||||
+ continue;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ *pcCountOfExplicitEntries = sizeinfo.AceCount;
|
||||
+ *pListOfExplicitEntries = entries;
|
||||
+ return ERROR_SUCCESS;
|
||||
+
|
||||
+error:
|
||||
+ LocalFree(entries);
|
||||
+ return RtlNtStatusToDosError(status);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
|
||||
index cf104ab..2bcb108 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -133,6 +133,7 @@ static BOOL (WINAPI *pGetWindowsAccountDomainSid)(PSID,PSID,DWORD*);
|
||||
static void (WINAPI *pRtlInitAnsiString)(PANSI_STRING,PCSZ);
|
||||
static NTSTATUS (WINAPI *pRtlFreeUnicodeString)(PUNICODE_STRING);
|
||||
static PSID_IDENTIFIER_AUTHORITY (WINAPI *pGetSidIdentifierAuthority)(PSID);
|
||||
+static DWORD (WINAPI *pGetExplicitEntriesFromAclW)(PACL,PULONG,PEXPLICIT_ACCESSW*);
|
||||
|
||||
static HMODULE hmod;
|
||||
static int myARGC;
|
||||
@@ -227,6 +228,7 @@ static void init(void)
|
||||
pGetAce = (void *)GetProcAddress(hmod, "GetAce");
|
||||
pGetWindowsAccountDomainSid = (void *)GetProcAddress(hmod, "GetWindowsAccountDomainSid");
|
||||
pGetSidIdentifierAuthority = (void *)GetProcAddress(hmod, "GetSidIdentifierAuthority");
|
||||
+ pGetExplicitEntriesFromAclW = (void *)GetProcAddress(hmod, "GetExplicitEntriesFromAclW");
|
||||
|
||||
myARGC = winetest_get_mainargs( &myARGV );
|
||||
}
|
||||
@@ -6378,6 +6380,145 @@ static void test_pseudo_tokens(void)
|
||||
"Expected ERROR_NO_TOKEN, got %u\n", GetLastError());
|
||||
}
|
||||
|
||||
+static void test_GetExplicitEntriesFromAclW(void)
|
||||
+{
|
||||
+ static const WCHAR wszCurrentUser[] = { 'C','U','R','R','E','N','T','_','U','S','E','R','\0'};
|
||||
+ SID_IDENTIFIER_AUTHORITY SIDAuthWorld = { SECURITY_WORLD_SID_AUTHORITY };
|
||||
+ SID_IDENTIFIER_AUTHORITY SIDAuthNT = { SECURITY_NT_AUTHORITY };
|
||||
+ PSID everyone_sid = NULL, users_sid = NULL;
|
||||
+ EXPLICIT_ACCESSW access;
|
||||
+ EXPLICIT_ACCESSW *access2;
|
||||
+ PACL new_acl, old_acl = NULL;
|
||||
+ ULONG count;
|
||||
+ DWORD res;
|
||||
+
|
||||
+ if (!pGetExplicitEntriesFromAclW)
|
||||
+ {
|
||||
+ win_skip("GetExplicitEntriesFromAclW is not available\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (!pSetEntriesInAclW)
|
||||
+ {
|
||||
+ win_skip("SetEntriesInAclW is not available\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ old_acl = HeapAlloc(GetProcessHeap(), 0, 256);
|
||||
+ res = InitializeAcl(old_acl, 256, ACL_REVISION);
|
||||
+ if(!res && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
|
||||
+ {
|
||||
+ win_skip("ACLs not implemented - skipping tests\n");
|
||||
+ HeapFree(GetProcessHeap(), 0, old_acl);
|
||||
+ return;
|
||||
+ }
|
||||
+ ok(res, "InitializeAcl failed with error %d\n", GetLastError());
|
||||
+
|
||||
+ res = AllocateAndInitializeSid(&SIDAuthWorld, 1, SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &everyone_sid);
|
||||
+ ok(res, "AllocateAndInitializeSid failed with error %d\n", GetLastError());
|
||||
+
|
||||
+ res = AllocateAndInitializeSid(&SIDAuthNT, 2, SECURITY_BUILTIN_DOMAIN_RID,
|
||||
+ DOMAIN_ALIAS_RID_USERS, 0, 0, 0, 0, 0, 0, &users_sid);
|
||||
+ ok(res, "AllocateAndInitializeSid failed with error %d\n", GetLastError());
|
||||
+
|
||||
+ res = AddAccessAllowedAce(old_acl, ACL_REVISION, KEY_READ, users_sid);
|
||||
+ ok(res, "AddAccessAllowedAce failed with error %d\n", GetLastError());
|
||||
+
|
||||
+ access2 = NULL;
|
||||
+ res = pGetExplicitEntriesFromAclW(old_acl, &count, &access2);
|
||||
+ ok(res == ERROR_SUCCESS, "GetExplicitEntriesFromAclW failed with error %d\n", GetLastError());
|
||||
+ ok(count == 1, "Expected count == 1, got %d\n", count);
|
||||
+ ok(access2[0].grfAccessMode == GRANT_ACCESS, "Expected GRANT_ACCESS, got %d\n", access2[0].grfAccessMode);
|
||||
+ ok(access2[0].grfAccessPermissions == KEY_READ, "Expected KEY_READ, got %d\n", access2[0].grfAccessPermissions);
|
||||
+ ok(access2[0].Trustee.TrusteeForm == TRUSTEE_IS_SID, "Expected SID trustee, got %d\n", access2[0].Trustee.TrusteeForm);
|
||||
+ ok(access2[0].grfInheritance == NO_INHERITANCE, "Expected NO_INHERITANCE, got %x\n", access2[0].grfInheritance);
|
||||
+ ok(EqualSid(access2[0].Trustee.ptstrName, users_sid), "Expected equal SIDs\n");
|
||||
+ LocalFree(access2);
|
||||
+
|
||||
+ access.Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
|
||||
+ access.Trustee.pMultipleTrustee = NULL;
|
||||
+
|
||||
+ access.grfAccessPermissions = KEY_WRITE;
|
||||
+ access.grfAccessMode = GRANT_ACCESS;
|
||||
+ access.grfInheritance = NO_INHERITANCE;
|
||||
+ access.Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP;
|
||||
+ access.Trustee.TrusteeForm = TRUSTEE_IS_SID;
|
||||
+ access.Trustee.ptstrName = everyone_sid;
|
||||
+ res = pSetEntriesInAclW(1, &access, old_acl, &new_acl);
|
||||
+ ok(res == ERROR_SUCCESS, "SetEntriesInAclW failed: %u\n", res);
|
||||
+ ok(new_acl != NULL, "returned acl was NULL\n");
|
||||
+
|
||||
+ access2 = NULL;
|
||||
+ res = pGetExplicitEntriesFromAclW(new_acl, &count, &access2);
|
||||
+ ok(res == ERROR_SUCCESS, "GetExplicitEntriesFromAclW failed with error %d\n", GetLastError());
|
||||
+ ok(count == 2, "Expected count == 2, got %d\n", count);
|
||||
+ ok(access2[0].grfAccessMode == GRANT_ACCESS, "Expected GRANT_ACCESS, got %d\n", access2[0].grfAccessMode);
|
||||
+ ok(access2[0].grfAccessPermissions == KEY_WRITE, "Expected KEY_WRITE, got %d\n", access2[0].grfAccessPermissions);
|
||||
+ ok(access2[0].Trustee.TrusteeType == TRUSTEE_IS_UNKNOWN,
|
||||
+ "Expected TRUSTEE_IS_UNKNOWN trustee type, got %d\n", access2[0].Trustee.TrusteeType);
|
||||
+ ok(access2[0].Trustee.TrusteeForm == TRUSTEE_IS_SID, "Expected SID trustee, got %d\n", access2[0].Trustee.TrusteeForm);
|
||||
+ ok(access2[0].grfInheritance == NO_INHERITANCE, "Expected NO_INHERITANCE, got %x\n", access2[0].grfInheritance);
|
||||
+ ok(EqualSid(access2[0].Trustee.ptstrName, everyone_sid), "Expected equal SIDs\n");
|
||||
+ LocalFree(access2);
|
||||
+ LocalFree(new_acl);
|
||||
+
|
||||
+ access.Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN;
|
||||
+ res = pSetEntriesInAclW(1, &access, old_acl, &new_acl);
|
||||
+ ok(res == ERROR_SUCCESS, "SetEntriesInAclW failed: %u\n", res);
|
||||
+ ok(new_acl != NULL, "returned acl was NULL\n");
|
||||
+
|
||||
+ access2 = NULL;
|
||||
+ res = pGetExplicitEntriesFromAclW(new_acl, &count, &access2);
|
||||
+ ok(res == ERROR_SUCCESS, "GetExplicitEntriesFromAclW failed with error %d\n", GetLastError());
|
||||
+ ok(count == 2, "Expected count == 2, got %d\n", count);
|
||||
+ ok(access2[0].grfAccessMode == GRANT_ACCESS, "Expected GRANT_ACCESS, got %d\n", access2[0].grfAccessMode);
|
||||
+ ok(access2[0].grfAccessPermissions == KEY_WRITE, "Expected KEY_WRITE, got %d\n", access2[0].grfAccessPermissions);
|
||||
+ ok(access2[0].Trustee.TrusteeType == TRUSTEE_IS_UNKNOWN,
|
||||
+ "Expected TRUSTEE_IS_UNKNOWN trustee type, got %d\n", access2[0].Trustee.TrusteeType);
|
||||
+ ok(access2[0].Trustee.TrusteeForm == TRUSTEE_IS_SID, "Expected SID trustee, got %d\n", access2[0].Trustee.TrusteeForm);
|
||||
+ ok(access2[0].grfInheritance == NO_INHERITANCE, "Expected NO_INHERITANCE, got %x\n", access2[0].grfInheritance);
|
||||
+ ok(EqualSid(access2[0].Trustee.ptstrName, everyone_sid), "Expected equal SIDs\n");
|
||||
+ LocalFree(access2);
|
||||
+ LocalFree(new_acl);
|
||||
+
|
||||
+ access.Trustee.TrusteeForm = TRUSTEE_IS_NAME;
|
||||
+ access.Trustee.ptstrName = (LPWSTR)wszCurrentUser;
|
||||
+ res = pSetEntriesInAclW(1, &access, old_acl, &new_acl);
|
||||
+ ok(res == ERROR_SUCCESS, "SetEntriesInAclW failed: %u\n", res);
|
||||
+ ok(new_acl != NULL, "returned acl was NULL\n");
|
||||
+
|
||||
+ access2 = NULL;
|
||||
+ res = pGetExplicitEntriesFromAclW(new_acl, &count, &access2);
|
||||
+ ok(res == ERROR_SUCCESS, "GetExplicitEntriesFromAclW failed with error %d\n", GetLastError());
|
||||
+ ok(count == 2, "Expected count == 2, got %d\n", count);
|
||||
+ ok(access2[0].grfAccessMode == GRANT_ACCESS, "Expected GRANT_ACCESS, got %d\n", access2[0].grfAccessMode);
|
||||
+ ok(access2[0].grfAccessPermissions == KEY_WRITE, "Expected KEY_WRITE, got %d\n", access2[0].grfAccessPermissions);
|
||||
+ ok(access2[0].Trustee.TrusteeType == TRUSTEE_IS_UNKNOWN,
|
||||
+ "Expected TRUSTEE_IS_UNKNOWN trustee type, got %d\n", access2[0].Trustee.TrusteeType);
|
||||
+ ok(access2[0].Trustee.TrusteeForm == TRUSTEE_IS_SID, "Expected SID trustee, got %d\n", access2[0].Trustee.TrusteeForm);
|
||||
+ ok(access2[0].grfInheritance == NO_INHERITANCE, "Expected NO_INHERITANCE, got %x\n", access2[0].grfInheritance);
|
||||
+ LocalFree(access2);
|
||||
+ LocalFree(new_acl);
|
||||
+
|
||||
+ access.grfAccessMode = REVOKE_ACCESS;
|
||||
+ access.Trustee.TrusteeForm = TRUSTEE_IS_SID;
|
||||
+ access.Trustee.ptstrName = users_sid;
|
||||
+ res = pSetEntriesInAclW(1, &access, old_acl, &new_acl);
|
||||
+ ok(res == ERROR_SUCCESS, "SetEntriesInAclW failed: %u\n", res);
|
||||
+ ok(new_acl != NULL, "returned acl was NULL\n");
|
||||
+
|
||||
+ access2 = (void *)0xdeadbeef;
|
||||
+ res = pGetExplicitEntriesFromAclW(new_acl, &count, &access2);
|
||||
+ ok(res == ERROR_SUCCESS, "GetExplicitEntriesFromAclW failed with error %d\n", GetLastError());
|
||||
+ ok(count == 0, "Expected count == 0, got %d\n", count);
|
||||
+ ok(access2 == NULL, "access2 was not NULL\n");
|
||||
+ LocalFree(new_acl);
|
||||
+
|
||||
+ FreeSid(users_sid);
|
||||
+ FreeSid(everyone_sid);
|
||||
+ HeapFree(GetProcessHeap(), 0, old_acl);
|
||||
+}
|
||||
+
|
||||
START_TEST(security)
|
||||
{
|
||||
init();
|
||||
@@ -6424,4 +6565,5 @@ START_TEST(security)
|
||||
test_system_security_access();
|
||||
test_GetSidIdentifierAuthority();
|
||||
test_pseudo_tokens();
|
||||
+ test_GetExplicitEntriesFromAclW();
|
||||
}
|
||||
--
|
||||
2.9.0
|
||||
|
1
patches/advapi32-GetExplicitEntriesFromAclW/definition
Normal file
1
patches/advapi32-GetExplicitEntriesFromAclW/definition
Normal file
@@ -0,0 +1 @@
|
||||
Fixes: Implement semi-stub for advapi32.GetExplicitEntriesFromAclW
|
@@ -1,4 +1,4 @@
|
||||
From cee15830660362c97d886ab9cc4e9a535b65491a Mon Sep 17 00:00:00 2001
|
||||
From 8467721c604c1ed81f31b6675b143e98321b368b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 15 Jan 2016 13:01:15 +0100
|
||||
Subject: kernelbase: Add dll and add stub for QuirkIsEnabled.
|
||||
@@ -22,7 +22,7 @@ index b9caed0..2beb34b 100644
|
||||
+C_SRCS = \
|
||||
+ misc.c
|
||||
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
|
||||
index 53ed586..8fdb80d 100644
|
||||
index f104030..8e62b4a 100644
|
||||
--- a/dlls/kernelbase/kernelbase.spec
|
||||
+++ b/dlls/kernelbase/kernelbase.spec
|
||||
@@ -1,3 +1,6 @@
|
||||
@@ -224,7 +224,7 @@ index 53ed586..8fdb80d 100644
|
||||
+@ stub CreateProcessInternalW
|
||||
+@ stdcall CreateProcessW(wstr wstr ptr ptr long long ptr wstr ptr ptr) kernel32.CreateProcessW
|
||||
@ stdcall CreateRemoteThread(long ptr long ptr long long ptr) kernel32.CreateRemoteThread
|
||||
@ stub CreateRemoteThreadEx
|
||||
@ stdcall CreateRemoteThreadEx(long ptr long ptr long long ptr ptr) kernel32.CreateRemoteThreadEx
|
||||
@ stdcall CreateRestrictedToken(long long long ptr long ptr long ptr ptr) advapi32.CreateRestrictedToken
|
||||
@ stdcall CreateSemaphoreExW(ptr long long wstr long long) kernel32.CreateSemaphoreExW
|
||||
+@ stdcall CreateSemaphoreW(ptr long long wstr) kernel32.CreateSemaphoreW
|
||||
@@ -250,7 +250,7 @@ index 53ed586..8fdb80d 100644
|
||||
@ stdcall DebugBreak() kernel32.DebugBreak
|
||||
@ stdcall DecodePointer(ptr) kernel32.DecodePointer
|
||||
+@ stub DecodeRemotePointer
|
||||
@ stub DecodeSystemPointer
|
||||
@ stdcall DecodeSystemPointer(ptr) kernel32.DecodeSystemPointer
|
||||
@ stdcall DefineDosDeviceW(long wstr wstr) kernel32.DefineDosDeviceW
|
||||
+@ stdcall DelayLoadFailureHook(str str) kernel32.DelayLoadFailureHook
|
||||
+@ stub DelayLoadFailureHookLookup
|
||||
@@ -260,7 +260,7 @@ index 53ed586..8fdb80d 100644
|
||||
+@ stdcall DeleteFiber(ptr) kernel32.DeleteFiber
|
||||
@ stdcall DeleteFileA(str) kernel32.DeleteFileA
|
||||
@ stdcall DeleteFileW(wstr) kernel32.DeleteFileW
|
||||
@ stub DeleteProcThreadAttributeList
|
||||
@ stdcall DeleteProcThreadAttributeList(ptr) kernel32.DeleteProcThreadAttributeList
|
||||
+@ stub DeleteStateAtomValue
|
||||
+@ stub DeleteStateContainer
|
||||
+@ stub DeleteStateContainerValue
|
||||
@@ -294,7 +294,7 @@ index 53ed586..8fdb80d 100644
|
||||
+@ stub EmptyWorkingSet
|
||||
@ stdcall EncodePointer(ptr) kernel32.EncodePointer
|
||||
+@ stub EncodeRemotePointer
|
||||
@ stub EncodeSystemPointer
|
||||
@ stdcall EncodeSystemPointer(ptr) kernel32.EncodeSystemPointer
|
||||
+@ stub EnterCriticalPolicySectionInternal
|
||||
@ stdcall EnterCriticalSection(ptr) kernel32.EnterCriticalSection
|
||||
+@ stub EnterSynchronizationBarrier
|
||||
@@ -533,7 +533,7 @@ index 53ed586..8fdb80d 100644
|
||||
+@ stub GetHivePath
|
||||
+@ stub GetIntegratedDisplaySize
|
||||
@ stdcall GetKernelObjectSecurity(long long ptr long ptr) advapi32.GetKernelObjectSecurity
|
||||
+@ stub GetLargePageMinimum
|
||||
+@ stdcall GetLargePageMinimum() kernel32.GetLargePageMinimum
|
||||
+@ stdcall GetLargestConsoleWindowSize(long) kernel32.GetLargestConsoleWindowSize
|
||||
@ stdcall GetLastError() kernel32.GetLastError
|
||||
@ stdcall GetLengthSid(ptr) advapi32.GetLengthSid
|
||||
@@ -567,7 +567,7 @@ index 53ed586..8fdb80d 100644
|
||||
+@ stub GetNextFgPolicyRefreshInfoInternal
|
||||
+@ stdcall GetNumaHighestNodeNumber(ptr) kernel32.GetNumaHighestNodeNumber
|
||||
+@ stub GetNumaNodeProcessorMaskEx
|
||||
@ stub GetNumberFormatEx
|
||||
@ stdcall GetNumberFormatEx(wstr long wstr ptr ptr long) kernel32.GetNumberFormatEx
|
||||
@ stdcall GetNumberFormatW(long long wstr ptr ptr long) kernel32.GetNumberFormatW
|
||||
+@ stdcall GetNumberOfConsoleInputEvents(long ptr) kernel32.GetNumberOfConsoleInputEvents
|
||||
@ stdcall GetOEMCP() kernel32.GetOEMCP
|
||||
@@ -782,7 +782,7 @@ index 53ed586..8fdb80d 100644
|
||||
@ stdcall InitializeCriticalSection(ptr) kernel32.InitializeCriticalSection
|
||||
@ stdcall InitializeCriticalSectionAndSpinCount(ptr long) kernel32.InitializeCriticalSectionAndSpinCount
|
||||
@ stdcall InitializeCriticalSectionEx(ptr long long) kernel32.InitializeCriticalSectionEx
|
||||
@ stub InitializeProcThreadAttributeList
|
||||
@ stdcall InitializeProcThreadAttributeList(ptr long long ptr) kernel32.InitializeProcThreadAttributeList
|
||||
+@ stub InitializeProcessForWsWatch
|
||||
@ stdcall InitializeSListHead(ptr) kernel32.InitializeSListHead
|
||||
@ stdcall InitializeSRWLock(ptr) kernel32.InitializeSRWLock
|
||||
@@ -1379,7 +1379,7 @@ index 53ed586..8fdb80d 100644
|
||||
@ stdcall SetCriticalSectionSpinCount(ptr long) kernel32.SetCriticalSectionSpinCount
|
||||
@ stdcall SetCurrentDirectoryA(str) kernel32.SetCurrentDirectoryA
|
||||
@ stdcall SetCurrentDirectoryW(wstr) kernel32.SetCurrentDirectoryW
|
||||
@ stub SetDefaultDllDirectories
|
||||
@ stdcall SetDefaultDllDirectories(long) kernel32.SetDefaultDllDirectories
|
||||
+@ stub SetDynamicTimeZoneInformation
|
||||
@ stdcall SetEndOfFile(long) kernel32.SetEndOfFile
|
||||
@ stub SetEnvironmentStringsW
|
||||
@@ -1577,7 +1577,7 @@ index 53ed586..8fdb80d 100644
|
||||
+@ stub UnsubscribeStateChangeNotification
|
||||
+@ stub UpdatePackageStatus
|
||||
+@ stub UpdatePackageStatusForUser
|
||||
@ stub UpdateProcThreadAttribute
|
||||
@ stdcall UpdateProcThreadAttribute(ptr long long ptr long ptr ptr) kernel32.UpdateProcThreadAttribute
|
||||
+@ stdcall UrlApplySchemeA(str ptr ptr long) shlwapi.UrlApplySchemeA
|
||||
+@ stdcall UrlApplySchemeW(wstr ptr ptr long) shlwapi.UrlApplySchemeW
|
||||
+@ stdcall UrlCanonicalizeA(str ptr ptr long) shlwapi.UrlCanonicalizeA
|
||||
@@ -1770,17 +1770,17 @@ index 6b6ead2..7c2a9d1 100644
|
||||
422 stdcall -noname SHGlobalCounterCreateNamedA(str long)
|
||||
423 stdcall -noname SHGlobalCounterCreateNamedW(wstr long)
|
||||
diff --git a/tools/make_specfiles b/tools/make_specfiles
|
||||
index 774687e..7c097c4 100755
|
||||
index f3b5c5e..8a7e514 100755
|
||||
--- a/tools/make_specfiles
|
||||
+++ b/tools/make_specfiles
|
||||
@@ -232,6 +232,7 @@ my @dll_groups =
|
||||
@@ -230,6 +230,7 @@ my @dll_groups =
|
||||
[
|
||||
"kernel32",
|
||||
"advapi32",
|
||||
+ "shlwapi",
|
||||
"user32",
|
||||
"kernelbase",
|
||||
],
|
||||
"api-ms-win-core-bem-l1-1-0",
|
||||
--
|
||||
2.7.1
|
||||
2.9.0
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 2f51e46724cd93eedfa9024dc3f88bfdd2eb3172 Mon Sep 17 00:00:00 2001
|
||||
From 88298227180510b5eee8b129ae964f14bf565d64 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 15 Jan 2016 13:07:09 +0100
|
||||
Subject: api-ms-win-core-quirks-l1-1-0: Add dll.
|
||||
@@ -13,17 +13,17 @@ Subject: api-ms-win-core-quirks-l1-1-0: Add dll.
|
||||
create mode 100644 dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 7374b74..1cf8036 100644
|
||||
index e97cd17..6d51b3f 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -2729,6 +2729,7 @@ WINE_CONFIG_DLL(api-ms-win-core-processthreads-l1-1-1)
|
||||
@@ -2717,6 +2717,7 @@ WINE_CONFIG_DLL(api-ms-win-core-processthreads-l1-1-1)
|
||||
WINE_CONFIG_DLL(api-ms-win-core-processthreads-l1-1-2)
|
||||
WINE_CONFIG_DLL(api-ms-win-core-profile-l1-1-0)
|
||||
WINE_CONFIG_DLL(api-ms-win-core-psapi-l1-1-0)
|
||||
+WINE_CONFIG_DLL(api-ms-win-core-quirks-l1-1-0)
|
||||
WINE_CONFIG_DLL(api-ms-win-core-realtime-l1-1-0)
|
||||
WINE_CONFIG_DLL(api-ms-win-core-registry-l1-1-0)
|
||||
WINE_CONFIG_DLL(api-ms-win-core-rtlsupport-l1-1-0)
|
||||
WINE_CONFIG_DLL(api-ms-win-core-rtlsupport-l1-2-0)
|
||||
WINE_CONFIG_DLL(api-ms-win-core-registryuserspecific-l1-1-0)
|
||||
diff --git a/dlls/api-ms-win-core-quirks-l1-1-0/Makefile.in b/dlls/api-ms-win-core-quirks-l1-1-0/Makefile.in
|
||||
new file mode 100644
|
||||
index 0000000..9486e8b
|
||||
@@ -46,11 +46,11 @@ index 0000000..54ce373
|
||||
+@ stub QuirkIsEnabledForPackage2
|
||||
+@ stub QuirkIsEnabledForProcess
|
||||
diff --git a/tools/make_specfiles b/tools/make_specfiles
|
||||
index 572c0b8..e62c2cd 100755
|
||||
index 8a7e514..3316f76 100755
|
||||
--- a/tools/make_specfiles
|
||||
+++ b/tools/make_specfiles
|
||||
@@ -225,6 +225,10 @@ my @dll_groups =
|
||||
"kernelbase",
|
||||
@@ -236,6 +236,10 @@ my @dll_groups =
|
||||
"api-ms-win-core-bem-l1-1-0",
|
||||
],
|
||||
[
|
||||
+ "kernelbase",
|
||||
@@ -61,5 +61,5 @@ index 572c0b8..e62c2cd 100755
|
||||
"api-ms-win-downlevel-ole32-l1-1-0",
|
||||
"api-ms-win-core-com-l1-1-0",
|
||||
--
|
||||
2.6.4
|
||||
2.9.0
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user