[NTOS:IO] IopCreateArcNamesDisk(): Fix the ArcName link creation condition check.

The bug was introduced in commit 6d0861e9e (r49131).
This commit is contained in:
Hermès Bélusca-Maïto 2024-06-11 22:21:49 +02:00
parent 5e3f3f59df
commit 3fe12f1a7c
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0

View file

@ -703,16 +703,16 @@ IopCreateArcNamesDisk(IN PLOADER_PARAMETER_BLOCK LoaderBlock,
ARC_DISK_SIGNATURE, ARC_DISK_SIGNATURE,
ListEntry); ListEntry);
/* If they match, i.e. /*
* - There's only one disk for both BIOS and detected/enabled * If this is the only MBR disk in the ARC list and detected
* - Signatures are matching * in the device tree, just go ahead and create the ArcName link.
* - Checksums are matching * Otherwise, check whether the signatures and checksums match
* - This is MBR * before creating the ArcName link.
*/ */
if (((SingleDisk && DiskCount == 1) || if ((SingleDisk && (DiskCount == 1) &&
(DriveLayout->PartitionStyle == PARTITION_STYLE_MBR)) ||
(IopVerifyDiskSignature(DriveLayout, ArcDiskSignature, &Signature) && (IopVerifyDiskSignature(DriveLayout, ArcDiskSignature, &Signature) &&
(ArcDiskSignature->CheckSum + CheckSum == 0))) && (ArcDiskSignature->CheckSum + CheckSum == 0)))
(DriveLayout->PartitionStyle == PARTITION_STYLE_MBR))
{ {
/* Create device name */ /* Create device name */
sprintf(Buffer, "\\Device\\Harddisk%lu\\Partition0", sprintf(Buffer, "\\Device\\Harddisk%lu\\Partition0",