osdep/devmapper/getroot: Have devmapper recognize LUKS2

Changes UUID comparisons so that LUKS1 and LUKS2 are both recognized
as being LUKS cryptodisks.

Signed-off-by: Josselin Poiret <dev@jpoiret.xyz>
Tested-by: Glenn Washburn <development@efficientek.com>
Reviewed-by: Patrick Steinhardt <ps@pks.im>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
Josselin Poiret 2023-01-12 17:05:08 -06:00 committed by Daniel Kiper
parent efc9c363b2
commit 9022a48dd9

View File

@ -138,7 +138,8 @@ grub_util_get_dm_abstraction (const char *os_dev)
grub_free (uuid); grub_free (uuid);
return GRUB_DEV_ABSTRACTION_LVM; return GRUB_DEV_ABSTRACTION_LVM;
} }
if (strncmp (uuid, "CRYPT-LUKS1-", 12) == 0) if (strncmp (uuid, "CRYPT-LUKS1-", sizeof ("CRYPT-LUKS1-") - 1) == 0
|| strncmp (uuid, "CRYPT-LUKS2-", sizeof ("CRYPT-LUKS2-") - 1) == 0)
{ {
grub_free (uuid); grub_free (uuid);
return GRUB_DEV_ABSTRACTION_LUKS; return GRUB_DEV_ABSTRACTION_LUKS;
@ -179,7 +180,9 @@ grub_util_pull_devmapper (const char *os_dev)
grub_util_pull_device (subdev); grub_util_pull_device (subdev);
} }
} }
if (uuid && strncmp (uuid, "CRYPT-LUKS1-", sizeof ("CRYPT-LUKS1-") - 1) == 0 if (uuid
&& (strncmp (uuid, "CRYPT-LUKS1-", sizeof ("CRYPT-LUKS1-") - 1) == 0
|| strncmp (uuid, "CRYPT-LUKS2-", sizeof ("CRYPT-LUKS2-") - 1) == 0)
&& lastsubdev) && lastsubdev)
{ {
char *grdev = grub_util_get_grub_dev (lastsubdev); char *grdev = grub_util_get_grub_dev (lastsubdev);
@ -253,11 +256,11 @@ grub_util_get_devmapper_grub_dev (const char *os_dev)
{ {
char *dash; char *dash;
dash = grub_strchr (uuid + sizeof ("CRYPT-LUKS1-") - 1, '-'); dash = grub_strchr (uuid + sizeof ("CRYPT-LUKS*-") - 1, '-');
if (dash) if (dash)
*dash = 0; *dash = 0;
grub_dev = grub_xasprintf ("cryptouuid/%s", grub_dev = grub_xasprintf ("cryptouuid/%s",
uuid + sizeof ("CRYPT-LUKS1-") - 1); uuid + sizeof ("CRYPT-LUKS*-") - 1);
grub_free (uuid); grub_free (uuid);
return grub_dev; return grub_dev;
} }