From dbf61f13bd094b94153051b43485d19190c31d56 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sat, 28 Nov 2015 21:47:43 +0000 Subject: [PATCH] =?utf8?q?[ADVAPI32]=20Apply=20Wine=20commit=204f3acf3=20b?= =?utf8?q?y=20Michael=20M=C3=BCller:=20Add=20initial=20implementation=20fo?= =?utf8?q?r=20GetWindowsAccountDomainSid.=20CORE-10536?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit svn path=/trunk/; revision=70198 --- reactos/dll/win32/advapi32/wine/security.c | 51 ++++++++++++++++++---- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/reactos/dll/win32/advapi32/wine/security.c b/reactos/dll/win32/advapi32/wine/security.c index d5ac05b9dea..4a61123c150 100644 --- a/reactos/dll/win32/advapi32/wine/security.c +++ b/reactos/dll/win32/advapi32/wine/security.c @@ -3645,17 +3645,50 @@ GetNamedSecurityInfoA(LPSTR pObjectName, return r; } -/* - * @unimplemented +/****************************************************************************** + * GetWindowsAccountDomainSid [ADVAPI32.@] */ -BOOL -WINAPI -GetWindowsAccountDomainSid(IN PSID pSid, - OUT PSID ppDomainSid, - IN OUT DWORD* cbSid) +BOOL WINAPI GetWindowsAccountDomainSid( PSID sid, PSID domain_sid, DWORD *size ) { - UNIMPLEMENTED; - return FALSE; + 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; } /* -- 2.17.1