Do not overwrite the disk signature, if we install the boot code into the mbr.
authorHartmut Birr <osexpert@googlemail.com>
Sat, 17 Sep 2005 22:00:35 +0000 (22:00 +0000)
committerHartmut Birr <osexpert@googlemail.com>
Sat, 17 Sep 2005 22:00:35 +0000 (22:00 +0000)
svn path=/trunk/; revision=17903

reactos/subsys/system/usetup/bootsup.c
reactos/subsys/system/usetup/usetup.h

index 8059aad..22ce216 100644 (file)
@@ -1002,13 +1002,13 @@ InstallMbrBootCodeToDisk (PWSTR SrcPath,
   UNICODE_STRING Name;
   HANDLE FileHandle;
   NTSTATUS Status;
-  PUCHAR OrigBootSector;
-  PUCHAR NewBootSector;
+  PPARTITION_SECTOR OrigBootSector;
+  PPARTITION_SECTOR NewBootSector;
 
   /* Allocate buffer for original bootsector */
-  OrigBootSector = (PUCHAR)RtlAllocateHeap(ProcessHeap,
-                                          0,
-                                          SECTORSIZE);
+  OrigBootSector = (PPARTITION_SECTOR)RtlAllocateHeap(ProcessHeap,
+                                                     0,
+                                                      sizeof(PARTITION_SECTOR));
   if (OrigBootSector == NULL)
     return(STATUS_INSUFFICIENT_RESOURCES);
 
@@ -1052,9 +1052,9 @@ InstallMbrBootCodeToDisk (PWSTR SrcPath,
 
 
   /* Allocate buffer for new bootsector */
-  NewBootSector = (PUCHAR)RtlAllocateHeap(ProcessHeap,
-                                         0,
-                                         SECTORSIZE);
+  NewBootSector = (PPARTITION_SECTOR)RtlAllocateHeap(ProcessHeap,
+                                                    0,
+                                                     sizeof(PARTITION_SECTOR));
   if (NewBootSector == NULL)
   {
     RtlFreeHeap(ProcessHeap, 0, OrigBootSector);
@@ -1090,7 +1090,7 @@ InstallMbrBootCodeToDisk (PWSTR SrcPath,
                      NULL,
                      &IoStatusBlock,
                      NewBootSector,
-                     SECTORSIZE,
+                     sizeof(PARTITION_SECTOR),
                      NULL,
                      NULL);
   NtClose(FileHandle);
@@ -1102,9 +1102,9 @@ InstallMbrBootCodeToDisk (PWSTR SrcPath,
   }
 
   /* Copy partition table from old MBR to new */
-  RtlCopyMemory ((NewBootSector + 446),
-                (OrigBootSector + 446),
-                4*16 /* Length of partition table */);
+  RtlCopyMemory (&NewBootSector->Signature,
+                &OrigBootSector->Signature,
+                sizeof(PARTITION_SECTOR) - offsetof(PARTITION_SECTOR, Signature) /* Length of partition table */);
 
   /* Free the original boot sector */
   RtlFreeHeap(ProcessHeap, 0, OrigBootSector);
index 7a5a7de..191f8b1 100644 (file)
@@ -30,6 +30,7 @@
 /* C Headers */
 #include <ctype.h>
 #include <stdio.h>
+#include <stddef.h>
 
 /* PSDK/NDK */
 #include <windows.h>