diff options
Diffstat (limited to 'resources/grub/patch/grub.johnlane.ie/0005-Cryptomount-support-for-hyphens-in-UUID.patch')
-rw-r--r-- | resources/grub/patch/grub.johnlane.ie/0005-Cryptomount-support-for-hyphens-in-UUID.patch | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/resources/grub/patch/grub.johnlane.ie/0005-Cryptomount-support-for-hyphens-in-UUID.patch b/resources/grub/patch/grub.johnlane.ie/0005-Cryptomount-support-for-hyphens-in-UUID.patch deleted file mode 100644 index 2684f062..00000000 --- a/resources/grub/patch/grub.johnlane.ie/0005-Cryptomount-support-for-hyphens-in-UUID.patch +++ /dev/null @@ -1,122 +0,0 @@ -From 047a5b323de2a0c45a6fe2b6854106830da5f3ae Mon Sep 17 00:00:00 2001 -From: John Lane <john@lane.uk.net> -Date: Fri, 26 Jun 2015 22:48:03 +0100 -Subject: [PATCH 06/10] Cryptomount support for hyphens in UUID - ---- - grub-core/disk/cryptodisk.c | 20 +++++++++++++++++--- - grub-core/disk/luks.c | 26 ++++++++------------------ - include/grub/cryptodisk.h | 2 ++ - 3 files changed, 27 insertions(+), 21 deletions(-) - -diff --git a/grub-core/disk/cryptodisk.c b/grub-core/disk/cryptodisk.c -index 57fb904..5430b2e 100644 ---- a/grub-core/disk/cryptodisk.c -+++ b/grub-core/disk/cryptodisk.c -@@ -114,6 +114,20 @@ gf_mul_be (grub_uint8_t *o, const grub_uint8_t *a, const grub_uint8_t *b) - } - } - -+int -+grub_cryptodisk_uuidcmp(char *uuid_a, char *uuid_b) -+{ -+ while ((*uuid_a != '\0') && (*uuid_b != '\0')) -+ { -+ while (*uuid_a == '-') uuid_a++; -+ while (*uuid_b == '-') uuid_b++; -+ if (grub_toupper(*uuid_a) != grub_toupper(*uuid_b)) break; -+ uuid_a++; -+ uuid_b++; -+ } -+ return (*uuid_a == '\0') && (*uuid_b == '\0'); -+} -+ - static gcry_err_code_t - grub_crypto_pcbc_decrypt (grub_crypto_cipher_handle_t cipher, - void *out, void *in, grub_size_t size, -@@ -508,8 +522,8 @@ grub_cryptodisk_open (const char *name, grub_disk_t disk) - if (grub_memcmp (name, "cryptouuid/", sizeof ("cryptouuid/") - 1) == 0) - { - for (dev = cryptodisk_list; dev != NULL; dev = dev->next) -- if (grub_strcasecmp (name + sizeof ("cryptouuid/") - 1, dev->uuid) == 0) -- break; -+ if (grub_cryptodisk_uuidcmp(name + sizeof ("cryptouuid/") - 1, dev->uuid)) -+ break; - } - else - { -@@ -741,7 +755,7 @@ grub_cryptodisk_get_by_uuid (const char *uuid) - { - grub_cryptodisk_t dev; - for (dev = cryptodisk_list; dev != NULL; dev = dev->next) -- if (grub_strcasecmp (dev->uuid, uuid) == 0) -+ if (grub_cryptodisk_uuidcmp(dev->uuid, uuid)) - return dev; - return NULL; - } -diff --git a/grub-core/disk/luks.c b/grub-core/disk/luks.c -index 4ebe21b..80a7606 100644 ---- a/grub-core/disk/luks.c -+++ b/grub-core/disk/luks.c -@@ -68,9 +68,7 @@ configure_ciphers (grub_disk_t disk, const char *check_uuid, - int check_boot, grub_file_t hdr) - { - grub_cryptodisk_t newdev; -- const char *iptr; - struct grub_luks_phdr header; -- char *optr; - char uuid[sizeof (header.uuid) + 1]; - char ciphername[sizeof (header.cipherName) + 1]; - char ciphermode[sizeof (header.cipherMode) + 1]; -@@ -104,22 +102,6 @@ configure_ciphers (grub_disk_t disk, const char *check_uuid, - || grub_be_to_cpu16 (header.version) != 1) - return NULL; - -- optr = uuid; -- for (iptr = header.uuid; iptr < &header.uuid[ARRAY_SIZE (header.uuid)]; -- iptr++) -- { -- if (*iptr != '-') -- *optr++ = *iptr; -- } -- *optr = 0; -- -- if (check_uuid && grub_strcasecmp (check_uuid, uuid) != 0) -- { -- grub_dprintf ("luks", "%s != %s\n", uuid, check_uuid); -- return NULL; -- } -- -- - /* Make sure that strings are null terminated. */ - grub_memcpy (ciphername, header.cipherName, sizeof (header.cipherName)); - ciphername[sizeof (header.cipherName)] = 0; -@@ -127,6 +109,14 @@ configure_ciphers (grub_disk_t disk, const char *check_uuid, - ciphermode[sizeof (header.cipherMode)] = 0; - grub_memcpy (hashspec, header.hashSpec, sizeof (header.hashSpec)); - hashspec[sizeof (header.hashSpec)] = 0; -+ grub_memcpy (uuid, header.uuid, sizeof (header.uuid)); -+ uuid[sizeof (header.uuid)] = 0; -+ -+ if ( check_uuid && ! grub_cryptodisk_uuidcmp(check_uuid, uuid)) -+ { -+ grub_dprintf ("luks", "%s != %s\n", uuid, check_uuid); -+ return NULL; -+ } - - newdev = grub_cryptodisk_create (disk, uuid, ciphername, ciphermode, hashspec); - -diff --git a/include/grub/cryptodisk.h b/include/grub/cryptodisk.h -index bb25ab7..01c0269 100644 ---- a/include/grub/cryptodisk.h -+++ b/include/grub/cryptodisk.h -@@ -168,4 +168,6 @@ 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); - -+int -+grub_cryptodisk_uuidcmp(char *uuid_a, char *uuid_b); - #endif --- -1.9.1 - |