Qian Hong : advapi32/tests: Add invalid parameter tests for AccessCheck.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Feb 16 09:55:00 CST 2016
Module: wine
Branch: master
Commit: 86c4790721eb55b263127800a15e7581eceafea7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=86c4790721eb55b263127800a15e7581eceafea7
Author: Qian Hong <qhong at codeweavers.com>
Date: Tue Feb 16 04:52:55 2016 +0800
advapi32/tests: Add invalid parameter tests for AccessCheck.
Signed-off-by: Qian Hong <qhong at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/advapi32/tests/security.c | 53 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 53 insertions(+)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 881b3ec..3e1ced0 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -1411,6 +1411,59 @@ static void test_AccessCheck(void)
GetLastError());
trace("AccessCheck with MAXIMUM_ALLOWED got Access 0x%08x\n", Access);
+ /* Null PrivSet with null PrivSetLen pointer */
+ SetLastError(0xdeadbeef);
+ Access = AccessStatus = 0x1abe11ed;
+ ret = AccessCheck(SecurityDescriptor, Token, KEY_READ, &Mapping,
+ NULL, NULL, &Access, &AccessStatus);
+ err = GetLastError();
+ ok(!ret && err == ERROR_NOACCESS, "AccessCheck should have "
+ "failed with ERROR_NOACCESS, instead of %d\n", err);
+ ok(Access == 0x1abe11ed && AccessStatus == 0x1abe11ed,
+ "Access and/or AccessStatus were changed!\n");
+
+ /* Null PrivSet with zero PrivSetLen */
+ SetLastError(0xdeadbeef);
+ Access = AccessStatus = 0x1abe11ed;
+ PrivSetLen = 0;
+ ret = AccessCheck(SecurityDescriptor, Token, KEY_READ, &Mapping,
+ 0, &PrivSetLen, &Access, &AccessStatus);
+ err = GetLastError();
+todo_wine
+ ok(!ret && err == ERROR_INSUFFICIENT_BUFFER, "AccessCheck should have "
+ "failed with ERROR_INSUFFICIENT_BUFFER, instead of %d\n", err);
+todo_wine
+ ok(PrivSetLen == sizeof(PRIVILEGE_SET), "PrivSetLen returns %d\n", PrivSetLen);
+ ok(Access == 0x1abe11ed && AccessStatus == 0x1abe11ed,
+ "Access and/or AccessStatus were changed!\n");
+
+ /* Valid PrivSet with zero PrivSetLen */
+ SetLastError(0xdeadbeef);
+ Access = AccessStatus = 0x1abe11ed;
+ PrivSetLen = 0;
+ ret = AccessCheck(SecurityDescriptor, Token, KEY_READ, &Mapping,
+ PrivSet, &PrivSetLen, &Access, &AccessStatus);
+ err = GetLastError();
+todo_wine
+ ok(!ret && err == ERROR_INSUFFICIENT_BUFFER, "AccessCheck should have "
+ "failed with ERROR_INSUFFICIENT_BUFFER, instead of %d\n", err);
+todo_wine
+ ok(Access == 0x1abe11ed && AccessStatus == 0x1abe11ed,
+ "Access and/or AccessStatus were changed!\n");
+
+ PrivSetLen = FIELD_OFFSET(PRIVILEGE_SET, Privilege[16]);
+
+ /* Null PrivSet with valid PrivSetLen */
+ SetLastError(0xdeadbeef);
+ Access = AccessStatus = 0x1abe11ed;
+ ret = AccessCheck(SecurityDescriptor, Token, KEY_READ, &Mapping,
+ 0, &PrivSetLen, &Access, &AccessStatus);
+ err = GetLastError();
+ ok(!ret && err == ERROR_NOACCESS, "AccessCheck should have "
+ "failed with ERROR_NOACCESS, instead of %d\n", err);
+ ok(Access == 0x1abe11ed && AccessStatus == 0x1abe11ed,
+ "Access and/or AccessStatus were changed!\n");
+
/* Access denied by SD */
SetLastError(0xdeadbeef);
Access = AccessStatus = 0x1abe11ed;
More information about the wine-cvs
mailing list