[ros-diffs] [pschweitzer] 49040: [FREELDR] Fix CDs checksum computation [NTOSKRNL] Fix ARC names accordingly

pschweitzer at svn.reactos.org pschweitzer at svn.reactos.org
Thu Oct 7 19:16:10 UTC 2010


Author: pschweitzer
Date: Thu Oct  7 19:16:09 2010
New Revision: 49040

URL: http://svn.reactos.org/svn/reactos?rev=49040&view=rev
Log:
[FREELDR]
Fix CDs checksum computation
[NTOSKRNL]
Fix ARC names accordingly

Modified:
    trunk/reactos/boot/freeldr/freeldr/arch/i386/hardware.c
    trunk/reactos/ntoskrnl/io/iomgr/arcname.c

Modified: trunk/reactos/boot/freeldr/freeldr/arch/i386/hardware.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/arch/i386/hardware.c?rev=49040&r1=49039&r2=49040&view=diff
==============================================================================
--- trunk/reactos/boot/freeldr/freeldr/arch/i386/hardware.c [iso-8859-1] (original)
+++ trunk/reactos/boot/freeldr/freeldr/arch/i386/hardware.c [iso-8859-1] Thu Oct  7 19:16:09 2010
@@ -1004,6 +1004,7 @@
 
         /* 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 */

Modified: trunk/reactos/ntoskrnl/io/iomgr/arcname.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/arcname.c?rev=49040&r1=49039&r2=49040&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/io/iomgr/arcname.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/io/iomgr/arcname.c [iso-8859-1] Thu Oct  7 19:16:09 2010
@@ -368,7 +368,7 @@
                                          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;




More information about the Ros-diffs mailing list