Module: wine Branch: master Commit: 5a3fd972f4c87925364e7511d655442fd0e8f96f URL: https://gitlab.winehq.org/wine/wine/-/commit/5a3fd972f4c87925364e7511d655442...
Author: Ake Rehnman ake.rehnman@gmail.com Date: Wed May 3 14:33:21 2023 +0200
ntdll: Fix RtlValidSecurityDescriptor() return value.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com
---
dlls/kernelbase/security.c | 5 ++++- dlls/ntdll/sec.c | 20 +++----------------- include/winternl.h | 2 +- 3 files changed, 8 insertions(+), 19 deletions(-)
diff --git a/dlls/kernelbase/security.c b/dlls/kernelbase/security.c index 851cc98587d..bf653933ad6 100644 --- a/dlls/kernelbase/security.c +++ b/dlls/kernelbase/security.c @@ -1105,7 +1105,10 @@ BOOL WINAPI InitializeSecurityDescriptor( PSECURITY_DESCRIPTOR descr, DWORD revi */ BOOL WINAPI IsValidSecurityDescriptor( PSECURITY_DESCRIPTOR descr ) { - return set_ntstatus( RtlValidSecurityDescriptor( descr )); + if (!RtlValidSecurityDescriptor( descr )) + return set_ntstatus(STATUS_INVALID_SECURITY_DESCR); + + return TRUE; }
/****************************************************************************** diff --git a/dlls/ntdll/sec.c b/dlls/ntdll/sec.c index 8cadf7b5d60..34e5df7a533 100644 --- a/dlls/ntdll/sec.c +++ b/dlls/ntdll/sec.c @@ -534,25 +534,11 @@ NTSTATUS WINAPI RtlCopySecurityDescriptor(PSECURITY_DESCRIPTOR pSourceSD, PSECUR
/************************************************************************** * RtlValidSecurityDescriptor [NTDLL.@] - * - * Determine if a SECURITY_DESCRIPTOR is valid. - * - * PARAMS - * SecurityDescriptor [I] Descriptor to check. - * - * RETURNS - * Success: STATUS_SUCCESS. - * Failure: STATUS_INVALID_SECURITY_DESCR or STATUS_UNKNOWN_REVISION. */ -NTSTATUS WINAPI RtlValidSecurityDescriptor( - PSECURITY_DESCRIPTOR SecurityDescriptor) +BOOLEAN WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR descriptor) { - if ( ! SecurityDescriptor ) - return STATUS_INVALID_SECURITY_DESCR; - if ( ((SECURITY_DESCRIPTOR*)SecurityDescriptor)->Revision != SECURITY_DESCRIPTOR_REVISION ) - return STATUS_UNKNOWN_REVISION; - - return STATUS_SUCCESS; + SECURITY_DESCRIPTOR *sd = descriptor; + return sd && sd->Revision == SECURITY_DESCRIPTOR_REVISION; }
/************************************************************************** diff --git a/include/winternl.h b/include/winternl.h index 43ffcb3b704..5ad1d2fa7e2 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -4763,7 +4763,7 @@ NTSYSAPI void WINAPI RtlUpperString(STRING *,const STRING *); NTSYSAPI void WINAPI RtlUserThreadStart(PRTL_THREAD_START_ROUTINE,void*); NTSYSAPI BOOLEAN WINAPI RtlValidAcl(PACL); NTSYSAPI BOOLEAN WINAPI RtlValidRelativeSecurityDescriptor(PSECURITY_DESCRIPTOR,ULONG,SECURITY_INFORMATION); -NTSYSAPI NTSTATUS WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR); +NTSYSAPI BOOLEAN WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR); NTSYSAPI BOOLEAN WINAPI RtlValidSid(PSID); NTSYSAPI BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID); NTSYSAPI NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);