From 72b6ef30e795c6d9e9c888458ab92f8fb5a577e9 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Mon, 12 Jul 2004 12:05:49 +0000 Subject: [PATCH] Fix NtAccessCheck() prototype. svn path=/trunk/; revision=10087 --- reactos/include/ntos/zw.h | 15 +++++++++------ reactos/include/wine/winternl.h | 2 +- reactos/lib/advapi32/token/token.c | 16 +++++++++++++--- reactos/ntoskrnl/se/semgr.c | 6 +++--- reactos/w32api/include/ddk/ntapi.h | 2 +- 5 files changed, 27 insertions(+), 14 deletions(-) diff --git a/reactos/include/ntos/zw.h b/reactos/include/ntos/zw.h index cfb24fa142c..58622d3295f 100755 --- a/reactos/include/ntos/zw.h +++ b/reactos/include/ntos/zw.h @@ -1,5 +1,5 @@ -/* $Id: zw.h,v 1.25 2004/06/13 10:35:51 navaraf Exp $ +/* $Id: zw.h,v 1.26 2004/07/12 12:00:15 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -4544,7 +4544,10 @@ NtQueryOleDirectoryFile ( * ReturnLength = Bytes written * GrantedAccess = * AccessStatus = Indicates if the ClientToken allows the requested access - * REMARKS: The arguments map to the win32 AccessCheck + * REMARKS: The arguments map to the win32 AccessCheck + * Gary Nebbett is wrong: + * The 7th argument is a PACCESS_MASK, not a PULONG. + * The 8th argument is a PNTSTATUS, not a PBOOLEAN. * RETURNS: Status */ @@ -4557,8 +4560,8 @@ NtAccessCheck( IN PGENERIC_MAPPING GenericMapping, OUT PPRIVILEGE_SET PrivilegeSet, OUT PULONG ReturnLength, - OUT PULONG GrantedAccess, - OUT PBOOLEAN AccessStatus + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus ); NTSTATUS @@ -4570,8 +4573,8 @@ ZwAccessCheck( IN PGENERIC_MAPPING GenericMapping, OUT PPRIVILEGE_SET PrivilegeSet, OUT PULONG ReturnLength, - OUT PULONG GrantedAccess, - OUT PBOOLEAN AccessStatus + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus ); NTSTATUS diff --git a/reactos/include/wine/winternl.h b/reactos/include/wine/winternl.h index 7e6e09fc562..d122c540aff 100644 --- a/reactos/include/wine/winternl.h +++ b/reactos/include/wine/winternl.h @@ -966,7 +966,7 @@ void WINAPI LdrInitializeThunk(HANDLE,LPVOID,ULONG,ULONG); NTSTATUS WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*); void WINAPI LdrShutdownProcess(void); void WINAPI LdrShutdownThread(void); -NTSTATUS WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,PBOOLEAN); +NTSTATUS WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PACCESS_MASK,PNTSTATUS); NTSTATUS WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD); NTSTATUS WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,PVOID,ULONG*,ULONG,ULONG); NTSTATUS WINAPI NtCancelTimer(HANDLE, BOOLEAN*); diff --git a/reactos/lib/advapi32/token/token.c b/reactos/lib/advapi32/token/token.c index 97a8e191d2c..de3c63dd10a 100644 --- a/reactos/lib/advapi32/token/token.c +++ b/reactos/lib/advapi32/token/token.c @@ -1,4 +1,4 @@ -/* $Id: token.c,v 1.11 2004/07/06 22:07:25 gvg Exp $ +/* $Id: token.c,v 1.12 2004/07/12 12:05:49 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -143,6 +143,7 @@ AccessCheck (PSECURITY_DESCRIPTOR pSecurityDescriptor, LPBOOL AccessStatus) { NTSTATUS Status; + NTSTATUS AccessStat; Status = NtAccessCheck (pSecurityDescriptor, ClientToken, @@ -150,14 +151,23 @@ AccessCheck (PSECURITY_DESCRIPTOR pSecurityDescriptor, GenericMapping, PrivilegeSet, (PULONG)PrivilegeSetLength, - (PULONG)GrantedAccess, - (PBOOLEAN)AccessStatus); + (PACCESS_MASK)GrantedAccess, + &AccessStat); if (!NT_SUCCESS (Status)) { SetLastError (RtlNtStatusToDosError (Status)); return FALSE; } + if (!NT_SUCCESS (AccessStat)) + { + SetLastError (RtlNtStatusToDosError (Status)); + *AccessStatus = FALSE; + return TRUE; + } + + *AccessStatus = TRUE; + return TRUE; } diff --git a/reactos/ntoskrnl/se/semgr.c b/reactos/ntoskrnl/se/semgr.c index fc08889145b..47f8e98b696 100644 --- a/reactos/ntoskrnl/se/semgr.c +++ b/reactos/ntoskrnl/se/semgr.c @@ -1,4 +1,4 @@ -/* $Id: semgr.c,v 1.30 2004/05/20 12:42:11 ekohl Exp $ +/* $Id: semgr.c,v 1.31 2004/07/12 12:04:17 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -208,8 +208,8 @@ NtAccessCheck(IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN PGENERIC_MAPPING GenericMapping, OUT PPRIVILEGE_SET PrivilegeSet, OUT PULONG ReturnLength, - OUT PULONG GrantedAccess, - OUT PBOOLEAN AccessStatus) + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus) { UNIMPLEMENTED; return(STATUS_NOT_IMPLEMENTED); diff --git a/reactos/w32api/include/ddk/ntapi.h b/reactos/w32api/include/ddk/ntapi.h index eedf2daba30..5ef36597f6a 100644 --- a/reactos/w32api/include/ddk/ntapi.h +++ b/reactos/w32api/include/ddk/ntapi.h @@ -2402,7 +2402,7 @@ ZwAccessCheck( IN PPRIVILEGE_SET PrivilegeSet, IN PULONG PrivilegeSetLength, OUT PACCESS_MASK GrantedAccess, - OUT PBOOLEAN AccessStatus); + OUT PNTSTATUS AccessStatus); NTOSAPI NTSTATUS -- 2.17.1