Fix the SamQuerySecurityObject implementation.
svn path=/trunk/; revision=60892
IN SECURITY_INFORMATION SecurityInformation,
OUT PSECURITY_DESCRIPTOR *SecurityDescriptor)
{
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);
NTSTATUS Status;
TRACE("SamQuerySecurityObject(%p %lu %p)\n",
ObjectHandle, SecurityInformation, SecurityDescriptor);
- LocalSecurityDescriptor.Length = 0;
- LocalSecurityDescriptor.SecurityDescriptor = NULL;
+ *SecurityDescriptor = NULL;
- pLocalSecurityDescriptor = &LocalSecurityDescriptor;
-
Status = SamrQuerySecurityObject((SAMPR_HANDLE)ObjectHandle,
SecurityInformation,
Status = SamrQuerySecurityObject((SAMPR_HANDLE)ObjectHandle,
SecurityInformation,
- &pLocalSecurityDescriptor);
+ &SamSecurityDescriptor);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
- *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);
+ }