--- grub-core/disk/cryptodisk.c | 9 +++++++++ grub-core/disk/luks.c | 1 + include/grub/cryptodisk.h | 3 +++ 3 files changed, 13 insertions(+)
diff --git a/grub-core/disk/cryptodisk.c b/grub-core/disk/cryptodisk.c index c519c55..b800d6f 100644 --- a/grub-core/disk/cryptodisk.c +++ b/grub-core/disk/cryptodisk.c @@ -113,6 +113,13 @@ gf_mul_be (grub_uint8_t *o, const grub_uint8_t *a, const grub_uint8_t *b) } } +void +grub_cryptodisk_uuid_dehyphenate(char *uuid) +{ + char *s, *d; + for (s=d=uuid;(*d=*s);d+=(*s++!='-')); +} + static gcry_err_code_t grub_crypto_pcbc_decrypt (grub_crypto_cipher_handle_t cipher, void *out, void *in, grub_size_t size, @@ -506,6 +513,7 @@ grub_cryptodisk_open (const char *name, grub_disk_t disk) if (grub_memcmp (name, "cryptouuid/", sizeof ("cryptouuid/") - 1) == 0) { + grub_cryptodisk_uuid_dehyphenate((char *)name + sizeof ("cryptouuid/")); for (dev = cryptodisk_list; dev != NULL; dev = dev->next) if (grub_strcasecmp (name + sizeof ("cryptouuid/") - 1, dev->uuid) == 0) break; @@ -1025,6 +1033,7 @@ grub_cmd_cryptomount (grub_extcmd_context_t ctxt, int argc, char **args) { grub_cryptodisk_t dev; + grub_cryptodisk_uuid_dehyphenate(args[0]); dev = grub_cryptodisk_get_by_uuid (args[0]); if (dev) { diff --git a/grub-core/disk/luks.c b/grub-core/disk/luks.c index 069e72c..0e570cf 100644 --- a/grub-core/disk/luks.c +++ b/grub-core/disk/luks.c @@ -111,6 +111,7 @@ configure_ciphers (grub_disk_t disk, const char *check_uuid, hashspec[sizeof (header.hashSpec)] = 0; grub_memcpy (uuid, header.uuid, sizeof (header.uuid)); uuid[sizeof (header.uuid)] = 0; + grub_cryptodisk_uuid_dehyphenate (uuid); if (check_uuid && grub_strcasecmp (check_uuid, uuid) != 0) { diff --git a/include/grub/cryptodisk.h b/include/grub/cryptodisk.h index 4076412..cfb0f0d 100644 --- a/include/grub/cryptodisk.h +++ b/include/grub/cryptodisk.h @@ -167,4 +167,7 @@ grub_cryptodisk_t grub_cryptodisk_get_by_source_disk (grub_disk_t disk); grub_cryptodisk_t grub_cryptodisk_create (grub_disk_t disk, char *uuid, char *ciphername, char *ciphermode, char *digest); +void +grub_cryptodisk_uuid_dehyphenate(char *uuid); + #endif -- 2.1.2 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel