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 <development@efficientek.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
Glenn Washburn 2020-12-15 17:31:07 -06:00 committed by Daniel Kiper
parent 90fb18632e
commit 278201bc31

View File

@ -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++)
{