]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy.c
Fix a bug when use workaround for Legacy BIOS access limitation with GPT partition...
[Ventoy.git] / GRUB2 / MOD_SRC / grub-2.04 / grub-core / ventoy / ventoy.c
index 6b4ee0133b245b8a2d78cdd5ff9d9b1778320563..a1a8cf8e8b3711299d0b5303adeb4c835fe94b4a 100644 (file)
@@ -1772,12 +1772,25 @@ int ventoy_check_device(grub_device_t dev)
 
     if (workaround)
     {
-        ventoy_part_table *PartTbl = g_ventoy_part_info->MBR.PartTbl;
-        if (PartTbl[1].StartSectorId != PartTbl[0].StartSectorId + PartTbl[0].SectorCount ||
-            PartTbl[1].SectorCount != 65536)
+        if (grub_strncmp(g_ventoy_part_info->Head.Signature, "EFI PART", 8) == 0)
         {
-            grub_file_close(file);
-            return ventoy_check_device_result(6);
+            ventoy_gpt_part_tbl *PartTbl = g_ventoy_part_info->PartTbl;
+            if (PartTbl[1].StartLBA != PartTbl[0].LastLBA + 1 ||
+                (PartTbl[1].LastLBA + 1 - PartTbl[1].StartLBA) != 65536)
+            {
+                grub_file_close(file);
+                return ventoy_check_device_result(6);
+            }
+        }
+        else
+        {
+            ventoy_part_table *PartTbl = g_ventoy_part_info->MBR.PartTbl;
+            if (PartTbl[1].StartSectorId != PartTbl[0].StartSectorId + PartTbl[0].SectorCount ||
+                PartTbl[1].SectorCount != 65536)
+            {
+                grub_file_close(file);
+                return ventoy_check_device_result(6);
+            }
         }
     }
     else