Module: wine Branch: master Commit: 4f3acf31deef5893b057778695fa5691ccac32df URL: http://source.winehq.org/git/wine.git/?a=commit;h=4f3acf31deef5893b057778695...
Author: Michael Müller michael@fds-team.de Date: Wed Jun 24 02:35:27 2015 +0200
advapi32: Add initial implementation for GetWindowsAccountDomainSid.
---
dlls/advapi32/advapi32.spec | 2 +- dlls/advapi32/security.c | 46 ++++++++++++++++++++++ dlls/advapi32/tests/security.c | 2 +- .../api-ms-win-security-base-l1-1-0.spec | 2 +- .../api-ms-win-security-base-l1-2-0.spec | 2 +- 5 files changed, 50 insertions(+), 4 deletions(-)
diff --git a/dlls/advapi32/advapi32.spec b/dlls/advapi32/advapi32.spec index 4600142..ec27440 100644 --- a/dlls/advapi32/advapi32.spec +++ b/dlls/advapi32/advapi32.spec @@ -363,7 +363,7 @@ @ stdcall GetTrusteeTypeW(ptr) @ stdcall GetUserNameA(ptr ptr) @ stdcall GetUserNameW(ptr ptr) -# @ stub GetWindowsAccountDomainSid +@ stdcall GetWindowsAccountDomainSid(ptr ptr ptr) # @ stub I_QueryTagInformation # @ stub I_ScGetCurrentGroupStateW # @ stub I_ScIsSecurityProcess diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index 028dcc6..c2ce1e1 100644 --- a/dlls/advapi32/security.c +++ b/dlls/advapi32/security.c @@ -1538,6 +1538,52 @@ BOOL WINAPI SetSecurityDescriptorControl( PSECURITY_DESCRIPTOR pSecurityDescript pSecurityDescriptor, ControlBitsOfInterest, ControlBitsToSet ) ); }
+/****************************************************************************** + * GetWindowsAccountDomainSid [ADVAPI32.@] + */ +BOOL WINAPI GetWindowsAccountDomainSid( PSID sid, PSID domain_sid, DWORD *size ) +{ + SID_IDENTIFIER_AUTHORITY domain_ident = { SECURITY_NT_AUTHORITY }; + DWORD required_size; + int i; + + FIXME( "(%p %p %p): semi-stub\n", sid, domain_sid, size ); + + if (!sid || !IsValidSid( sid )) + { + SetLastError( ERROR_INVALID_SID ); + return FALSE; + } + + if (!size) + { + SetLastError( ERROR_INVALID_PARAMETER ); + return FALSE; + } + + if (*GetSidSubAuthorityCount( sid ) < 4) + { + SetLastError( ERROR_INVALID_SID ); + return FALSE; + } + + required_size = GetSidLengthRequired( 4 ); + if (*size < required_size || !domain_sid) + { + *size = required_size; + SetLastError( domain_sid ? ERROR_INSUFFICIENT_BUFFER : + ERROR_INVALID_PARAMETER ); + return FALSE; + } + + InitializeSid( domain_sid, &domain_ident, 4 ); + for (i = 0; i < 4; i++) + *GetSidSubAuthority( domain_sid, i ) = *GetSidSubAuthority( sid, i ); + + *size = required_size; + return TRUE; +} + /* ############################## ###### ACL FUNCTIONS ###### ############################## diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c index 898ddba..098fa8f 100644 --- a/dlls/advapi32/tests/security.c +++ b/dlls/advapi32/tests/security.c @@ -5938,7 +5938,7 @@ static void test_GetWindowsAccountDomainSid(void)
if (!pGetWindowsAccountDomainSid) { - skip("GetWindowsAccountDomainSid not available\n"); + win_skip("GetWindowsAccountDomainSid not available\n"); return; }
diff --git a/dlls/api-ms-win-security-base-l1-1-0/api-ms-win-security-base-l1-1-0.spec b/dlls/api-ms-win-security-base-l1-1-0/api-ms-win-security-base-l1-1-0.spec index 4277706..edae6d1 100644 --- a/dlls/api-ms-win-security-base-l1-1-0/api-ms-win-security-base-l1-1-0.spec +++ b/dlls/api-ms-win-security-base-l1-1-0/api-ms-win-security-base-l1-1-0.spec @@ -57,7 +57,7 @@ @ stdcall GetSidSubAuthority(ptr long) advapi32.GetSidSubAuthority @ stdcall GetSidSubAuthorityCount(ptr) advapi32.GetSidSubAuthorityCount @ stdcall GetTokenInformation(long long ptr long ptr) advapi32.GetTokenInformation -@ stub GetWindowsAccountDomainSid +@ stdcall GetWindowsAccountDomainSid(ptr ptr ptr) advapi32.GetWindowsAccountDomainSid @ stdcall ImpersonateAnonymousToken(long) advapi32.ImpersonateAnonymousToken @ stdcall ImpersonateLoggedOnUser(long) advapi32.ImpersonateLoggedOnUser @ stdcall ImpersonateSelf(long) advapi32.ImpersonateSelf diff --git a/dlls/api-ms-win-security-base-l1-2-0/api-ms-win-security-base-l1-2-0.spec b/dlls/api-ms-win-security-base-l1-2-0/api-ms-win-security-base-l1-2-0.spec index 3adef23..e19fe53 100644 --- a/dlls/api-ms-win-security-base-l1-2-0/api-ms-win-security-base-l1-2-0.spec +++ b/dlls/api-ms-win-security-base-l1-2-0/api-ms-win-security-base-l1-2-0.spec @@ -63,7 +63,7 @@ @ stdcall GetSidSubAuthority(ptr long) advapi32.GetSidSubAuthority @ stdcall GetSidSubAuthorityCount(ptr) advapi32.GetSidSubAuthorityCount @ stdcall GetTokenInformation(long long ptr long ptr) advapi32.GetTokenInformation -@ stub GetWindowsAccountDomainSid +@ stdcall GetWindowsAccountDomainSid(ptr ptr ptr) advapi32.GetWindowsAccountDomainSid @ stdcall ImpersonateAnonymousToken(long) advapi32.ImpersonateAnonymousToken @ stdcall ImpersonateLoggedOnUser(long) advapi32.ImpersonateLoggedOnUser @ stdcall ImpersonateSelf(long) advapi32.ImpersonateSelf