]> code.delx.au - refind/blobdiff - refind/lib.c
Added check for unbootable German iPartition-created FAT partition, so
[refind] / refind / lib.c
index cedf1a7a01009e240621874320a6cabdbccbfc33..dc187c6f8cb36783375a088c7a7539624f4ff4fc 100644 (file)
@@ -507,7 +507,7 @@ static VOID ScanVolumeBootcode(REFIT_VOLUME *Volume, BOOLEAN *Bootable)
     UINT8                   Buffer[SAMPLE_SIZE];
     UINTN                   i;
     MBR_PARTITION_INFO      *MbrTable;
-    BOOLEAN                 MbrTableFound;
+    BOOLEAN                 MbrTableFound = FALSE;
 
     Volume->HasBootCode = FALSE;
     Volume->OSIconName = NULL;
@@ -635,9 +635,13 @@ static VOID ScanVolumeBootcode(REFIT_VOLUME *Volume, BOOLEAN *Bootable)
         if (FindMem(Buffer, 512, "Press any key to restart", 24) >= 0)
             Volume->HasBootCode = FALSE;
 
+        // dummy FAT boot sector (created by iPartition)
+        if ((FindMem(Buffer, 512, "Medienfehler", 12) >= 0) &&
+            (FindMem(Buffer, 512, "Neustart: Taste dr\x81" "ken", 22) >= 0))
+            Volume->HasBootCode = FALSE;
+
         // check for MBR partition table
         if (*((UINT16 *)(Buffer + 510)) == 0xaa55) {
-            MbrTableFound = FALSE;
             MbrTable = (MBR_PARTITION_INFO *)(Buffer + 446);
             for (i = 0; i < 4; i++)
                 if (MbrTable[i].StartLBA && MbrTable[i].Size)