From: Vijay Kiran Kamuju infyquest@gmail.com Signed-off-by: Vijay Kiran Kamuju infyquest@gmail.com --- dlls/advapi32/tests/security.c | 35 +++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c index d9cae64da8b..8a4777ff275 100644 --- a/dlls/advapi32/tests/security.c +++ b/dlls/advapi32/tests/security.c @@ -1343,11 +1343,13 @@ static void test_AccessCheck(void)
if(pNtAccessCheck) { + DWORD ntPrivSetLen = sizeof(PRIVILEGE_SET); + /* Generic access mask - no privilegeset buffer */ SetLastError(0xdeadbeef); Access = ntAccessStatus = 0x1abe11ed; ntret = pNtAccessCheck(SecurityDescriptor, Token, GENERIC_READ, &Mapping, - NULL, &PrivSetLen, &Access, &ntAccessStatus); + NULL, &ntPrivSetLen, &Access, &ntAccessStatus); err = GetLastError(); ok(ntret == STATUS_ACCESS_VIOLATION, "NtAccessCheck should have failed with STATUS_ACCESS_VIOLATION, got %x\n", ntret); @@ -1355,6 +1357,7 @@ static void test_AccessCheck(void) "NtAccessCheck shouldn't set last error, got %d\n", err); ok(Access == 0x1abe11ed && ntAccessStatus == 0x1abe11ed, "Access and/or AccessStatus were changed!\n"); + ok(ntPrivSetLen == sizeof(PRIVILEGE_SET), "PrivSetLen returns %d\n", ntPrivSetLen);
/* Generic access mask - no returnlength */ SetLastError(0xdeadbeef); @@ -1381,6 +1384,36 @@ static void test_AccessCheck(void) "NtAccessCheck shouldn't set last error, got %d\n", err); ok(Access == 0x1abe11ed && ntAccessStatus == 0x1abe11ed, "Access and/or AccessStatus were changed!\n"); + + /* Generic access mask - zero returnlength */ + SetLastError(0xdeadbeef); + Access = ntAccessStatus = 0x1abe11ed; + ntPrivSetLen = 0; + ntret = pNtAccessCheck(SecurityDescriptor, Token, GENERIC_READ, &Mapping, + PrivSet, &ntPrivSetLen, &Access, &ntAccessStatus); + err = GetLastError(); + ok(ntret == STATUS_GENERIC_NOT_MAPPED, + "NtAccessCheck should have failed with STATUS_GENERIC_NOT_MAPPED, got %x\n", ntret); + ok(err == 0xdeadbeef, + "NtAccessCheck shouldn't set last error, got %d\n", err); + ok(Access == 0x1abe11ed && ntAccessStatus == 0x1abe11ed, + "Access and/or AccessStatus were changed!\n"); + ok(ntPrivSetLen == 0, "PrivSetLen returns %d\n", ntPrivSetLen); + + /* Generic access mask - insufficient returnlength */ + SetLastError(0xdeadbeef); + Access = ntAccessStatus = 0x1abe11ed; + ntPrivSetLen = sizeof(PRIVILEGE_SET)-1; + ntret = pNtAccessCheck(SecurityDescriptor, Token, GENERIC_READ, &Mapping, + PrivSet, &ntPrivSetLen, &Access, &ntAccessStatus); + err = GetLastError(); + ok(ntret == STATUS_GENERIC_NOT_MAPPED, + "NtAccessCheck should have failed with STATUS_GENERIC_NOT_MAPPED, got %x\n", ntret); + ok(err == 0xdeadbeef, + "NtAccessCheck shouldn't set last error, got %d\n", err); + ok(Access == 0x1abe11ed && ntAccessStatus == 0x1abe11ed, + "Access and/or AccessStatus were changed!\n"); + ok(ntPrivSetLen == sizeof(PRIVILEGE_SET)-1, "PrivSetLen returns %d\n", ntPrivSetLen); } else win_skip("NtAccessCheck unavailable. Skipping.\n");
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=51457
Your paranoid android.
=== debian9 (32 bit report) ===
advapi32: security.c:1401: Test failed: PrivSetLen returns 8 security.c:1416: Test failed: PrivSetLen returns 8
=== debian9 (32 bit French report) ===
advapi32: security.c:1401: Test failed: PrivSetLen returns 8 security.c:1416: Test failed: PrivSetLen returns 8
=== debian9 (32 bit Japanese:Japan report) ===
advapi32: security.c:1401: Test failed: PrivSetLen returns 8 security.c:1416: Test failed: PrivSetLen returns 8
=== debian9 (32 bit Chinese:China report) ===
advapi32: security.c:1401: Test failed: PrivSetLen returns 8 security.c:1416: Test failed: PrivSetLen returns 8
=== debian9 (32 bit WoW report) ===
advapi32: security.c:1401: Test failed: PrivSetLen returns 8 security.c:1416: Test failed: PrivSetLen returns 8
=== debian9 (64 bit WoW report) ===
advapi32: security.c:1401: Test failed: PrivSetLen returns 8 security.c:1416: Test failed: PrivSetLen returns 8