From c68fcd3b1af54ab2f6ace105804fe80c05d43cf7 Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Thu, 11 Aug 2016 15:02:21 -0700 Subject: [PATCH] gpt: refuse to write to sector 0 --- grub-core/lib/gpt.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/grub-core/lib/gpt.c b/grub-core/lib/gpt.c index f83fe29ac..b7449911a 100644 --- a/grub-core/lib/gpt.c +++ b/grub-core/lib/gpt.c @@ -626,10 +626,17 @@ grub_gpt_write_table (grub_disk_t disk, grub_gpt_t gpt, sizeof (*header)); addr = grub_gpt_sector_to_addr (gpt, grub_le_to_cpu64 (header->header_lba)); + if (addr == 0) + return grub_error (GRUB_ERR_BUG, + "Refusing to write GPT header to address 0x0"); if (grub_disk_write (disk, addr, 0, sizeof (*header), header)) return grub_errno; addr = grub_gpt_sector_to_addr (gpt, grub_le_to_cpu64 (header->partitions)); + if (addr < 2) + return grub_error (GRUB_ERR_BUG, + "Refusing to write GPT entries to address 0x%llx", + (unsigned long long) addr); if (grub_disk_write (disk, addr, 0, gpt->entries_size, gpt->entries)) return grub_errno;