mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 21:12:59 +00:00
- SEH-protect LsaClose, LsaDelete and LsaOpenPolicy.
- Move the code of LsaOpenPolicy into LsarOpenPolicy and make LsaOpenPolicy call LsarOpenPolicy. svn path=/trunk/; revision=38078
This commit is contained in:
parent
1605d036fe
commit
41a958b128
2 changed files with 65 additions and 19 deletions
|
@ -78,13 +78,21 @@ PLSAPR_SERVER_NAME_unbind(PLSAPR_SERVER_NAME pszSystemName,
|
||||||
NTSTATUS WINAPI
|
NTSTATUS WINAPI
|
||||||
LsaClose(LSA_HANDLE ObjectHandle)
|
LsaClose(LSA_HANDLE ObjectHandle)
|
||||||
{
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
TRACE("LsaClose(0x%p) called\n", ObjectHandle);
|
TRACE("LsaClose(0x%p) called\n", ObjectHandle);
|
||||||
|
|
||||||
/* This is our fake handle, don't go too much long way */
|
_SEH2_TRY
|
||||||
if (ObjectHandle == (LSA_HANDLE)0xcafe)
|
{
|
||||||
return STATUS_SUCCESS;
|
Status = LsarClose((PLSAPR_HANDLE)&ObjectHandle);
|
||||||
|
}
|
||||||
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
Status = I_RpcMapWin32Status(RpcExceptionCode());
|
||||||
|
}
|
||||||
|
_SEH2_END;
|
||||||
|
|
||||||
return LsarClose((PLSAPR_HANDLE)&ObjectHandle);
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -94,9 +102,21 @@ LsaClose(LSA_HANDLE ObjectHandle)
|
||||||
NTSTATUS WINAPI
|
NTSTATUS WINAPI
|
||||||
LsaDelete(LSA_HANDLE ObjectHandle)
|
LsaDelete(LSA_HANDLE ObjectHandle)
|
||||||
{
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
TRACE("LsaDelete(0x%p) called\n", ObjectHandle);
|
TRACE("LsaDelete(0x%p) called\n", ObjectHandle);
|
||||||
|
|
||||||
return LsarDelete((LSAPR_HANDLE)ObjectHandle);
|
_SEH2_TRY
|
||||||
|
{
|
||||||
|
Status = LsarDelete((LSAPR_HANDLE)ObjectHandle);
|
||||||
|
}
|
||||||
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
Status = I_RpcMapWin32Status(RpcExceptionCode());
|
||||||
|
}
|
||||||
|
_SEH2_END;
|
||||||
|
|
||||||
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -365,14 +385,33 @@ LsaOpenPolicy(
|
||||||
IN ACCESS_MASK DesiredAccess,
|
IN ACCESS_MASK DesiredAccess,
|
||||||
IN OUT PLSA_HANDLE PolicyHandle)
|
IN OUT PLSA_HANDLE PolicyHandle)
|
||||||
{
|
{
|
||||||
TRACE("(%s,%p,0x%08x,%p) stub\n",
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
TRACE("LsaOpenPolicy (%s,%p,0x%08x,%p)\n",
|
||||||
SystemName?debugstr_w(SystemName->Buffer):"(null)",
|
SystemName?debugstr_w(SystemName->Buffer):"(null)",
|
||||||
ObjectAttributes, DesiredAccess, PolicyHandle);
|
ObjectAttributes, DesiredAccess, PolicyHandle);
|
||||||
|
|
||||||
if(PolicyHandle) *PolicyHandle = (LSA_HANDLE)0xcafe;
|
_SEH2_TRY
|
||||||
return STATUS_SUCCESS;
|
{
|
||||||
|
*PolicyHandle = NULL;
|
||||||
|
|
||||||
|
Status = LsarOpenPolicy(SystemName->Buffer,
|
||||||
|
(PLSAPR_OBJECT_ATTRIBUTES)ObjectAttributes,
|
||||||
|
DesiredAccess,
|
||||||
|
PolicyHandle);
|
||||||
|
}
|
||||||
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
Status = I_RpcMapWin32Status(RpcExceptionCode());
|
||||||
|
}
|
||||||
|
_SEH2_END;
|
||||||
|
|
||||||
|
TRACE("LsaOpenPolicy() done (Status: 0x%08lx)\n", Status);
|
||||||
|
|
||||||
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -162,8 +162,8 @@ void __RPC_USER LSAPR_HANDLE_rundown(LSAPR_HANDLE hHandle)
|
||||||
|
|
||||||
|
|
||||||
/* Function 0 */
|
/* Function 0 */
|
||||||
NTSTATUS LsarClose(
|
NTSTATUS
|
||||||
LSAPR_HANDLE *ObjectHandle)
|
LsarClose(LSAPR_HANDLE *ObjectHandle)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
PLSAR_POLICY_HANDLE Policy = NULL;
|
PLSAR_POLICY_HANDLE Policy = NULL;
|
||||||
|
@ -183,14 +183,24 @@ NTSTATUS LsarClose(
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
#endif
|
#endif
|
||||||
UNIMPLEMENTED;
|
NTSTATUS Status = STATUS_NOT_IMPLEMENTED;
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
|
TRACE("LsarClose called!\n");
|
||||||
|
|
||||||
|
/* This is our fake handle, don't go too much long way */
|
||||||
|
if (*ObjectHandle == (LSA_HANDLE)0xcafe)
|
||||||
|
Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
|
|
||||||
|
TRACE("LsarClose done (Status: 0x%08lx)!\n", Status);
|
||||||
|
|
||||||
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Function 1 */
|
/* Function 1 */
|
||||||
NTSTATUS LsarDelete(
|
NTSTATUS
|
||||||
LSAPR_HANDLE ObjectHandle)
|
LsarDelete(LSAPR_HANDLE ObjectHandle)
|
||||||
{
|
{
|
||||||
/* Deprecated */
|
/* Deprecated */
|
||||||
return STATUS_NOT_SUPPORTED;
|
return STATUS_NOT_SUPPORTED;
|
||||||
|
@ -252,16 +262,13 @@ NTSTATUS LsarOpenPolicy(
|
||||||
ACCESS_MASK DesiredAccess,
|
ACCESS_MASK DesiredAccess,
|
||||||
LSAPR_HANDLE *PolicyHandle)
|
LSAPR_HANDLE *PolicyHandle)
|
||||||
{
|
{
|
||||||
ERR("LsarOpenPolicy called!\n");
|
TRACE("LsarOpenPolicy called!\n");
|
||||||
|
|
||||||
*PolicyHandle = (LSAPR_HANDLE)0xcafe;
|
*PolicyHandle = (LSAPR_HANDLE)0xcafe;
|
||||||
|
|
||||||
ERR("LsarOpenPolicy done!\n");
|
TRACE("LsarOpenPolicy done!\n");
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
|
|
||||||
// UNIMPLEMENTED;
|
|
||||||
// return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue