From 278201bc31b45ac001d1a936f9ffca4b691c2759 Mon Sep 17 00:00:00 2001 From: Glenn Washburn Date: Tue, 15 Dec 2020 17:31:07 -0600 Subject: [PATCH] luks2: Do not handle disks of size GRUB_DISK_SIZE_UNKNOWN for now Check to make sure that source disk has a known size. If not, print a message and return error. There are 4 cases where GRUB_DISK_SIZE_UNKNOWN is set (biosdisk, obdisk, ofdisk, and uboot), and in all those cases processing continues. So this is probably a bit conservative. However, 3 of the cases seem pathological, and the other, biosdisk, happens when booting from a CD-ROM. Since I doubt booting from a LUKS2 volume on a CD-ROM is a big use case, we'll error until someone complains. Signed-off-by: Glenn Washburn Reviewed-by: Daniel Kiper --- grub-core/disk/luks2.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c index 8c1156dd0..d30a82a09 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c @@ -600,6 +600,15 @@ luks2_recover_key (grub_disk_t source, goto err; } + if (grub_disk_native_sectors (source) == GRUB_DISK_SIZE_UNKNOWN) + { + /* FIXME: Allow use of source disk, and maybe cause errors in read. */ + grub_dprintf ("luks2", "Source disk %s has an unknown size, " + "conservatively returning error\n", source->name); + ret = grub_error (GRUB_ERR_BUG, "Unknown size of luks2 source device"); + goto err; + } + /* Try all keyslot */ for (json_idx = 0; json_idx < size; json_idx++) {