:: commit 6463f81a6111442356a2ebf870ec621f2b7f6ddc

mintsuki <mintsuki@protonmail.com> — 2021-03-29 16:39

parents: 45db53a747

Binary release v2.1

diff --git a/BOOTX64.EFI b/BOOTX64.EFI
index 5efa63b0..64efdb41 100755
Binary files a/BOOTX64.EFI and b/BOOTX64.EFI differ
diff --git a/limine-cd.bin b/limine-cd.bin
index 29594a16..342aba38 100644
Binary files a/limine-cd.bin and b/limine-cd.bin differ
diff --git a/limine-eltorito-efi.bin b/limine-eltorito-efi.bin
index 0ec68c71..54f65d61 100644
Binary files a/limine-eltorito-efi.bin and b/limine-eltorito-efi.bin differ
diff --git a/limine-hdd.bin b/limine-hdd.bin
index 335bb5d0..5934172b 100644
Binary files a/limine-hdd.bin and b/limine-hdd.bin differ
diff --git a/limine-install-linux-x86_32 b/limine-install-linux-x86_32
index 0f92066b..38831466 100755
Binary files a/limine-install-linux-x86_32 and b/limine-install-linux-x86_32 differ
diff --git a/limine-install-linux-x86_64 b/limine-install-linux-x86_64
index 8b6d1a4a..af89436c 100755
Binary files a/limine-install-linux-x86_64 and b/limine-install-linux-x86_64 differ
diff --git a/limine-install-win32.exe b/limine-install-win32.exe
index daeab4e7..1dfc67c9 100755
Binary files a/limine-install-win32.exe and b/limine-install-win32.exe differ
diff --git a/limine-install.c b/limine-install.c
index 15832164..022dc7f9 100644
--- a/limine-install.c
+++ b/limine-install.c
@@ -329,6 +329,55 @@ int main(int argc, char *argv[]) {
         }
     }
 
+    int mbr = 0;
+    if (gpt == 0) {
+        // Do all sanity checks on MBR
+        mbr = 1;
+
+        uint16_t hint = 0;
+        device_read(&hint, 218, sizeof(uint16_t));
+        if (hint != 0)
+            mbr = 0;
+
+        device_read(&hint, 444, sizeof(uint16_t));
+        if (hint != 0 && hint != 0x5a5a)
+            mbr = 0;
+
+        device_read(&hint, 510, sizeof(uint16_t));
+        if (hint != 0xaa55)
+            mbr = 0;
+
+        device_read(&hint, 446, sizeof(uint8_t));
+        if ((uint8_t)hint != 0x00 && (uint8_t)hint != 0x80)
+            mbr = 0;
+        device_read(&hint, 462, sizeof(uint8_t));
+        if ((uint8_t)hint != 0x00 && (uint8_t)hint != 0x80)
+            mbr = 0;
+        device_read(&hint, 478, sizeof(uint8_t));
+        if ((uint8_t)hint != 0x00 && (uint8_t)hint != 0x80)
+            mbr = 0;
+        device_read(&hint, 494, sizeof(uint8_t));
+        if ((uint8_t)hint != 0x00 && (uint8_t)hint != 0x80)
+            mbr = 0;
+
+        char hintc[64];
+        device_read(hintc, 4, 8);
+        if (memcmp(hintc, "_ECH_FS_", 8) == 0)
+            mbr = 0;
+        device_read(hintc, 54, 3);
+        if (memcmp(hintc, "FAT", 3) == 0)
+            mbr = 0;
+        device_read(&hint, 1080, sizeof(uint16_t));
+        if (hint == 0xef53)
+            mbr = 0;
+    }
+
+    if (gpt == 0 && mbr == 0) {
+        fprintf(stderr, "ERROR: Could not determine if the device has a valid partition table.\n");
+        fprintf(stderr, "       Please ensure the device has a valid MBR or GPT.\n");
+        goto cleanup;
+    }
+
     size_t   stage2_size   = bootloader_file_size - 512;
 
     size_t   stage2_sects  = DIV_ROUNDUP(stage2_size, 512);
diff --git a/limine-pxe.bin b/limine-pxe.bin
index 231bb37e..841f131a 100644
Binary files a/limine-pxe.bin and b/limine-pxe.bin differ
diff --git a/limine.sys b/limine.sys
index 8772ef19..87b3a026 100755
Binary files a/limine.sys and b/limine.sys differ
tab: 248 wrap: offon