From 2e7fde09174aed5f3cc7d714dbe32e451873f3c9 Mon Sep 17 00:00:00 2001 From: Francis Rowe Date: Mon, 30 Nov 2015 16:40:40 -0500 Subject: update GRUB --- (limited to 'resources') diff --git a/resources/grub/patch/grub.johnlane.ie/0001-Cryptomount-support-LUKS-detached-header.patch b/resources/grub/patch/grub.johnlane.ie/0001-Cryptomount-support-LUKS-detached-header.patch index ed27dc4..fa3c805 100644 --- a/resources/grub/patch/grub.johnlane.ie/0001-Cryptomount-support-LUKS-detached-header.patch +++ b/resources/grub/patch/grub.johnlane.ie/0001-Cryptomount-support-LUKS-detached-header.patch @@ -1,7 +1,7 @@ -From 5c643ba894421ac78c3fe18ff9548d8e9fa82ed4 Mon Sep 17 00:00:00 2001 +From bc2a23386d123d37510c3cff1f7e607e7cf49cb1 Mon Sep 17 00:00:00 2001 From: John Lane Date: Tue, 23 Jun 2015 11:16:30 +0100 -Subject: [PATCH 1/5] Cryptomount support LUKS detached header +Subject: [PATCH 1/6] Cryptomount support LUKS detached header --- grub-core/disk/cryptodisk.c | 22 ++++++++++++++++++---- @@ -11,10 +11,10 @@ Subject: [PATCH 1/5] Cryptomount support LUKS detached header 4 files changed, 63 insertions(+), 16 deletions(-) diff --git a/grub-core/disk/cryptodisk.c b/grub-core/disk/cryptodisk.c -index 82a3dcb..6f596a0 100644 +index 1e03a09..dd8870d 100644 --- a/grub-core/disk/cryptodisk.c +++ b/grub-core/disk/cryptodisk.c -@@ -40,6 +40,7 @@ static const struct grub_arg_option options[] = +@@ -41,6 +41,7 @@ static const struct grub_arg_option options[] = /* TRANSLATORS: It's still restricted to cryptodisks only. */ {"all", 'a', 0, N_("Mount all."), 0, 0}, {"boot", 'b', 0, N_("Mount all volumes with `boot' flag set."), 0, 0}, @@ -22,7 +22,7 @@ index 82a3dcb..6f596a0 100644 {0, 0, 0, 0, 0, 0} }; -@@ -803,6 +804,7 @@ grub_util_cryptodisk_get_uuid (grub_disk_t disk) +@@ -808,6 +809,7 @@ grub_util_cryptodisk_get_uuid (grub_disk_t disk) static int check_boot, have_it; static char *search_uuid; @@ -30,7 +30,7 @@ index 82a3dcb..6f596a0 100644 static void cryptodisk_close (grub_cryptodisk_t dev) -@@ -827,13 +829,13 @@ grub_cryptodisk_scan_device_real (const char *name, grub_disk_t source) +@@ -832,13 +834,13 @@ grub_cryptodisk_scan_device_real (const char *name, grub_disk_t source) FOR_CRYPTODISK_DEVS (cr) { @@ -46,7 +46,7 @@ index 82a3dcb..6f596a0 100644 if (err) { cryptodisk_close (dev); -@@ -874,7 +876,7 @@ grub_cryptodisk_cheat_mount (const char *sourcedev, const char *cheat) +@@ -879,7 +881,7 @@ grub_cryptodisk_cheat_mount (const char *sourcedev, const char *cheat) FOR_CRYPTODISK_DEVS (cr) { @@ -55,7 +55,7 @@ index 82a3dcb..6f596a0 100644 if (grub_errno) return grub_errno; if (!dev) -@@ -928,6 +930,18 @@ grub_cmd_cryptomount (grub_extcmd_context_t ctxt, int argc, char **args) +@@ -933,6 +935,18 @@ grub_cmd_cryptomount (grub_extcmd_context_t ctxt, int argc, char **args) if (argc < 1 && !state[1].set && !state[2].set) return grub_error (GRUB_ERR_BAD_ARGUMENT, "device name required"); @@ -74,7 +74,7 @@ index 82a3dcb..6f596a0 100644 have_it = 0; if (state[0].set) { -@@ -1125,7 +1139,7 @@ GRUB_MOD_INIT (cryptodisk) +@@ -1140,7 +1154,7 @@ GRUB_MOD_INIT (cryptodisk) { grub_disk_dev_register (&grub_cryptodisk_dev); cmd = grub_register_extcmd ("cryptomount", grub_cmd_cryptomount, 0, @@ -220,7 +220,7 @@ index 86c50c6..66e64c0 100644 { grub_free (split_key); diff --git a/include/grub/cryptodisk.h b/include/grub/cryptodisk.h -index f2ad2a7..16dee3c 100644 +index 32f564a..4e6e89a 100644 --- a/include/grub/cryptodisk.h +++ b/include/grub/cryptodisk.h @@ -20,6 +20,7 @@ @@ -231,7 +231,7 @@ index f2ad2a7..16dee3c 100644 #include #include #ifdef GRUB_UTIL -@@ -106,8 +107,8 @@ struct grub_cryptodisk_dev +@@ -107,8 +108,8 @@ struct grub_cryptodisk_dev struct grub_cryptodisk_dev **prev; grub_cryptodisk_t (*scan) (grub_disk_t disk, const char *check_uuid, @@ -243,5 +243,5 @@ index f2ad2a7..16dee3c 100644 typedef struct grub_cryptodisk_dev *grub_cryptodisk_dev_t; -- -2.1.2 +1.9.1 diff --git a/resources/grub/patch/grub.johnlane.ie/0002-Cryptomount-support-key-files.patch b/resources/grub/patch/grub.johnlane.ie/0002-Cryptomount-support-key-files.patch index c4302e8..1fe6ef3 100644 --- a/resources/grub/patch/grub.johnlane.ie/0002-Cryptomount-support-key-files.patch +++ b/resources/grub/patch/grub.johnlane.ie/0002-Cryptomount-support-key-files.patch @@ -1,7 +1,7 @@ -From 802a23fc503a3c09f167883f05c759471243b4d3 Mon Sep 17 00:00:00 2001 +From 2883046688f91bd86cfc2d2c38ca53b65e201795 Mon Sep 17 00:00:00 2001 From: John Lane Date: Fri, 26 Jun 2015 13:37:10 +0100 -Subject: [PATCH 2/5] Cryptomount support key files +Subject: [PATCH 2/6] Cryptomount support key files --- grub-core/disk/cryptodisk.c | 46 ++++++++++++++++++++++++++++++++++++++++++++- @@ -11,10 +11,10 @@ Subject: [PATCH 2/5] Cryptomount support key files 4 files changed, 82 insertions(+), 17 deletions(-) diff --git a/grub-core/disk/cryptodisk.c b/grub-core/disk/cryptodisk.c -index 6f596a0..a27e70c 100644 +index dd8870d..0e7ced8 100644 --- a/grub-core/disk/cryptodisk.c +++ b/grub-core/disk/cryptodisk.c -@@ -41,6 +41,9 @@ static const struct grub_arg_option options[] = +@@ -42,6 +42,9 @@ static const struct grub_arg_option options[] = {"all", 'a', 0, N_("Mount all."), 0, 0}, {"boot", 'b', 0, N_("Mount all volumes with `boot' flag set."), 0, 0}, {"header", 'H', 0, N_("Read LUKS header from file"), 0, ARG_TYPE_STRING}, @@ -24,7 +24,7 @@ index 6f596a0..a27e70c 100644 {0, 0, 0, 0, 0, 0} }; -@@ -805,6 +808,8 @@ grub_util_cryptodisk_get_uuid (grub_disk_t disk) +@@ -810,6 +813,8 @@ grub_util_cryptodisk_get_uuid (grub_disk_t disk) static int check_boot, have_it; static char *search_uuid; static grub_file_t hdr; @@ -33,7 +33,7 @@ index 6f596a0..a27e70c 100644 static void cryptodisk_close (grub_cryptodisk_t dev) -@@ -835,7 +840,7 @@ grub_cryptodisk_scan_device_real (const char *name, grub_disk_t source) +@@ -840,7 +845,7 @@ grub_cryptodisk_scan_device_real (const char *name, grub_disk_t source) if (!dev) continue; @@ -42,7 +42,7 @@ index 6f596a0..a27e70c 100644 if (err) { cryptodisk_close (dev); -@@ -943,6 +948,45 @@ grub_cmd_cryptomount (grub_extcmd_context_t ctxt, int argc, char **args) +@@ -948,6 +953,45 @@ grub_cmd_cryptomount (grub_extcmd_context_t ctxt, int argc, char **args) hdr = NULL; have_it = 0; @@ -178,7 +178,7 @@ index 66e64c0..5882368 100644 sizeof (header.keyblock[i].passwordSalt), grub_be_to_cpu32 (header.keyblock[i]. diff --git a/include/grub/cryptodisk.h b/include/grub/cryptodisk.h -index 16dee3c..0299625 100644 +index 4e6e89a..67f6b0b 100644 --- a/include/grub/cryptodisk.h +++ b/include/grub/cryptodisk.h @@ -55,6 +55,8 @@ typedef enum @@ -190,7 +190,7 @@ index 16dee3c..0299625 100644 struct grub_cryptodisk; typedef gcry_err_code_t -@@ -108,7 +110,8 @@ struct grub_cryptodisk_dev +@@ -109,7 +111,8 @@ struct grub_cryptodisk_dev grub_cryptodisk_t (*scan) (grub_disk_t disk, const char *check_uuid, int boot_only, grub_file_t hdr); @@ -201,5 +201,5 @@ index 16dee3c..0299625 100644 typedef struct grub_cryptodisk_dev *grub_cryptodisk_dev_t; -- -2.1.2 +1.9.1 diff --git a/resources/grub/patch/grub.johnlane.ie/0003-Cryptomount-luks-allow-multiple-passphrase-attempts.patch b/resources/grub/patch/grub.johnlane.ie/0003-Cryptomount-luks-allow-multiple-passphrase-attempts.patch index 5ed8b27..e68e5c6 100644 --- a/resources/grub/patch/grub.johnlane.ie/0003-Cryptomount-luks-allow-multiple-passphrase-attempts.patch +++ b/resources/grub/patch/grub.johnlane.ie/0003-Cryptomount-luks-allow-multiple-passphrase-attempts.patch @@ -1,7 +1,7 @@ -From 3e2ffefe1edbbd874ca18ac397a14465d1ac49be Mon Sep 17 00:00:00 2001 +From f32a31fd6279114af604a1b4cc33af8d377d2e29 Mon Sep 17 00:00:00 2001 From: John Lane Date: Fri, 26 Jun 2015 13:49:58 +0100 -Subject: [PATCH 3/5] Cryptomount luks allow multiple passphrase attempts +Subject: [PATCH 3/6] Cryptomount luks allow multiple passphrase attempts --- grub-core/disk/luks.c | 278 ++++++++++++++++++++++++++------------------------ @@ -325,5 +325,5 @@ index 5882368..11e437e 100644 grub_free (split_key); -- -2.1.2 +1.9.1 diff --git a/resources/grub/patch/grub.johnlane.ie/0004-Cryptomount-support-plain-dm-crypt.patch b/resources/grub/patch/grub.johnlane.ie/0004-Cryptomount-support-plain-dm-crypt.patch index c8ee671..f35a393 100644 --- a/resources/grub/patch/grub.johnlane.ie/0004-Cryptomount-support-plain-dm-crypt.patch +++ b/resources/grub/patch/grub.johnlane.ie/0004-Cryptomount-support-plain-dm-crypt.patch @@ -1,19 +1,19 @@ -From c584bacaad58facb9124df26f98fff2542f7237a Mon Sep 17 00:00:00 2001 +From 590e1f484d0e9618882db07786251cdaf6669e9d Mon Sep 17 00:00:00 2001 From: John Lane Date: Fri, 26 Jun 2015 22:09:52 +0100 -Subject: [PATCH 4/5] Cryptomount support plain dm-crypt +Subject: [PATCH 4/6] Cryptomount support plain dm-crypt --- grub-core/disk/cryptodisk.c | 298 +++++++++++++++++++++++++++++++++++++++++++- grub-core/disk/luks.c | 195 +---------------------------- include/grub/cryptodisk.h | 8 ++ - 3 files changed, 310 insertions(+), 191 deletions(-) + 3 files changed, 311 insertions(+), 190 deletions(-) diff --git a/grub-core/disk/cryptodisk.c b/grub-core/disk/cryptodisk.c -index a27e70c..cd5cfc9 100644 +index 0e7ced8..57fb904 100644 --- a/grub-core/disk/cryptodisk.c +++ b/grub-core/disk/cryptodisk.c -@@ -44,6 +44,12 @@ static const struct grub_arg_option options[] = +@@ -45,6 +45,12 @@ static const struct grub_arg_option options[] = {"keyfile", 'k', 0, N_("Key file"), 0, ARG_TYPE_STRING}, {"keyfile-offset", 'O', 0, N_("Key file offset (bytes)"), 0, ARG_TYPE_INT}, {"keyfile-size", 'S', 0, N_("Key file data size (bytes)"), 0, ARG_TYPE_INT}, @@ -26,7 +26,7 @@ index a27e70c..cd5cfc9 100644 {0, 0, 0, 0, 0, 0} }; -@@ -927,6 +933,48 @@ grub_cryptodisk_scan_device (const char *name, +@@ -932,6 +938,48 @@ grub_cryptodisk_scan_device (const char *name, return have_it && search_uuid ? 1 : 0; } @@ -75,11 +75,10 @@ index a27e70c..cd5cfc9 100644 static grub_err_t grub_cmd_cryptomount (grub_extcmd_context_t ctxt, int argc, char **args) { -@@ -1046,7 +1094,63 @@ grub_cmd_cryptomount (grub_extcmd_context_t ctxt, int argc, char **args) - return GRUB_ERR_NONE; - } +@@ -1061,6 +1109,64 @@ grub_cmd_cryptomount (grub_extcmd_context_t ctxt, int argc, char **args) + + err = grub_cryptodisk_scan_device_real (diskname, disk); -- err = grub_cryptodisk_scan_device_real (args[0], disk); + if (state[7].set) /* Plain mode */ + { + char *cipher; @@ -137,10 +136,11 @@ index a27e70c..cd5cfc9 100644 + } + else + err = grub_cryptodisk_scan_device_real (args[0], disk); - ++ grub_disk_close (disk); - -@@ -1177,13 +1281,203 @@ struct grub_procfs_entry luks_script = + if (disklast) + *disklast = ')'; +@@ -1192,13 +1298,203 @@ struct grub_procfs_entry luks_script = .get_contents = luks_script_get }; @@ -605,7 +605,7 @@ index 11e437e..4ebe21b 100644 grub_free (split_key); return grub_error (GRUB_ERR_BAD_ARGUMENT, "Passphrase not supplied"); diff --git a/include/grub/cryptodisk.h b/include/grub/cryptodisk.h -index 0299625..4076412 100644 +index 67f6b0b..bb25ab7 100644 --- a/include/grub/cryptodisk.h +++ b/include/grub/cryptodisk.h @@ -54,9 +54,14 @@ typedef enum @@ -623,7 +623,7 @@ index 0299625..4076412 100644 struct grub_cryptodisk; typedef gcry_err_code_t -@@ -159,4 +164,7 @@ grub_util_get_geli_uuid (const char *dev); +@@ -160,4 +165,7 @@ grub_util_get_geli_uuid (const char *dev); grub_cryptodisk_t grub_cryptodisk_get_by_uuid (const char *uuid); grub_cryptodisk_t grub_cryptodisk_get_by_source_disk (grub_disk_t disk); @@ -632,5 +632,5 @@ index 0299625..4076412 100644 + #endif -- -2.1.2 +1.9.1 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 index 2707ceb..8d49361 100644 --- 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 @@ -1,7 +1,7 @@ -From f723c22cb7d8a5a6633eaa0682e024e667fb581a Mon Sep 17 00:00:00 2001 +From ec936adca3370995a5ed5c6e5e99c6e8fa5c25ef Mon Sep 17 00:00:00 2001 From: John Lane Date: Fri, 26 Jun 2015 22:48:03 +0100 -Subject: [PATCH 5/5] Cryptomount support for hyphens in UUID +Subject: [PATCH 5/6] Cryptomount support for hyphens in UUID --- grub-core/disk/cryptodisk.c | 20 +++++++++++++++++--- @@ -10,10 +10,10 @@ Subject: [PATCH 5/5] Cryptomount support for hyphens in UUID 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/grub-core/disk/cryptodisk.c b/grub-core/disk/cryptodisk.c -index cd5cfc9..d36d16b 100644 +index 57fb904..5430b2e 100644 --- a/grub-core/disk/cryptodisk.c +++ b/grub-core/disk/cryptodisk.c -@@ -113,6 +113,20 @@ gf_mul_be (grub_uint8_t *o, const grub_uint8_t *a, const grub_uint8_t *b) +@@ -114,6 +114,20 @@ gf_mul_be (grub_uint8_t *o, const grub_uint8_t *a, const grub_uint8_t *b) } } @@ -34,7 +34,7 @@ index cd5cfc9..d36d16b 100644 static gcry_err_code_t grub_crypto_pcbc_decrypt (grub_crypto_cipher_handle_t cipher, void *out, void *in, grub_size_t size, -@@ -507,8 +521,8 @@ grub_cryptodisk_open (const char *name, grub_disk_t disk) +@@ -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) @@ -45,7 +45,7 @@ index cd5cfc9..d36d16b 100644 } else { -@@ -739,7 +753,7 @@ grub_cryptodisk_get_by_uuid (const char *uuid) +@@ -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) @@ -107,10 +107,10 @@ index 4ebe21b..80a7606 100644 newdev = grub_cryptodisk_create (disk, uuid, ciphername, ciphermode, hashspec); diff --git a/include/grub/cryptodisk.h b/include/grub/cryptodisk.h -index 4076412..a564f2c 100644 +index bb25ab7..01c0269 100644 --- a/include/grub/cryptodisk.h +++ b/include/grub/cryptodisk.h -@@ -167,4 +167,6 @@ grub_cryptodisk_t grub_cryptodisk_get_by_source_disk (grub_disk_t disk); +@@ -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); @@ -118,5 +118,5 @@ index 4076412..a564f2c 100644 +grub_cryptodisk_uuidcmp(char *uuid_a, char *uuid_b); #endif -- -2.1.2 +1.9.1 diff --git a/resources/grub/patch/grub.johnlane.ie/0006-grub-core-disk-cryptodisk.c-Point-to-const-char.patch b/resources/grub/patch/grub.johnlane.ie/0006-grub-core-disk-cryptodisk.c-Point-to-const-char.patch index 1db782c..8b94ba4 100644 --- a/resources/grub/patch/grub.johnlane.ie/0006-grub-core-disk-cryptodisk.c-Point-to-const-char.patch +++ b/resources/grub/patch/grub.johnlane.ie/0006-grub-core-disk-cryptodisk.c-Point-to-const-char.patch @@ -1,7 +1,7 @@ -From 499a25b7499305a2c86a1e2b83e8d515c821d5d0 Mon Sep 17 00:00:00 2001 +From 10d0f5aebea928cc42f6b65598c70343bb6899ca Mon Sep 17 00:00:00 2001 From: Klemens Nanni Date: Tue, 15 Sep 2015 16:00:03 +0200 -Subject: [PATCH] grub-core/disk/cryptodisk.c: Point to const char +Subject: [PATCH 6/6] grub-core/disk/cryptodisk.c: Point to const char --- grub-core/disk/cryptodisk.c | 2 +- @@ -9,10 +9,10 @@ Subject: [PATCH] grub-core/disk/cryptodisk.c: Point to const char 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/grub-core/disk/cryptodisk.c b/grub-core/disk/cryptodisk.c -index d36d16b..05b7cd7 100644 +index 5430b2e..633edb2 100644 --- a/grub-core/disk/cryptodisk.c +++ b/grub-core/disk/cryptodisk.c -@@ -114,7 +114,7 @@ gf_mul_be (grub_uint8_t *o, const grub_uint8_t *a, const grub_uint8_t *b) +@@ -115,7 +115,7 @@ gf_mul_be (grub_uint8_t *o, const grub_uint8_t *a, const grub_uint8_t *b) } int @@ -22,10 +22,10 @@ index d36d16b..05b7cd7 100644 while ((*uuid_a != '\0') && (*uuid_b != '\0')) { diff --git a/include/grub/cryptodisk.h b/include/grub/cryptodisk.h -index a564f2c..89263ee 100644 +index 01c0269..cd6a545 100644 --- a/include/grub/cryptodisk.h +++ b/include/grub/cryptodisk.h -@@ -168,5 +168,5 @@ grub_cryptodisk_t grub_cryptodisk_create (grub_disk_t disk, char *uuid, +@@ -169,5 +169,5 @@ grub_cryptodisk_t grub_cryptodisk_create (grub_disk_t disk, char *uuid, char *ciphername, char *ciphermode, char *digest); int @@ -33,5 +33,5 @@ index a564f2c..89263ee 100644 +grub_cryptodisk_uuidcmp(const char *uuid_a, const char *uuid_b); #endif -- -2.5.1 +1.9.1 diff --git a/resources/scripts/helpers/download/grub b/resources/scripts/helpers/download/grub index 66fd68b..0012974 100755 --- a/resources/scripts/helpers/download/grub +++ b/resources/scripts/helpers/download/grub @@ -41,7 +41,7 @@ git clone git://git.savannah.gnu.org/grub.git cd "grub/" # reset to known revision -git reset --hard 7a210304ebfd6d704b4fc08fe496a0c417441879 +git reset --hard 346a494d7c92fe7c2a89f01be84a7be67bcfbfe7 # Apply patches # ------------------------------------------------------------------------------ @@ -49,13 +49,13 @@ git reset --hard 7a210304ebfd6d704b4fc08fe496a0c417441879 # Replace "GNU GRUB version" in GRUB screen with "FREE AS IN FREEDOM" git am "../resources/grub/patch/0001-grub-core-normal-main.c-Display-FREE-AS-IN-FREEDOM-n.patch" -# GRUB enhancement patches from grub.johnlane.ie +# GRUB enhancement patches from grub.johnlane.ie (rebased in libreboot's GRUB, unofficially, on 30 November 2015) git am "../resources/grub/patch/grub.johnlane.ie/0001-Cryptomount-support-LUKS-detached-header.patch" git am "../resources/grub/patch/grub.johnlane.ie/0002-Cryptomount-support-key-files.patch" git am "../resources/grub/patch/grub.johnlane.ie/0003-Cryptomount-luks-allow-multiple-passphrase-attempts.patch" git am "../resources/grub/patch/grub.johnlane.ie/0004-Cryptomount-support-plain-dm-crypt.patch" git am "../resources/grub/patch/grub.johnlane.ie/0005-Cryptomount-support-for-hyphens-in-UUID.patch" -# hotfix from kl3 (merged from autoboot) +# hotfix from kl3 (merged from autoboot) (ditto) git am "../resources/grub/patch/grub.johnlane.ie/0006-grub-core-disk-cryptodisk.c-Point-to-const-char.patch" cd "../" -- cgit v0.9.1