- Fixed some NULL-terminating issues that caused the 'videoprt.sys???????????????' module name problem.

svn path=/trunk/; revision=9557
This commit is contained in:
Filip Navara 2004-05-30 11:47:43 +00:00
parent 9fa3a2fdb7
commit 4bbc945c9c

View file

@ -1,4 +1,4 @@
/* $Id: loader.c,v 1.141 2004/03/27 19:41:32 navaraf Exp $ /* $Id: loader.c,v 1.142 2004/05/30 11:47:43 navaraf Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -975,6 +975,11 @@ LdrPEProcessModule(PVOID ModuleLoadBase,
NameString.Buffer = NameBuffer; NameString.Buffer = NameBuffer;
NameString.MaximumLength = NameString.MaximumLength =
NameString.Length = PathLength + ModuleName.Length; NameString.Length = PathLength + ModuleName.Length;
/* NULL-terminate */
NameString.MaximumLength++;
NameBuffer[NameString.Length / sizeof(WCHAR)] = 0;
Status = LdrLoadModule(&NameString, &LibraryModuleObject); Status = LdrLoadModule(&NameString, &LibraryModuleObject);
} }
else else
@ -1106,8 +1111,10 @@ LdrPEProcessModule(PVOID ModuleLoadBase,
CreatedModuleObject->Base = DriverBase; CreatedModuleObject->Base = DriverBase;
CreatedModuleObject->Flags = MODULE_FLAG_PE; CreatedModuleObject->Flags = MODULE_FLAG_PE;
RtlCreateUnicodeString(&CreatedModuleObject->FullName, CreatedModuleObject->FullName.Length = 0;
FileName->Buffer); CreatedModuleObject->FullName.MaximumLength = FileName->Length + sizeof(UNICODE_NULL);
CreatedModuleObject->FullName.Buffer = ExAllocatePool(PagedPool, CreatedModuleObject->FullName.MaximumLength);
RtlCopyUnicodeString(&CreatedModuleObject->FullName, FileName);
LdrpBuildModuleBaseName(&CreatedModuleObject->BaseName, LdrpBuildModuleBaseName(&CreatedModuleObject->BaseName,
&CreatedModuleObject->FullName); &CreatedModuleObject->FullName);
@ -1144,8 +1151,11 @@ LdrPEProcessModule(PVOID ModuleLoadBase,
ModuleTextSection->Base = (ULONG)DriverBase; ModuleTextSection->Base = (ULONG)DriverBase;
ModuleTextSection->Length = DriverSize; ModuleTextSection->Length = DriverSize;
ModuleTextSection->Name = ExAllocatePool(NonPagedPool, ModuleTextSection->Name = ExAllocatePool(NonPagedPool,
(wcslen(CreatedModuleObject->BaseName.Buffer) + 1) * sizeof(WCHAR)); (CreatedModuleObject->BaseName.Length + 1) * sizeof(WCHAR));
wcscpy(ModuleTextSection->Name, CreatedModuleObject->BaseName.Buffer); RtlCopyMemory(ModuleTextSection->Name,
CreatedModuleObject->BaseName.Buffer,
CreatedModuleObject->BaseName.Length);
ModuleTextSection->Name[CreatedModuleObject->BaseName.Length / sizeof(WCHAR)] = 0;
ModuleTextSection->OptionalHeader = ModuleTextSection->OptionalHeader =
CreatedModuleObject->Image.PE.OptionalHeader; CreatedModuleObject->Image.PE.OptionalHeader;
InsertTailList(&ModuleTextListHead, &ModuleTextSection->ListEntry); InsertTailList(&ModuleTextListHead, &ModuleTextSection->ListEntry);