From 49f7f6c208106f70b0d4bea173114c6bf8429eb9 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Tue, 21 Dec 2004 16:16:10 +0000 Subject: [PATCH] Stub implementations for AdjustTokenGroups, AreAllAccessesGranted, CreatePrivateObjectSecurity, CreateProcessAsUser{A,W}, DestroyPrivateObjectSecurity, DuplicateToken{,Ex}, EnumDependentServices{A,W}, GetEffectiveRightsFromAcl{A,W}, ConvertStringSecurityDescriptorToSecurityDescriptorA. Implementations for BuildExplicitAccessWithName{A,W}, BuildTrusteeWithObjectsAndName{A,W}, BuildTrusteeWithObjectsAndSid{A,W}. Correct prototype for InitializeAcl, RtlCopySid and RtlGetAce. Use the CallWin32ToNt macro only with functions that return an NTSTATUS. --- dlls/advapi32/advapi32.spec | 36 ++--- dlls/advapi32/security.c | 281 +++++++++++++++++++++++++++++++++++- dlls/ntdll/sec.c | 4 +- include/aclapi.h | 18 ++- include/winbase.h | 15 +- include/winsvc.h | 3 + include/winternl.h | 4 +- 7 files changed, 324 insertions(+), 37 deletions(-) diff --git a/dlls/advapi32/advapi32.spec b/dlls/advapi32/advapi32.spec index f4dfdd31f7..087fa6f962 100644 --- a/dlls/advapi32/advapi32.spec +++ b/dlls/advapi32/advapi32.spec @@ -13,22 +13,22 @@ @ stdcall AddAccessDeniedAceEx(ptr long long long ptr) @ stdcall AddAce(ptr long long ptr long) @ stdcall AddAuditAccessAce(ptr long long ptr long long) -@ stub AdjustTokenGroups +@ stdcall AdjustTokenGroups(long long ptr long ptr ptr) @ stdcall AdjustTokenPrivileges(long long ptr long ptr ptr) @ stdcall AllocateAndInitializeSid(ptr long long long long long long long long long ptr) @ stdcall AllocateLocallyUniqueId(ptr) -@ stub AreAllAccessesGranted +@ stdcall AreAllAccessesGranted(long long) @ stdcall AreAnyAccessesGranted(long long) @ stdcall BackupEventLogA (long str) @ stdcall BackupEventLogW (long wstr) -@ stub BuildExplicitAccessWithNameA -@ stub BuildExplicitAccessWithNameW +@ stdcall BuildExplicitAccessWithNameA(ptr str long long long) +@ stdcall BuildExplicitAccessWithNameW(ptr wstr long long long) @ stdcall BuildTrusteeWithNameA(ptr str) @ stdcall BuildTrusteeWithNameW(ptr wstr) -@ stub BuildTrusteeWithObjectsAndNameA # (ptr ptr long str str str) -@ stub BuildTrusteeWithObjectsAndNameW # (ptr ptr long wstr wstr wstr) -@ stub BuildTrusteeWithObjectsAndSidA # (ptr ptr ptr ptr ptr) -@ stub BuildTrusteeWithObjectsAndSidW # (ptr ptr ptr ptr ptr) +@ stdcall BuildTrusteeWithObjectsAndNameA(ptr ptr long str str str) +@ stdcall BuildTrusteeWithObjectsAndNameW(ptr ptr long wstr wstr wstr) +@ stdcall BuildTrusteeWithObjectsAndSidA(ptr ptr ptr ptr ptr) +@ stdcall BuildTrusteeWithObjectsAndSidW(ptr ptr ptr ptr ptr) @ stdcall BuildTrusteeWithSidA(ptr ptr) @ stdcall BuildTrusteeWithSidW(ptr ptr) @ stdcall ChangeServiceConfigA(long long long long wstr str ptr str str str str) @@ -43,12 +43,12 @@ @ stdcall ConvertSidToStringSidW(ptr ptr) @ stdcall ConvertStringSidToSidA(ptr ptr) @ stdcall ConvertStringSidToSidW(ptr ptr) -@ stub ConvertStringSecurityDescriptorToSecurityDescriptorA #(str long ptr ptr) ConvertStringSecurityDescriptorToSecurityDescriptorA +@ stdcall ConvertStringSecurityDescriptorToSecurityDescriptorA(str long ptr ptr) @ stdcall ConvertStringSecurityDescriptorToSecurityDescriptorW(wstr long ptr ptr) @ stdcall CopySid(long ptr ptr) -@ stub CreatePrivateObjectSecurity -@ stub CreateProcessAsUserA -@ stub CreateProcessAsUserW +@ stdcall CreatePrivateObjectSecurity(ptr ptr ptr long long ptr) +@ stdcall CreateProcessAsUserA(long str str ptr ptr long long ptr str ptr ptr) +@ stdcall CreateProcessAsUserW(long str str ptr ptr long long ptr str ptr ptr) @ stdcall CreateServiceA(long ptr ptr long long long long ptr ptr ptr ptr ptr ptr) @ stdcall CreateServiceW (long ptr ptr long long long long ptr ptr ptr ptr ptr ptr) @ stub CredProfileLoaded @@ -96,13 +96,13 @@ @ stdcall DeleteAce(ptr long) @ stdcall DeleteService(long) @ stdcall DeregisterEventSource(long) -@ stub DestroyPrivateObjectSecurity -@ stub DuplicateToken #(long long ptr) DuplicateToken -@ stub DuplicateTokenEx #(long long ptr long long ptr) DuplicateTokenEx +@ stdcall DestroyPrivateObjectSecurity(ptr) +@ stdcall DuplicateToken(long long ptr) +@ stdcall DuplicateTokenEx(long long ptr long long ptr) @ stdcall EncryptFileA(str) @ stdcall EncryptFileW(wstr) -@ stub EnumDependentServicesA -@ stub EnumDependentServicesW +@ stdcall EnumDependentServicesA(long long ptr long ptr ptr) +@ stdcall EnumDependentServicesW(long long ptr long ptr ptr) @ stdcall EnumServicesStatusA (long long long ptr long ptr ptr ptr) @ stdcall EnumServicesStatusW (long long long ptr long ptr ptr ptr) @ stdcall EqualPrefixSid(ptr ptr) @@ -113,7 +113,7 @@ @ stdcall GetAclInformation(ptr ptr long long) @ stdcall GetCurrentHwProfileA(ptr) @ stdcall GetCurrentHwProfileW(ptr) -@ stub GetEffectiveRightsFromAclA +@ stdcall GetEffectiveRightsFromAclA(ptr ptr ptr) @ stdcall GetExplicitEntriesFromAclA(ptr ptr ptr) @ stdcall GetExplicitEntriesFromAclW(ptr ptr ptr) @ stdcall GetFileSecurityA(str long ptr long ptr) diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index 40bb2cbba1..06ed233806 100644 --- a/dlls/advapi32/security.c +++ b/dlls/advapi32/security.c @@ -31,7 +31,7 @@ #include "ntsecapi.h" #include "accctrl.h" #include "sddl.h" - +#include "winsvc.h" #include "aclapi.h" #include "wine/debug.h" @@ -204,6 +204,14 @@ OpenThreadToken( HANDLE ThreadHandle, DWORD DesiredAccess, CallWin32ToNt (NtOpenThreadToken(ThreadHandle, DesiredAccess, OpenAsSelf, TokenHandle)); } +BOOL WINAPI +AdjustTokenGroups( HANDLE TokenHandle, BOOL ResetToDefault, PTOKEN_GROUPS NewState, + DWORD BufferLength, PTOKEN_GROUPS PreviousState, PDWORD ReturnLength ) +{ + CallWin32ToNt(NtAdjustGroupsToken(TokenHandle, ResetToDefault, NewState, BufferLength, + PreviousState, ReturnLength)); +} + /****************************************************************************** * AdjustTokenPrivileges [ADVAPI32.@] * @@ -397,11 +405,11 @@ AllocateAndInitializeSid( PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, DWORD nSubAuthority6, DWORD nSubAuthority7, PSID *pSid ) { - CallWin32ToNt (RtlAllocateAndInitializeSid( + return RtlAllocateAndInitializeSid( pIdentifierAuthority, nSubAuthorityCount, nSubAuthority0, nSubAuthority1, nSubAuthority2, nSubAuthority3, nSubAuthority4, nSubAuthority5, nSubAuthority6, nSubAuthority7, - pSid )); + pSid ); } /****************************************************************************** @@ -491,6 +499,22 @@ InitializeSid ( return RtlInitializeSid(pSid, pIdentifierAuthority, nSubAuthorityCount); } +DWORD WINAPI +GetEffectiveRightsFromAclA( PACL pacl, PTRUSTEEA pTrustee, PACCESS_MASK pAccessRights ) +{ + FIXME("%p %p %p - stub\n", pacl, pTrustee, pAccessRights); + + return 1; +} + +DWORD WINAPI +GetEffectiveRightsFromAclW( PACL pacl, PTRUSTEEW pTrustee, PACCESS_MASK pAccessRights ) +{ + FIXME("%p %p %p - stub\n", pacl, pTrustee, pAccessRights); + + return 1; +} + /****************************************************************************** * GetSidIdentifierAuthority [ADVAPI32.@] * @@ -587,7 +611,7 @@ BOOL WINAPI MakeAbsoluteSD ( */ DWORD WINAPI GetSecurityDescriptorLength( PSECURITY_DESCRIPTOR pDescr) { - return (RtlLengthSecurityDescriptor(pDescr)); + return RtlLengthSecurityDescriptor(pDescr); } /****************************************************************************** @@ -729,7 +753,7 @@ BOOL WINAPI GetSecurityDescriptorControl ( PSECURITY_DESCRIPTOR pSecurityDescri /************************************************************************* * InitializeAcl [ADVAPI32.@] */ -DWORD WINAPI InitializeAcl(PACL acl, DWORD size, DWORD rev) +BOOL WINAPI InitializeAcl(PACL acl, DWORD size, DWORD rev) { CallWin32ToNt (RtlCreateAcl(acl, size, rev)); } @@ -1773,6 +1797,106 @@ DWORD WINAPI GetSecurityInfoExW( return ERROR_BAD_PROVIDER; } +/****************************************************************************** + * BuildExplicitAccessWithNameA [ADVAPI32.@] + */ +VOID WINAPI BuildExplicitAccessWithNameA( PEXPLICIT_ACCESSA pExplicitAccess, + LPSTR pTrusteeName, DWORD AccessPermissions, + ACCESS_MODE AccessMode, DWORD Inheritance ) +{ + TRACE("%p %s 0x%08lx 0x%08x 0x%08lx\n", pExplicitAccess, debugstr_a(pTrusteeName), + AccessPermissions, AccessMode, Inheritance); + + pExplicitAccess->grfAccessPermissions = AccessPermissions; + pExplicitAccess->grfAccessMode = AccessMode; + pExplicitAccess->grfInheritance = Inheritance; + + pExplicitAccess->Trustee.pMultipleTrustee = NULL; + pExplicitAccess->Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE; + pExplicitAccess->Trustee.TrusteeForm = TRUSTEE_IS_NAME; + pExplicitAccess->Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN; + pExplicitAccess->Trustee.ptstrName = pTrusteeName; +} + +/****************************************************************************** + * BuildExplicitAccessWithNameW [ADVAPI32.@] + */ +VOID WINAPI BuildExplicitAccessWithNameW( PEXPLICIT_ACCESSW pExplicitAccess, + LPWSTR pTrusteeName, DWORD AccessPermissions, + ACCESS_MODE AccessMode, DWORD Inheritance ) +{ + TRACE("%p %s 0x%08lx 0x%08x 0x%08lx\n", pExplicitAccess, debugstr_w(pTrusteeName), + AccessPermissions, AccessMode, Inheritance); + + pExplicitAccess->grfAccessPermissions = AccessPermissions; + pExplicitAccess->grfAccessMode = AccessMode; + pExplicitAccess->grfInheritance = Inheritance; + + pExplicitAccess->Trustee.pMultipleTrustee = NULL; + pExplicitAccess->Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE; + pExplicitAccess->Trustee.TrusteeForm = TRUSTEE_IS_NAME; + pExplicitAccess->Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN; + pExplicitAccess->Trustee.ptstrName = pTrusteeName; +} + +/****************************************************************************** + * BuildTrusteeWithObjectsAndNameA [ADVAPI32.@] + */ +VOID WINAPI BuildTrusteeWithObjectsAndNameA( PTRUSTEEA pTrustee, POBJECTS_AND_NAME_A pObjName, + SE_OBJECT_TYPE ObjectType, LPSTR ObjectTypeName, + LPSTR InheritedObjectTypeName, LPSTR Name ) +{ + TRACE("%p %p 0x%08x %p %p %s\n", pTrustee, pObjName, + ObjectType, ObjectTypeName, InheritedObjectTypeName, debugstr_a(Name)); + + pTrustee->pMultipleTrustee = NULL; + pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE; + pTrustee->TrusteeForm = TRUSTEE_IS_OBJECTS_AND_NAME; + pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN; + pTrustee->ptstrName = Name; +} + +/****************************************************************************** + * BuildTrusteeWithObjectsAndNameW [ADVAPI32.@] + */ +VOID WINAPI BuildTrusteeWithObjectsAndNameW( PTRUSTEEW pTrustee, POBJECTS_AND_NAME_W pObjName, + SE_OBJECT_TYPE ObjectType, LPWSTR ObjectTypeName, + LPWSTR InheritedObjectTypeName, LPWSTR Name ) +{ + TRACE("%p %p 0x%08x %p %p %s\n", pTrustee, pObjName, + ObjectType, ObjectTypeName, InheritedObjectTypeName, debugstr_w(Name)); + + pTrustee->pMultipleTrustee = NULL; + pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE; + pTrustee->TrusteeForm = TRUSTEE_IS_OBJECTS_AND_NAME; + pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN; + pTrustee->ptstrName = Name; +} + +VOID WINAPI BuildTrusteeWithObjectsAndSidA( PTRUSTEEA pTrustee, POBJECTS_AND_SID pObjSid, + GUID* pObjectGuid, GUID* pInheritedObjectGuid, PSID pSid ) +{ + TRACE("%p %p %p %p %p\n", pTrustee, pObjSid, pObjectGuid, pInheritedObjectGuid, pSid); + + pTrustee->pMultipleTrustee = NULL; + pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE; + pTrustee->TrusteeForm = TRUSTEE_IS_OBJECTS_AND_SID; + pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN; + pTrustee->ptstrName = (LPSTR) pSid; +} + +VOID WINAPI BuildTrusteeWithObjectsAndSidW( PTRUSTEEW pTrustee, POBJECTS_AND_SID pObjSid, + GUID* pObjectGuid, GUID* pInheritedObjectGuid, PSID pSid ) +{ + TRACE("%p %p %p %p %p\n", pTrustee, pObjSid, pObjectGuid, pInheritedObjectGuid, pSid); + + pTrustee->pMultipleTrustee = NULL; + pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE; + pTrustee->TrusteeForm = TRUSTEE_IS_OBJECTS_AND_SID; + pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN; + pTrustee->ptstrName = (LPWSTR) pSid; +} + /****************************************************************************** * BuildTrusteeWithSidA [ADVAPI32.@] */ @@ -1879,6 +2003,11 @@ DWORD WINAPI SetNamedSecurityInfoA(LPSTR pObjectName, return r; } +BOOL WINAPI AreAllAccessesGranted( DWORD GrantedAccess, DWORD DesiredAccess ) +{ + return RtlAreAllAccessesGranted( GrantedAccess, DesiredAccess ); +} + /****************************************************************************** * AreAnyAccessesGranted [ADVAPI32.@] * @@ -1896,7 +2025,7 @@ DWORD WINAPI SetNamedSecurityInfoA(LPSTR pObjectName, BOOL WINAPI AreAnyAccessesGranted( DWORD GrantedAccess, DWORD DesiredAccess ) { - return (GrantedAccess & DesiredAccess) != 0; + return RtlAreAnyAccessesGranted( GrantedAccess, DesiredAccess ); } /****************************************************************************** @@ -2334,6 +2463,35 @@ lend: return bret; } +/****************************************************************************** + * ConvertStringSecurityDescriptorToSecurityDescriptorA [ADVAPI32.@] + */ +BOOL WINAPI ConvertStringSecurityDescriptorToSecurityDescriptorA( + LPCSTR StringSecurityDescriptor, + DWORD StringSDRevision, + PSECURITY_DESCRIPTOR* SecurityDescriptor, + PULONG SecurityDescriptorSize) +{ + UINT len; + BOOL ret = FALSE; + LPWSTR StringSecurityDescriptorW; + + len = MultiByteToWideChar(CP_ACP, 0, StringSecurityDescriptor, -1, NULL, 0); + StringSecurityDescriptorW = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + + if (StringSecurityDescriptorW) + { + MultiByteToWideChar(CP_ACP, 0, StringSecurityDescriptor, -1, StringSecurityDescriptorW, len); + + ret = ConvertStringSecurityDescriptorToSecurityDescriptorW(StringSecurityDescriptorW, + StringSDRevision, SecurityDescriptor, + SecurityDescriptorSize); + HeapFree(GetProcessHeap(), 0, StringSecurityDescriptorW); + } + + return ret; +} + /****************************************************************************** * ConvertStringSecurityDescriptorToSecurityDescriptorW [ADVAPI32.@] */ @@ -2509,6 +2667,67 @@ BOOL WINAPI ConvertSidToStringSidA(PSID pSid, LPSTR *pstr) return TRUE; } +BOOL WINAPI CreatePrivateObjectSecurity( + PSECURITY_DESCRIPTOR ParentDescriptor, + PSECURITY_DESCRIPTOR CreatorDescriptor, + PSECURITY_DESCRIPTOR* NewDescriptor, + BOOL IsDirectoryObject, + HANDLE Token, + PGENERIC_MAPPING GenericMapping ) +{ + FIXME("%p %p %p %d %p %p - stub\n", ParentDescriptor, CreatorDescriptor, + NewDescriptor, IsDirectoryObject, Token, GenericMapping); + + return FALSE; +} + +BOOL WINAPI DestroyPrivateObjectSecurity( PSECURITY_DESCRIPTOR* ObjectDescriptor ) +{ + FIXME("%p - stub\n", ObjectDescriptor); + + return TRUE; +} + +BOOL WINAPI CreateProcessAsUserA( + HANDLE hToken, + LPCSTR lpApplicationName, + LPSTR lpCommandLine, + LPSECURITY_ATTRIBUTES lpProcessAttributes, + LPSECURITY_ATTRIBUTES lpThreadAttributes, + BOOL bInheritHandles, + DWORD dwCreationFlags, + LPVOID lpEnvironment, + LPCSTR lpCurrentDirectory, + LPSTARTUPINFOA lpStartupInfo, + LPPROCESS_INFORMATION lpProcessInformation ) +{ + FIXME("%p %s %s %p %p %d 0x%08lx %p %s %p %p - stub\n", hToken, debugstr_a(lpApplicationName), + debugstr_a(lpCommandLine), lpProcessAttributes, lpThreadAttributes, bInheritHandles, + dwCreationFlags, lpEnvironment, debugstr_a(lpCurrentDirectory), lpStartupInfo, lpProcessInformation); + + return FALSE; +} + +BOOL WINAPI CreateProcessAsUserW( + HANDLE hToken, + LPCWSTR lpApplicationName, + LPWSTR lpCommandLine, + LPSECURITY_ATTRIBUTES lpProcessAttributes, + LPSECURITY_ATTRIBUTES lpThreadAttributes, + BOOL bInheritHandles, + DWORD dwCreationFlags, + LPVOID lpEnvironment, + LPCWSTR lpCurrentDirectory, + LPSTARTUPINFOW lpStartupInfo, + LPPROCESS_INFORMATION lpProcessInformation ) +{ + FIXME("%p %s %s %p %p %d 0x%08lx %p %s %p %p - stub\n", hToken, debugstr_w(lpApplicationName), + debugstr_w(lpCommandLine), lpProcessAttributes, lpThreadAttributes, bInheritHandles, + dwCreationFlags, lpEnvironment, debugstr_w(lpCurrentDirectory), lpStartupInfo, lpProcessInformation); + + return FALSE; +} + /****************************************************************************** * ComputeStringSidSize */ @@ -2530,6 +2749,56 @@ static DWORD ComputeStringSidSize(LPCWSTR StringSid) return size; } +BOOL WINAPI DuplicateTokenEx( + HANDLE ExistingTokenHandle, DWORD dwDesiredAccess, + LPSECURITY_ATTRIBUTES lpTokenAttributes, + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, + TOKEN_TYPE TokenType, + PHANDLE DuplicateTokenHandle ) +{ + FIXME("%p 0x%08lx 0x%08x 0x%08x %p - stub\n", ExistingTokenHandle, dwDesiredAccess, + ImpersonationLevel, TokenType, DuplicateTokenHandle); + + return FALSE; +} + +BOOL WINAPI DuplicateToken( + HANDLE ExistingTokenHandle, + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, + PHANDLE DuplicateTokenHandle ) +{ + return DuplicateTokenEx( ExistingTokenHandle, 0, NULL, ImpersonationLevel, + TokenImpersonation, DuplicateTokenHandle ); +} + +BOOL WINAPI EnumDependentServicesA( + SC_HANDLE hService, + DWORD dwServiceState, + LPENUM_SERVICE_STATUSA lpServices, + DWORD cbBufSize, + LPDWORD pcbBytesNeeded, + LPDWORD lpServicesReturned ) +{ + FIXME("%p 0x%08lx %p 0x%08lx %p %p - stub\n", hService, dwServiceState, + lpServices, cbBufSize, pcbBytesNeeded, lpServicesReturned); + + return FALSE; +} + +BOOL WINAPI EnumDependentServicesW( + SC_HANDLE hService, + DWORD dwServiceState, + LPENUM_SERVICE_STATUSW lpServices, + DWORD cbBufSize, + LPDWORD pcbBytesNeeded, + LPDWORD lpServicesReturned ) +{ + FIXME("%p 0x%08lx %p 0x%08lx %p %p - stub\n", hService, dwServiceState, + lpServices, cbBufSize, pcbBytesNeeded, lpServicesReturned); + + return FALSE; +} + /****************************************************************************** * ParseStringSidToSid */ diff --git a/dlls/ntdll/sec.c b/dlls/ntdll/sec.c index 1a862667fb..a2e142edb9 100644 --- a/dlls/ntdll/sec.c +++ b/dlls/ntdll/sec.c @@ -290,7 +290,7 @@ LPBYTE WINAPI RtlSubAuthorityCountSid(PSID pSid) /************************************************************************** * RtlCopySid [NTDLL.@] */ -DWORD WINAPI RtlCopySid( DWORD nDestinationSidLength, PSID pDestinationSid, PSID pSourceSid ) +BOOLEAN WINAPI RtlCopySid( DWORD nDestinationSidLength, PSID pDestinationSid, PSID pSourceSid ) { if (!pSourceSid || !RtlValidSid(pSourceSid) || (nDestinationSidLength < RtlLengthSid(pSourceSid))) @@ -1093,7 +1093,7 @@ BOOLEAN WINAPI RtlValidAcl(PACL pAcl) /****************************************************************************** * RtlGetAce [NTDLL.@] */ -DWORD WINAPI RtlGetAce(PACL pAcl,DWORD dwAceIndex,LPVOID *pAce ) +NTSTATUS WINAPI RtlGetAce(PACL pAcl,DWORD dwAceIndex,LPVOID *pAce ) { PACE_HEADER ace; diff --git a/include/aclapi.h b/include/aclapi.h index 0853426fbd..597ad504db 100644 --- a/include/aclapi.h +++ b/include/aclapi.h @@ -60,18 +60,20 @@ void WINAPI BuildTrusteeWithNameA( PTRUSTEEA, LPSTR ); void WINAPI BuildTrusteeWithNameW( PTRUSTEEW, LPWSTR ); #define BuildTrusteeWithName WINELIB_NAME_AW(BuildTrusteeWithName) -void WINAPI BuildTrusteeWithObjectsAndNameA( PTRUSTEEA, - POBJECTS_AND_NAME_A, SE_OBJECT_TYPE, LPSTR, LPSTR, LPSTR ); -void WINAPI BuildTrusteeWithObjectsAndNameW( PTRUSTEEW, - POBJECTS_AND_NAME_W, SE_OBJECT_TYPE, LPWSTR, LPWSTR, LPWSTR ); +VOID WINAPI BuildTrusteeWithObjectsAndNameA(PTRUSTEEA, POBJECTS_AND_NAME_A, + SE_OBJECT_TYPE, LPSTR, LPSTR, LPSTR); +VOID WINAPI BuildTrusteeWithObjectsAndNameW(PTRUSTEEW, POBJECTS_AND_NAME_W, + SE_OBJECT_TYPE, LPWSTR, LPWSTR, LPWSTR); #define BuildTrusteeWithObjectsAndName WINELIB_NAME_AW(BuildTrusteeWithObjectsAndName) -void BuildTrusteeWithObjectsAndSidA( PTRUSTEEA, - POBJECTS_AND_SID, GUID*, GUID*, PSID ); -void BuildTrusteeWithObjectsAndSidW( PTRUSTEEW, - POBJECTS_AND_SID, GUID*, GUID*, PSID ); +VOID WINAPI BuildTrusteeWithObjectsAndSidA(PTRUSTEEA, POBJECTS_AND_SID, GUID*, GUID*, PSID); +VOID WINAPI BuildTrusteeWithObjectsAndSidW(PTRUSTEEW, POBJECTS_AND_SID, GUID*, GUID*, PSID); #define BuildTrusteeWithObjectsAndSid WINELIB_NAME_AW(BuildTrusteeWithObjectsAndSid) +VOID WINAPI BuildExplicitAccessWithNameA(PEXPLICIT_ACCESSA, LPSTR, DWORD, ACCESS_MODE, DWORD); +VOID WINAPI BuildExplicitAccessWithNameW(PEXPLICIT_ACCESSW, LPWSTR, DWORD, ACCESS_MODE, DWORD); +#define BuildExplicitAccessWithName WINELIB_NAME_AW(BuildExplicitAccessWithName) + VOID WINAPI BuildTrusteeWithSidA(PTRUSTEEA pTrustee, PSID pSid); VOID WINAPI BuildTrusteeWithSidW(PTRUSTEEW pTrustee, PSID pSid); #define BuildTrusteeWithSid WINELIB_NAME_AW(BuildTrusteeWithSid) diff --git a/include/winbase.h b/include/winbase.h index eefaa4b52b..183d346d7d 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -1173,6 +1173,8 @@ BOOL WINAPI AccessCheck(PSECURITY_DESCRIPTOR,HANDLE,DWORD,PGENERIC_MAPPIN BOOL WINAPI AdjustTokenPrivileges(HANDLE,BOOL,LPVOID,DWORD,LPVOID,LPDWORD); BOOL WINAPI AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *); BOOL WINAPI AllocateLocallyUniqueId(PLUID); +BOOL WINAPI AreAllAccessesGranted(DWORD,DWORD); +BOOL WINAPI AreAnyAccessesGranted(DWORD,DWORD); BOOL WINAPI AreFileApisANSI(void); BOOL WINAPI AssignProcessToJobObject(HANDLE,HANDLE); BOOL WINAPI BackupEventLogA(HANDLE,LPCSTR); @@ -1249,6 +1251,8 @@ HANDLE WINAPI CreateNamedPipeA(LPCSTR,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,L HANDLE WINAPI CreateNamedPipeW(LPCWSTR,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPSECURITY_ATTRIBUTES); #define CreateNamedPipe WINELIB_NAME_AW(CreateNamedPipe) BOOL WINAPI CreatePipe(PHANDLE,PHANDLE,LPSECURITY_ATTRIBUTES,DWORD); +BOOL WINAPI CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR, + PSECURITY_DESCRIPTOR*,BOOL,HANDLE,PGENERIC_MAPPING); BOOL WINAPI CreateProcessA(LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCSTR, LPSTARTUPINFOA,LPPROCESS_INFORMATION); @@ -1256,6 +1260,11 @@ BOOL WINAPI CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCWSTR, LPSTARTUPINFOW,LPPROCESS_INFORMATION); #define CreateProcess WINELIB_NAME_AW(CreateProcess) +BOOL WINAPI CreateProcessAsUserA(HANDLE,LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES, + BOOL,DWORD,LPVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION); +BOOL WINAPI CreateProcessAsUserW(HANDLE,LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES, + BOOL,DWORD,LPVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION); +#define CreateProcessAsUser WINELIB_NAME_AW(CreateProcessAsUser) HANDLE WINAPI CreateRemoteThread(HANDLE,LPSECURITY_ATTRIBUTES,SIZE_T,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD); HANDLE WINAPI CreateSemaphoreA(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCSTR); HANDLE WINAPI CreateSemaphoreW(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCWSTR); @@ -1285,6 +1294,7 @@ BOOL WINAPI DeleteVolumeMountPointA(LPCSTR); BOOL WINAPI DeleteVolumeMountPointW(LPCWSTR); #define DeleteVolumeMountPoint WINELIB_NAME_AW(DeleteVolumeMountPoint) BOOL WINAPI DeregisterEventSource(HANDLE); +BOOL WINAPI DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*); BOOL WINAPI DeviceIoControl(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPOVERLAPPED); BOOL WINAPI DisableThreadLibraryCalls(HMODULE); BOOL WINAPI DisconnectNamedPipe(HANDLE); @@ -1293,6 +1303,9 @@ BOOL WINAPI DnsHostnameToComputerNameW(LPCWSTR,LPWSTR,LPDWORD); #define DnsHostnameToComputerName WINELIB_NAME_AW(DnsHostnameToComputerName) BOOL WINAPI DosDateTimeToFileTime(WORD,WORD,LPFILETIME); BOOL WINAPI DuplicateHandle(HANDLE,HANDLE,HANDLE,HANDLE*,DWORD,BOOL,DWORD); +BOOL WINAPI DuplicateToken(HANDLE,SECURITY_IMPERSONATION_LEVEL,PHANDLE); +BOOL WINAPI DuplicateTokenEx(HANDLE,DWORD,LPSECURITY_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL, + TOKEN_TYPE,PHANDLE); BOOL WINAPI EscapeCommFunction(HANDLE,UINT); BOOL WINAPI EndUpdateResourceA(HANDLE,BOOL); BOOL WINAPI EndUpdateResourceW(HANDLE,BOOL); @@ -1481,7 +1494,7 @@ SIZE_T WINAPI HeapSize(HANDLE,DWORD,LPVOID); BOOL WINAPI HeapUnlock(HANDLE); BOOL WINAPI HeapValidate(HANDLE,DWORD,LPCVOID); BOOL WINAPI HeapWalk(HANDLE,LPPROCESS_HEAP_ENTRY); -DWORD WINAPI InitializeAcl(PACL,DWORD,DWORD); +BOOL WINAPI InitializeAcl(PACL,DWORD,DWORD); void WINAPI InitializeCriticalSection(CRITICAL_SECTION *lpCrit); BOOL WINAPI InitializeCriticalSectionAndSpinCount(CRITICAL_SECTION *,DWORD); BOOL WINAPI InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD); diff --git a/include/winsvc.h b/include/winsvc.h index c1197f3697..96d65332df 100644 --- a/include/winsvc.h +++ b/include/winsvc.h @@ -261,6 +261,9 @@ SC_HANDLE WINAPI CreateServiceW(SC_HANDLE,LPCWSTR,LPCWSTR,DWORD,DWORD,DWORD,DW LPCWSTR,LPDWORD,LPCWSTR,LPCWSTR,LPCWSTR); #define CreateService WINELIB_NAME_AW(CreateService) BOOL WINAPI DeleteService(SC_HANDLE); +BOOL WINAPI EnumDependentServicesA(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSA,DWORD,LPDWORD,LPDWORD); +BOOL WINAPI EnumDependentServicesW(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSW,DWORD,LPDWORD,LPDWORD); +#define EnumDependentServices WINELIB_NAME_AW(EnumDependentServices) BOOL WINAPI EnumServicesStatusA(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSA, DWORD,LPDWORD,LPDWORD,LPDWORD); BOOL WINAPI EnumServicesStatusW(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSW, diff --git a/include/winternl.h b/include/winternl.h index 5946ec7eb8..5efe4c6da6 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -1490,7 +1490,7 @@ LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG); ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG); void WINAPI RtlCopyLuid(PLUID,const LUID*); void WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES); -DWORD WINAPI RtlCopySid(DWORD,PSID,PSID); +BOOLEAN WINAPI RtlCopySid(DWORD,PSID,PSID); void WINAPI RtlCopyString(STRING*,const STRING*); void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*); NTSTATUS WINAPI RtlCreateAcl(PACL,DWORD,DWORD); @@ -1567,7 +1567,7 @@ void WINAPI RtlFreeOemString(POEM_STRING); DWORD WINAPI RtlFreeSid(PSID); void WINAPI RtlFreeUnicodeString(PUNICODE_STRING); -DWORD WINAPI RtlGetAce(PACL,DWORD,LPVOID *); +NTSTATUS WINAPI RtlGetAce(PACL,DWORD,LPVOID *); NTSTATUS WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD); NTSTATUS WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR); NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);