diff --git a/reactos/boot/freeldr/freeldr/arch/i386/hardware.c b/reactos/boot/freeldr/freeldr/arch/i386/hardware.c index f99e26780d6..641bd8d4c94 100644 --- a/reactos/boot/freeldr/freeldr/arch/i386/hardware.c +++ b/reactos/boot/freeldr/freeldr/arch/i386/hardware.c @@ -1004,6 +1004,7 @@ DetectBiosDisks(PCONFIGURATION_COMPONENT_DATA BusKey) /* Calculate the MBR checksum */ for (i = 0; i < 2048 / sizeof(ULONG); i++) Checksum += Buffer[i]; + Checksum = ~Checksum + 1; DPRINTM(DPRINT_HWDETECT, "Checksum: %x\n", Checksum); /* Fill out the ARC disk block */ diff --git a/reactos/ntoskrnl/io/iomgr/arcname.c b/reactos/ntoskrnl/io/iomgr/arcname.c index 003c9bfc8ca..0ff87d5c894 100644 --- a/reactos/ntoskrnl/io/iomgr/arcname.c +++ b/reactos/ntoskrnl/io/iomgr/arcname.c @@ -368,7 +368,7 @@ IopAssignArcNamesToCdrom(IN PLOADER_PARAMETER_BLOCK LoaderBlock, ARC_DISK_SIGNATURE, ListEntry); /* And check if checksums and arc names match */ - if (CheckSum == ArcDiskEntry->CheckSum && + if (CheckSum + ArcDiskEntry->CheckSum == 0 && strcmp(KeLoaderBlock->ArcBootDeviceName, ArcDiskEntry->ArcName) == 0) { IsBootCdRom = TRUE;