SHA256
1
0
forked from pool/grub2

Accepting request 462013 from Base:System

Redo merge (forwarded request 461950 from michals)

OBS-URL: https://build.opensuse.org/request/show/462013
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/grub2?expand=0&rev=156
This commit is contained in:
Dominique Leuenberger 2017-03-05 16:58:46 +00:00 committed by Git OBS Bridge
parent a2b07e1f8b
commit 116fc02751
4 changed files with 56 additions and 50 deletions

View File

@ -1,39 +0,0 @@
From 28f83642deb777cce122c3629ddbd7b44a7f95b4 Mon Sep 17 00:00:00 2001
From: Michael Chang <mchang@suse.com>
Date: Thu, 23 Feb 2017 22:39:37 +0800
Subject: [PATCH] Revert "efi: properly terminate filepath with NULL in
chainloader"
This reverts commit ce95549cc54b5d6f494608a7c390dba3aab4fba7.
---
grub-core/loader/efi/chainloader.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c
index adc8563..522a716 100644
--- a/grub-core/loader/efi/chainloader.c
+++ b/grub-core/loader/efi/chainloader.c
@@ -122,8 +122,6 @@ copy_file_path (grub_efi_file_path_device_path_t *fp,
if (*p == '/')
*p = '\\';
- /* File Path is NULL terminated */
- fp->path_name[size++] = '\0';
fp->header.length = size * sizeof (grub_efi_char16_t) + sizeof (*fp);
}
@@ -158,10 +156,8 @@ make_file_path (grub_efi_device_path_t *dp, const char *filename)
d = GRUB_EFI_NEXT_DEVICE_PATH (d);
}
- /* File Path is NULL terminated. Allocate space for 2 extra characters */
- /* FIXME why we split path in two components? */
file_path = grub_malloc (size
- + ((grub_strlen (dir_start) + 2)
+ + ((grub_strlen (dir_start) + 1)
* GRUB_MAX_UTF16_PER_UTF8
* sizeof (grub_efi_char16_t))
+ sizeof (grub_efi_file_path_device_path_t) * 2);
--
2.6.6

View File

@ -0,0 +1,41 @@
From 892dfbe113d08c18e51d7c27eee5094f3da530ec Mon Sep 17 00:00:00 2001
From: Andrei Borzenkov <arvidjaar@gmail.com>
Date: Sat, 25 Feb 2017 08:39:38 +0300
Subject: [PATCH] efi: strip off final NULL from File Path in
grub_efi_get_filename
UEFI 2.6 9.3.6.4 File Path Media Device Path says that Path Name is
"A NULL-terminated Path string including directory and file names".
Strip final NULL from Path Name in each File Path node when constructing
full path. To be on safe side, strip all of them.
Fixes failure chainloading grub from grub, when loaded grub truncates
image path and does not find its grub.cfg.
https://bugzilla.opensuse.org/show_bug.cgi?id=1026344
This was triggered by commit ce95549cc54b5d6f494608a7c390dba3aab4fba7;
before it we built Path Name without trailing NULL, and apparently all
other bootloaders use single File Path node, thus not exposing this bug.
---
grub-core/kern/efi/efi.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
index caf9bcc..d467785 100644
--- a/grub-core/kern/efi/efi.c
+++ b/grub-core/kern/efi/efi.c
@@ -366,6 +366,9 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0)
len = ((GRUB_EFI_DEVICE_PATH_LENGTH (dp) - 4)
/ sizeof (grub_efi_char16_t));
fp = (grub_efi_file_path_device_path_t *) dp;
+ /* According to EFI spec Path Name is NULL terminated */
+ while (len > 0 && fp->path_name[len - 1] == 0)
+ len--;
p = (char *) grub_utf16_to_utf8 ((unsigned char *) p, fp->path_name, len);
}
--
2.6.6

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Wed Mar 1 10:29:46 UTC 2017 - mchang@suse.com
- Fix for openQA UEFI USB Boot failure with upstream patch (bsc#1026344)
* added 0001-efi-strip-off-final-NULL-from-File-Path-in-grub_efi_.patch
* removed 0001-Revert-efi-properly-terminate-filepath-with-NULL-in-.patch
-------------------------------------------------------------------
Thu Feb 23 15:06:44 UTC 2017 - mchang@suse.com
@ -9,6 +16,11 @@ Fri Feb 17 06:46:11 UTC 2017 - mchang@suse.com
- grub2.spec: fix s390x file list.
-------------------------------------------------------------------
Thu Feb 16 12:55:29 UTC 2017 - msuchanek@suse.com
- require efibootmgr in efi package (boo#1025520)
-------------------------------------------------------------------
Wed Feb 15 07:25:02 UTC 2017 - mchang@suse.com

View File

@ -206,7 +206,7 @@ Patch77: grub2-s390x-08-workaround-part-to-disk.patch
Patch78: grub2-commands-introduce-read_file-subcommand.patch
Patch79: grub2-efi-chainload-harder.patch
Patch80: grub2-emu-4-all.patch
Patch81: 0001-Revert-efi-properly-terminate-filepath-with-NULL-in-.patch
Patch81: 0001-efi-strip-off-final-NULL-from-File-Path-in-grub_efi_.patch
# Btrfs snapshot booting related patches
Patch101: grub2-btrfs-01-add-ability-to-boot-from-subvolumes.patch
Patch102: grub2-btrfs-02-export-subvolume-envvars.patch
@ -337,19 +337,11 @@ provides support for %{platform} systems.
%package %{grubefiarch}
Summary: Bootloader with support for Linux, Multiboot and more
# Require efibootmgr
# Without it grub-install is broken so break the package as well if unavailable
Group: System/Boot
%ifarch ia64 x86_64 aarch64
#Package is available on ia64, x86_64 and aarch64 only and not necessarily needed
Requires: efibootmgr
Requires(post): efibootmgr
%endif
# Also require efibootmgr on i586 Tumbleweed where it is available
%if 0%{?suse_version} > 1320
%ifarch i586
Requires: efibootmgr
Requires(post): efibootmgr
%endif
%endif
Requires: %{name} = %{version}-%{release}
Requires(post): %{name} = %{version}-%{release}
%if 0%{?update_bootloader_requires:1}