mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 09:25:10 +00:00
[LSALIB]
- Fix LsaFreeReturnBuffer. It is used to free virtual memory instead of heap memory because Buffer is a pointer to a virtual memory buffer that has been allocated by an authentication package. - Fix several DataLength calculations and a typo. svn path=/trunk/; revision=58815
This commit is contained in:
parent
c927959df8
commit
7029a8be32
1 changed files with 12 additions and 6 deletions
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
#include <ndk/lpctypes.h>
|
#include <ndk/lpctypes.h>
|
||||||
#include <ndk/lpcfuncs.h>
|
#include <ndk/lpcfuncs.h>
|
||||||
|
#include <ndk/mmfuncs.h>
|
||||||
#include <ndk/rtlfuncs.h>
|
#include <ndk/rtlfuncs.h>
|
||||||
#include <ndk/obfuncs.h>
|
#include <ndk/obfuncs.h>
|
||||||
#include <psdk/ntsecapi.h>
|
#include <psdk/ntsecapi.h>
|
||||||
|
@ -37,7 +38,7 @@ LsaDeregisterLogonProcess(HANDLE LsaHandle)
|
||||||
DPRINT1("LsaDeregisterLogonProcess()\n");
|
DPRINT1("LsaDeregisterLogonProcess()\n");
|
||||||
|
|
||||||
ApiMessage.ApiNumber = LSASS_REQUEST_DEREGISTER_LOGON_PROCESS;
|
ApiMessage.ApiNumber = LSASS_REQUEST_DEREGISTER_LOGON_PROCESS;
|
||||||
ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.DeregisterLogonProcess.Request);
|
ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.DeregisterLogonProcess);
|
||||||
ApiMessage.h.u1.s1.TotalLength = LSA_PORT_MESSAGE_SIZE;
|
ApiMessage.h.u1.s1.TotalLength = LSA_PORT_MESSAGE_SIZE;
|
||||||
ApiMessage.h.u2.ZeroInit = 0;
|
ApiMessage.h.u2.ZeroInit = 0;
|
||||||
|
|
||||||
|
@ -93,7 +94,7 @@ LsaCallAuthenticationPackage(HANDLE LsaHandle,
|
||||||
DPRINT1("LsaCallAuthenticationPackage()\n");
|
DPRINT1("LsaCallAuthenticationPackage()\n");
|
||||||
|
|
||||||
ApiMessage.ApiNumber = LSASS_REQUEST_CALL_AUTHENTICATION_PACKAGE;
|
ApiMessage.ApiNumber = LSASS_REQUEST_CALL_AUTHENTICATION_PACKAGE;
|
||||||
ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.CallAuthenticationPackage.Request);
|
ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.CallAuthenticationPackage);
|
||||||
ApiMessage.h.u1.s1.TotalLength = LSA_PORT_MESSAGE_SIZE;
|
ApiMessage.h.u1.s1.TotalLength = LSA_PORT_MESSAGE_SIZE;
|
||||||
ApiMessage.h.u2.ZeroInit = 0;
|
ApiMessage.h.u2.ZeroInit = 0;
|
||||||
|
|
||||||
|
@ -180,7 +181,12 @@ LsaCallAuthenticationPackage(HANDLE LsaHandle,
|
||||||
NTSTATUS WINAPI
|
NTSTATUS WINAPI
|
||||||
LsaFreeReturnBuffer(PVOID Buffer)
|
LsaFreeReturnBuffer(PVOID Buffer)
|
||||||
{
|
{
|
||||||
return RtlFreeHeap(Secur32Heap, 0, Buffer);
|
ULONG Length = 0;
|
||||||
|
|
||||||
|
return ZwFreeVirtualMemory(NtCurrentProcess(),
|
||||||
|
&Buffer,
|
||||||
|
&Length,
|
||||||
|
MEM_RELEASE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -202,7 +208,7 @@ LsaLookupAuthenticationPackage(HANDLE LsaHandle,
|
||||||
}
|
}
|
||||||
|
|
||||||
ApiMessage.ApiNumber = LSASS_REQUEST_LOOKUP_AUTHENTICATION_PACKAGE;
|
ApiMessage.ApiNumber = LSASS_REQUEST_LOOKUP_AUTHENTICATION_PACKAGE;
|
||||||
ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.LookupAuthenticationPackage.Request);
|
ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.LookupAuthenticationPackage);
|
||||||
ApiMessage.h.u1.s1.TotalLength = LSA_PORT_MESSAGE_SIZE;
|
ApiMessage.h.u1.s1.TotalLength = LSA_PORT_MESSAGE_SIZE;
|
||||||
ApiMessage.h.u2.ZeroInit = 0;
|
ApiMessage.h.u2.ZeroInit = 0;
|
||||||
|
|
||||||
|
@ -254,7 +260,7 @@ LsaLogonUser(HANDLE LsaHandle,
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
ApiMessage.ApiNumber = LSASS_REQUEST_LOGON_USER;
|
ApiMessage.ApiNumber = LSASS_REQUEST_LOGON_USER;
|
||||||
ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.LogonUser.Request);
|
ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.LogonUser);
|
||||||
ApiMessage.h.u1.s1.TotalLength = LSA_PORT_MESSAGE_SIZE;
|
ApiMessage.h.u1.s1.TotalLength = LSA_PORT_MESSAGE_SIZE;
|
||||||
ApiMessage.h.u2.ZeroInit = 0;
|
ApiMessage.h.u2.ZeroInit = 0;
|
||||||
|
|
||||||
|
@ -267,7 +273,7 @@ LsaLogonUser(HANDLE LsaHandle,
|
||||||
if (LocalGroups != NULL)
|
if (LocalGroups != NULL)
|
||||||
ApiMessage.LogonUser.Request.LocalGroupsCount = LocalGroups->GroupCount;
|
ApiMessage.LogonUser.Request.LocalGroupsCount = LocalGroups->GroupCount;
|
||||||
else
|
else
|
||||||
ApiMessage.LogonUser.Request.LocalGroups = 0;
|
ApiMessage.LogonUser.Request.LocalGroupsCount = 0;
|
||||||
ApiMessage.LogonUser.Request.SourceContext = *SourceContext;
|
ApiMessage.LogonUser.Request.SourceContext = *SourceContext;
|
||||||
|
|
||||||
Status = ZwRequestWaitReplyPort(LsaHandle,
|
Status = ZwRequestWaitReplyPort(LsaHandle,
|
||||||
|
|
Loading…
Reference in a new issue