From 3f8339230689ea2750333665ac174ecbb4e2080f Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 9 Nov 2013 13:06:42 +0000 Subject: [PATCH] [SAMLIB] Fix the SamQuerySecurityObject implementation. svn path=/trunk/; revision=60892 --- reactos/dll/win32/samlib/samlib.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/reactos/dll/win32/samlib/samlib.c b/reactos/dll/win32/samlib/samlib.c index 471de041cd4..26acec82cfc 100644 --- a/reactos/dll/win32/samlib/samlib.c +++ b/reactos/dll/win32/samlib/samlib.c @@ -1609,23 +1609,19 @@ SamQuerySecurityObject(IN SAM_HANDLE ObjectHandle, IN SECURITY_INFORMATION SecurityInformation, OUT PSECURITY_DESCRIPTOR *SecurityDescriptor) { - SAMPR_SR_SECURITY_DESCRIPTOR LocalSecurityDescriptor; - PSAMPR_SR_SECURITY_DESCRIPTOR pLocalSecurityDescriptor; + PSAMPR_SR_SECURITY_DESCRIPTOR SamSecurityDescriptor = NULL; NTSTATUS Status; TRACE("SamQuerySecurityObject(%p %lu %p)\n", ObjectHandle, SecurityInformation, SecurityDescriptor); - LocalSecurityDescriptor.Length = 0; - LocalSecurityDescriptor.SecurityDescriptor = NULL; + *SecurityDescriptor = NULL; RpcTryExcept { - pLocalSecurityDescriptor = &LocalSecurityDescriptor; - Status = SamrQuerySecurityObject((SAMPR_HANDLE)ObjectHandle, SecurityInformation, - &pLocalSecurityDescriptor); + &SamSecurityDescriptor); } RpcExcept(EXCEPTION_EXECUTE_HANDLER) { @@ -1633,7 +1629,17 @@ SamQuerySecurityObject(IN SAM_HANDLE ObjectHandle, } RpcEndExcept; - *SecurityDescriptor = LocalSecurityDescriptor.SecurityDescriptor; + TRACE("SamSecurityDescriptor: %p\n", SamSecurityDescriptor); + + if (SamSecurityDescriptor != NULL) + { + TRACE("SamSecurityDescriptor->Length: %lu\n", SamSecurityDescriptor->Length); + TRACE("SamSecurityDescriptor->SecurityDescriptor: %p\n", SamSecurityDescriptor->SecurityDescriptor); + + *SecurityDescriptor = SamSecurityDescriptor->SecurityDescriptor; + + midl_user_free(SamSecurityDescriptor); + } return Status; } -- 2.17.1