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; }