Zebediah Figura : advapi32/tests: Explicitly test the ACL contents in test_AddMandatoryAce().
Alexandre Julliard
julliard at winehq.org
Tue Feb 16 16:03:18 CST 2021
Module: wine
Branch: master
Commit: f6a723f1214a55a03c613ab1c195e9b79e437263
URL: https://source.winehq.org/git/wine.git/?a=commit;h=f6a723f1214a55a03c613ab1c195e9b79e437263
Author: Zebediah Figura <z.figura12 at gmail.com>
Date: Mon Feb 15 19:50:53 2021 -0600
advapi32/tests: Explicitly test the ACL contents in test_AddMandatoryAce().
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/advapi32/tests/security.c | 69 +++++++++++++++++++-----------------------
1 file changed, 31 insertions(+), 38 deletions(-)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index d9849f44c9a..75217524315 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -6395,13 +6395,13 @@ static void test_AddMandatoryAce(void)
static SID_IDENTIFIER_AUTHORITY sia_world = {SECURITY_WORLD_SID_AUTHORITY};
char buffer_sd[SECURITY_DESCRIPTOR_MIN_LENGTH];
SECURITY_DESCRIPTOR *sd2, *sd = (SECURITY_DESCRIPTOR *)&buffer_sd;
- BOOL defaulted, present, ret, found, found2;
+ BOOL defaulted, present, ret;
ACL_SIZE_INFORMATION acl_size_info;
SYSTEM_MANDATORY_LABEL_ACE *ace;
char buffer_acl[256];
ACL *acl = (ACL *)&buffer_acl;
SECURITY_ATTRIBUTES sa;
- DWORD index, size;
+ DWORD size;
HANDLE handle;
SID *everyone;
ACL *sacl;
@@ -6453,18 +6453,17 @@ static void test_AddMandatoryAce(void)
ret = pAddMandatoryAce(acl, ACL_REVISION, 0, SYSTEM_MANDATORY_LABEL_NO_WRITE_UP, &low_level);
ok(ret, "AddMandatoryAce failed with %u\n", GetLastError());
- index = 0;
- found = FALSE;
- while (GetAce(acl, index++, (void **)&ace))
- {
- if (ace->Header.AceType != SYSTEM_MANDATORY_LABEL_ACE_TYPE) continue;
- ok(ace->Header.AceFlags == 0, "Expected flags 0, got %x\n", ace->Header.AceFlags);
- ok(ace->Mask == SYSTEM_MANDATORY_LABEL_NO_WRITE_UP,
- "Expected mask SYSTEM_MANDATORY_LABEL_NO_WRITE_UP, got %x\n", ace->Mask);
- ok(EqualSid(&ace->SidStart, &low_level), "Expected low integrity level\n");
- found = TRUE;
- }
- ok(found, "Could not find mandatory label ace\n");
+ ret = GetAce(acl, 0, (void **)&ace);
+ ok(ret, "got error %u\n", GetLastError());
+ ok(ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE, "got type %#x\n", ace->Header.AceType);
+ ok(!ace->Header.AceFlags, "got flags %#x\n", ace->Header.AceFlags);
+ ok(ace->Mask == SYSTEM_MANDATORY_LABEL_NO_WRITE_UP, "got mask %#x\n", ace->Mask);
+ ok(EqualSid(&ace->SidStart, &low_level), "wrong sid\n");
+
+ SetLastError(0xdeadbeef);
+ ret = GetAce(acl, 1, (void **)&ace);
+ ok(!ret, "expected failure\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER, "got error %u\n", GetLastError());
ret = SetSecurityDescriptorSacl(sd, TRUE, acl, FALSE);
ok(ret, "SetSecurityDescriptorSacl failed with error %u\n", GetLastError());
@@ -6525,30 +6524,24 @@ static void test_AddMandatoryAce(void)
ok(sacl->AceCount == 2, "Expected 2 ACEs, got %d\n", sacl->AceCount);
ok(!defaulted, "SACL defaulted\n");
- index = 0;
- found = found2 = FALSE;
- while (GetAce(sacl, index++, (void **)&ace))
- {
- if (ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE)
- {
- if (EqualSid(&ace->SidStart, &low_level))
- {
- found = TRUE;
- ok(!ace->Header.AceFlags, "Expected 0 as flags, got %#x\n", ace->Header.AceFlags);
- ok(ace->Mask == SYSTEM_MANDATORY_LABEL_NO_WRITE_UP,
- "Expected SYSTEM_MANDATORY_LABEL_NO_WRITE_UP as mask, got %#x\n", ace->Mask);
- }
- if (EqualSid(&ace->SidStart, &medium_level))
- {
- found2 = TRUE;
- ok(!ace->Header.AceFlags, "Expected 0 as flags, got %#x\n", ace->Header.AceFlags);
- ok(ace->Mask == SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP,
- "Expected SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP as mask, got %#x\n", ace->Mask);
- }
- }
- }
- ok(found, "Could not find low mandatory label\n");
- ok(found2, "Could not find medium mandatory label\n");
+ ret = GetAce(acl, 0, (void **)&ace);
+ ok(ret, "got error %u\n", GetLastError());
+ ok(ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE, "got type %#x\n", ace->Header.AceType);
+ ok(!ace->Header.AceFlags, "got flags %#x\n", ace->Header.AceFlags);
+ ok(ace->Mask == SYSTEM_MANDATORY_LABEL_NO_WRITE_UP, "got mask %#x\n", ace->Mask);
+ ok(EqualSid(&ace->SidStart, &low_level), "wrong sid\n");
+
+ ret = GetAce(acl, 1, (void **)&ace);
+ ok(ret, "got error %u\n", GetLastError());
+ ok(ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE, "got type %#x\n", ace->Header.AceType);
+ ok(!ace->Header.AceFlags, "got flags %#x\n", ace->Header.AceFlags);
+ ok(ace->Mask == SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP, "got mask %#x\n", ace->Mask);
+ ok(EqualSid(&ace->SidStart, &medium_level), "wrong sid\n");
+
+ SetLastError(0xdeadbeef);
+ ret = GetAce(acl, 2, (void **)&ace);
+ ok(!ret, "expected failure\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER, "got error %u\n", GetLastError());
HeapFree(GetProcessHeap(), 0, sd2);
More information about the wine-cvs
mailing list