https://git.reactos.org/?p=reactos.git;a=commitdiff;h=3b78ca210ef49c020e3432...
commit 3b78ca210ef49c020e34321ba9206c83340f26c0 Author: Pierre Schweitzer pierre@reactos.org AuthorDate: Sun Sep 29 14:16:44 2019 +0200 Commit: Pierre Schweitzer pierre@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);
}