mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
[ntoskrnl] Never suppose that buffer in UNICODE_STRING is null terminated. Fixes display artifacts on list of loaded drivers
svn path=/trunk/; revision=46193
This commit is contained in:
parent
c709d2abc9
commit
c39812d1b6
2 changed files with 14 additions and 28 deletions
|
@ -158,35 +158,22 @@ IopGetDriverObject(
|
|||
VOID
|
||||
FASTCALL
|
||||
INIT_FUNCTION
|
||||
IopDisplayLoadingMessage(PVOID ServiceName,
|
||||
BOOLEAN Unicode)
|
||||
IopDisplayLoadingMessage(PUNICODE_STRING ServiceName)
|
||||
{
|
||||
CHAR TextBuffer[256];
|
||||
PCHAR Extra = ".sys";
|
||||
|
||||
if (ExpInTextModeSetup) return;
|
||||
if (Unicode)
|
||||
{
|
||||
if (wcsstr(_wcsupr(ServiceName), L".SYS")) Extra = "";
|
||||
sprintf(TextBuffer,
|
||||
"%s%s%s\\%S%s\n",
|
||||
KeLoaderBlock->ArcBootDeviceName,
|
||||
KeLoaderBlock->NtBootPathName,
|
||||
"System32\\Drivers",
|
||||
(PWCHAR)ServiceName,
|
||||
Extra);
|
||||
}
|
||||
RtlUpcaseUnicodeString(ServiceName, ServiceName, FALSE);
|
||||
snprintf(TextBuffer, sizeof(TextBuffer),
|
||||
"%s%s%s\\%wZ",
|
||||
KeLoaderBlock->ArcBootDeviceName,
|
||||
KeLoaderBlock->NtBootPathName,
|
||||
"System32\\Drivers",
|
||||
ServiceName);
|
||||
if (!strstr(TextBuffer, ".sys"))
|
||||
strcat(TextBuffer, ".sys\n");
|
||||
else
|
||||
{
|
||||
if (strstr(_strupr(ServiceName), ".SYS")) Extra = "";
|
||||
sprintf(TextBuffer,
|
||||
"%s%s%s\\%s%s\n",
|
||||
KeLoaderBlock->ArcBootDeviceName,
|
||||
KeLoaderBlock->NtBootPathName,
|
||||
"System32\\Drivers",
|
||||
(PCHAR)ServiceName,
|
||||
Extra);
|
||||
}
|
||||
strcat(TextBuffer, "\n");
|
||||
HalDisplayString(TextBuffer);
|
||||
}
|
||||
|
||||
|
@ -788,7 +775,7 @@ IopInitializeBuiltinDriver(IN PLDR_DATA_TABLE_ENTRY LdrEntry)
|
|||
/*
|
||||
* Display 'Loading XXX...' message
|
||||
*/
|
||||
IopDisplayLoadingMessage(ModuleName->Buffer, TRUE);
|
||||
IopDisplayLoadingMessage(ModuleName);
|
||||
InbvIndicateProgress();
|
||||
|
||||
/*
|
||||
|
|
|
@ -48,8 +48,7 @@ extern BOOLEAN NoGuiBoot;
|
|||
VOID
|
||||
FASTCALL
|
||||
INIT_FUNCTION
|
||||
IopDisplayLoadingMessage(PVOID ServiceName,
|
||||
BOOLEAN Unicode);
|
||||
IopDisplayLoadingMessage(PUNICODE_STRING ServiceName);
|
||||
|
||||
/* PRIVATE FUNCTIONS **********************************************************/
|
||||
|
||||
|
@ -416,7 +415,7 @@ IopLoadDriver(PSERVICE Service)
|
|||
{
|
||||
NTSTATUS Status = STATUS_UNSUCCESSFUL;
|
||||
|
||||
IopDisplayLoadingMessage(Service->ServiceName.Buffer, TRUE);
|
||||
IopDisplayLoadingMessage(&Service->ServiceName);
|
||||
Status = ZwLoadDriver(&Service->RegistryPath);
|
||||
IopBootLog(&Service->ImagePath, NT_SUCCESS(Status) ? TRUE : FALSE);
|
||||
if (!NT_SUCCESS(Status))
|
||||
|
|
Loading…
Reference in a new issue