Declaration, implemention and test for BuildTrusteeWithSid.
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index c6747af..db37bed 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -1486,7 +1486,14 @@
*/
VOID WINAPI BuildTrusteeWithSidA(PTRUSTEEA pTrustee, PSID pSid)
{
- FIXME("%p %p\n", pTrustee, pSid);
+ TRACE("%p %p\n", pTrustee, pSid);
+
+ pTrustee->pMultipleTrustee = NULL;
+ pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
+ pTrustee->TrusteeForm = NO_MULTIPLE_TRUSTEE;
+ pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
+ pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
+ pTrustee->ptstrName = (LPSTR) pSid;
}
/******************************************************************************
@@ -1494,7 +1501,14 @@
*/
VOID WINAPI BuildTrusteeWithSidW(PTRUSTEEW pTrustee, PSID pSid)
{
- FIXME("%p %p\n", pTrustee, pSid);
+ TRACE("%p %p\n", pTrustee, pSid);
+
+ pTrustee->pMultipleTrustee = NULL;
+ pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
+ pTrustee->TrusteeForm = NO_MULTIPLE_TRUSTEE;
+ pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
+ pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
+ pTrustee->ptstrName = (LPWSTR) pSid;
}
/******************************************************************************
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 217e2b5..ff978a1 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -24,6 +24,7 @@
#include "windef.h"
#include "winbase.h"
#include "winerror.h"
+#include "aclapi.h"
typedef BOOL (WINAPI *fnConvertSidToStringSidA)( PSID pSid, LPSTR *str );
typedef BOOL (WINAPI *fnConvertSidToStringSidW)( PSID pSid, LPWSTR *str );
@@ -53,9 +54,34 @@
ok( r, "failed to convert sid\n" );
ok( !lstrcmpW( str, refstr ), "incorrect sid\n" );
LocalFree( str );
+ FreeSid( psid );
+}
+
+void test_trustee()
+{
+ TRUSTEE trustee;
+ PSID psid;
+ DWORD r;
+
+ SID_IDENTIFIER_AUTHORITY auth = { {0x11,0x22,0,0,0, 0} };
+
+ r = AllocateAndInitializeSid( &auth, 1, 42, 0,0,0,0,0,0,0,&psid );
+ ok( r, "failed to init SID\n" );
+
+ memset( &trustee, 0xff, sizeof trustee );
+ BuildTrusteeWithSidA( &trustee, psid );
+
+ ok( trustee.pMultipleTrustee == NULL, "pMultipleTrustee wrong\n");
+ ok( trustee.MultipleTrusteeOperation == NO_MULTIPLE_TRUSTEE,
+ "MultipleTrusteeOperation wrong\n");
+ ok( trustee.TrusteeForm == TRUSTEE_IS_SID, "TrusteeForm wrong\n");
+ ok( trustee.TrusteeType == TRUSTEE_IS_UNKNOWN, "TrusteeType wrong\n");
+ ok( trustee.ptstrName == (LPSTR) psid, "ptstrName wrong\n" );
+ FreeSid( psid );
}
START_TEST(security)
{
test_sid();
+ test_trustee();
}
diff --git a/include/aclapi.h b/include/aclapi.h
index 1f6a26b..0853426 100644
--- a/include/aclapi.h
+++ b/include/aclapi.h
@@ -72,6 +72,10 @@
POBJECTS_AND_SID, GUID*, GUID*, PSID );
#define BuildTrusteeWithObjectsAndSid WINELIB_NAME_AW(BuildTrusteeWithObjectsAndSid)
+VOID WINAPI BuildTrusteeWithSidA(PTRUSTEEA pTrustee, PSID pSid);
+VOID WINAPI BuildTrusteeWithSidW(PTRUSTEEW pTrustee, PSID pSid);
+#define BuildTrusteeWithSid WINELIB_NAME_AW(BuildTrusteeWithSid)
+
#ifdef __cplusplus
}
#endif