[NTOS:IO]: An improvement for the total log size check (addendum to r73167).

svn path=/trunk/; revision=73168
This commit is contained in:
Hermès Bélusca-Maïto 2016-11-07 13:57:11 +00:00
parent 0dfecf815d
commit 323bd18771

View file

@ -554,10 +554,6 @@ IoAllocateErrorLogEntry(IN PVOID IoObject,
return NULL;
}
/* Check if we're past our buffer */
// FIXME/TODO: Perform the checks by taking into account EntrySize.
if (IopTotalLogSize > IOP_MAXIMUM_LOG_SIZE) return NULL;
/* Check whether the size is too small or too large */
if ((EntrySize < sizeof(IO_ERROR_LOG_PACKET)) ||
(EntrySize > ERROR_LOG_MAXIMUM_SIZE))
@ -566,11 +562,15 @@ IoAllocateErrorLogEntry(IN PVOID IoObject,
return NULL;
}
/* Round up the size */
/* Round up the size and calculate the total size */
EntrySize = ROUND_UP(EntrySize, sizeof(PVOID));
/* Calculate the total size and allocate it */
LogEntrySize = sizeof(ERROR_LOG_ENTRY) + EntrySize;
/* Check if we're past our buffer */
// TODO: Improve (what happens in case of concurrent calls?)
if (IopTotalLogSize + LogEntrySize > IOP_MAXIMUM_LOG_SIZE) return NULL;
/* Allocate the entry */
LogEntry = ExAllocatePoolWithTag(NonPagedPool,
LogEntrySize,
TAG_ERROR_LOG);