From 24a4e12a769ab91027dc1a51e7579d138a3cdd91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Thu, 17 Jun 2021 16:36:32 +0200 Subject: [PATCH] [NTOS:IO] Check RtlAnsiStringToUnicodeString return value when initializing Arc names CORE-17637 --- ntoskrnl/io/iomgr/arcname.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ntoskrnl/io/iomgr/arcname.c b/ntoskrnl/io/iomgr/arcname.c index 937b5cfb0c5..3b516c40ddc 100644 --- a/ntoskrnl/io/iomgr/arcname.c +++ b/ntoskrnl/io/iomgr/arcname.c @@ -54,12 +54,16 @@ IopCreateArcNames(IN PLOADER_PARAMETER_BLOCK LoaderBlock) /* Create the global HAL partition name */ sprintf(Buffer, "\\ArcName\\%s", LoaderBlock->ArcHalDeviceName); RtlInitAnsiString(&ArcString, Buffer); - RtlAnsiStringToUnicodeString(&IoArcHalDeviceName, &ArcString, TRUE); + Status = RtlAnsiStringToUnicodeString(&IoArcHalDeviceName, &ArcString, TRUE); + if (!NT_SUCCESS(Status)) + return Status; /* Create the global system partition name */ sprintf(Buffer, "\\ArcName\\%s", LoaderBlock->ArcBootDeviceName); RtlInitAnsiString(&ArcString, Buffer); - RtlAnsiStringToUnicodeString(&IoArcBootDeviceName, &ArcString, TRUE); + Status = RtlAnsiStringToUnicodeString(&IoArcBootDeviceName, &ArcString, TRUE); + if (!NT_SUCCESS(Status)) + return Status; /* Allocate memory for the string */ Length = strlen(LoaderBlock->ArcBootDeviceName) + sizeof(ANSI_NULL);