[NTOS:EX]

- Remove superfluous dereference in NtCreateProfile
- Allocate the right size for KPROFILE object
- Don't leak the KPROFILE when deleting an EPROFILE
- Avoid some casts
CORE-10066

svn path=/trunk/; revision=68852
This commit is contained in:
Thomas Faber 2015-08-29 07:35:59 +00:00
parent dd088b28fc
commit f917e6193e

View file

@ -42,7 +42,7 @@ ExpDeleteProfile(PVOID ObjectBody)
ULONG State;
/* Typecast the Object */
Profile = (PEPROFILE)ObjectBody;
Profile = ObjectBody;
/* Check if there if the Profile was started */
if (Profile->LockedBufferAddress)
@ -55,6 +55,7 @@ ExpDeleteProfile(PVOID ObjectBody)
MmUnmapLockedPages(Profile->LockedBufferAddress, Profile->Mdl);
MmUnlockPages(Profile->Mdl);
IoFreeMdl(Profile->Mdl);
ExFreePoolWithTag(Profile->ProfileObject, TAG_PROFILE);
}
/* Check if a Process is associated and reference it */
@ -247,7 +248,6 @@ NtCreateProfile(OUT PHANDLE ProfileHandle,
0,
NULL,
&hProfile);
ObDereferenceObject(Profile);
/* Check for Success */
if (!NT_SUCCESS(Status))
@ -361,7 +361,7 @@ NtStartProfile(IN HANDLE ProfileHandle)
/* Allocate a Kernel Profile Object. */
ProfileObject = ExAllocatePoolWithTag(NonPagedPool,
sizeof(EPROFILE),
sizeof(*ProfileObject),
TAG_PROFILE);
if (!ProfileObject)
{
@ -396,7 +396,7 @@ NtStartProfile(IN HANDLE ProfileHandle)
/* Initialize the Kernel Profile Object */
Profile->ProfileObject = ProfileObject;
KeInitializeProfile(ProfileObject,
(PKPROCESS)Profile->Process,
&Profile->Process->Pcb,
Profile->RangeBase,
Profile->RangeSize,
Profile->BucketSize,