Fix the SamQuerySecurityObject implementation.

svn path=/trunk/; revision=60892
This commit is contained in:
Eric Kohl 2013-11-09 13:06:42 +00:00
parent 6800c4f9e2
commit 3f83392306

View file

@ -1609,23 +1609,19 @@ SamQuerySecurityObject(IN SAM_HANDLE ObjectHandle,
IN SECURITY_INFORMATION SecurityInformation, IN SECURITY_INFORMATION SecurityInformation,
OUT PSECURITY_DESCRIPTOR *SecurityDescriptor) OUT PSECURITY_DESCRIPTOR *SecurityDescriptor)
{ {
SAMPR_SR_SECURITY_DESCRIPTOR LocalSecurityDescriptor; PSAMPR_SR_SECURITY_DESCRIPTOR SamSecurityDescriptor = NULL;
PSAMPR_SR_SECURITY_DESCRIPTOR pLocalSecurityDescriptor;
NTSTATUS Status; NTSTATUS Status;
TRACE("SamQuerySecurityObject(%p %lu %p)\n", TRACE("SamQuerySecurityObject(%p %lu %p)\n",
ObjectHandle, SecurityInformation, SecurityDescriptor); ObjectHandle, SecurityInformation, SecurityDescriptor);
LocalSecurityDescriptor.Length = 0; *SecurityDescriptor = NULL;
LocalSecurityDescriptor.SecurityDescriptor = NULL;
RpcTryExcept RpcTryExcept
{ {
pLocalSecurityDescriptor = &LocalSecurityDescriptor;
Status = SamrQuerySecurityObject((SAMPR_HANDLE)ObjectHandle, Status = SamrQuerySecurityObject((SAMPR_HANDLE)ObjectHandle,
SecurityInformation, SecurityInformation,
&pLocalSecurityDescriptor); &SamSecurityDescriptor);
} }
RpcExcept(EXCEPTION_EXECUTE_HANDLER) RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{ {
@ -1633,7 +1629,17 @@ SamQuerySecurityObject(IN SAM_HANDLE ObjectHandle,
} }
RpcEndExcept; 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; return Status;
} }