https://git.reactos.org/?p=reactos.git;a=commitdiff;h=3b78ca210ef49c020e343…
commit 3b78ca210ef49c020e34321ba9206c83340f26c0
Author: Pierre Schweitzer <pierre(a)reactos.org>
AuthorDate: Sun Sep 29 14:16:44 2019 +0200
Commit: Pierre Schweitzer <pierre(a)reactos.org>
CommitDate: Sun Sep 29 14:16:44 2019 +0200
[NTOSKRNL] Simplify buffer definition in MiQueryMemorySectionName().
Also take into account the UNICODE_STRING structure while computing whole size
This is based on Thomas' patch.
CORE-12043
---
ntoskrnl/mm/ARM3/section.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/ntoskrnl/mm/ARM3/section.c b/ntoskrnl/mm/ARM3/section.c
index e50aa518e5d..6bc1a6ef8db 100644
--- a/ntoskrnl/mm/ARM3/section.c
+++ b/ntoskrnl/mm/ARM3/section.c
@@ -1923,11 +1923,12 @@ MiQueryMemorySectionName(IN HANDLE ProcessHandle,
{
_SEH2_TRY
{
- RtlInitUnicodeString(&SectionName->SectionFileName,
SectionName->NameBuffer);
- SectionName->SectionFileName.MaximumLength =
(USHORT)MemoryInformationLength;
+ RtlInitEmptyUnicodeString(&SectionName->SectionFileName,
+ (PWSTR)(SectionName + 1),
+ MemoryInformationLength -
sizeof(MEMORY_SECTION_NAME));
RtlCopyUnicodeString(&SectionName->SectionFileName,
&ModuleFileName);
- if (ReturnLength) *ReturnLength = ModuleFileName.Length;
+ if (ReturnLength) *ReturnLength = ModuleFileName.Length +
sizeof(MEMORY_SECTION_NAME);
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
@@ -1938,11 +1939,12 @@ MiQueryMemorySectionName(IN HANDLE ProcessHandle,
}
else
{
- RtlInitUnicodeString(&SectionName->SectionFileName,
SectionName->NameBuffer);
- SectionName->SectionFileName.MaximumLength =
(USHORT)MemoryInformationLength;
+ RtlInitEmptyUnicodeString(&SectionName->SectionFileName,
+ (PWSTR)(SectionName + 1),
+ MemoryInformationLength -
sizeof(MEMORY_SECTION_NAME));
RtlCopyUnicodeString(&SectionName->SectionFileName,
&ModuleFileName);
- if (ReturnLength) *ReturnLength = ModuleFileName.Length;
+ if (ReturnLength) *ReturnLength = ModuleFileName.Length +
sizeof(MEMORY_SECTION_NAME);
}