grub2/0243-Skip-leading-spaces-on-BLS-field-values.patch
Javier Martinez Canillas db7cf3a089
More fixes for BLS
Add some fixes for BLS parsing logic and also make 20-grub.install script
to query the relative path of the kernel and initramfs images, so BLS can
also work when /boot is not a mount point or is a btrfs subvolume.

Also pull some build fixes.

Resolves: rhbz#1588184

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
2018-06-07 19:02:21 +02:00

59 lines
1.8 KiB
Diff

From a5bf618156915e97a0e7df07556ab728377de77e Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Thu, 7 Jun 2018 00:44:51 +0200
Subject: [PATCH 243/243] Skip leading spaces on BLS field values
The GRUB 2 blscfg command doesn't parse correctly the BLS fields if these
have extra spaces before the field values. For example, the following BLS
fragment generates a wrong menu entry due using spaces to tabulate values:
title Fedora 28 (Twenty Eight)
version 4.16.13-300.fc28.x86_64
machine-id e5c131dfee3249cbb9891c2641d8e350
linux /vmlinuz-4.16.13-300.fc28.x86_64
initrd /initramfs-4.16.13-300.fc28.x86_64.img
options root=/dev/mapper/fedora-root ro
Wrong generated menu entry:
load_video
set gfx_payload=keep
insmod gzio
linux ($root) /vmlinuz-4.16.13-300.fc28.x86_64 root=/dev/mapper/fedora-root ro
initrd ($root) /initramfs-4.16.13-300.fc28.x86_64.img
Correct menu entry after the fix:
load_video
set gfx_payload=keep
insmod gzio
linux ($root)/vmlinuz-4.16.13-300.fc28.x86_64 root=/dev/mapper/fedora-root ro
initrd ($root)/initramfs-4.16.13-300.fc28.x86_64.img
Resolves: rhbz#1588184
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
---
grub-core/commands/blscfg.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/grub-core/commands/blscfg.c b/grub-core/commands/blscfg.c
index 111972d5f67..cd5c29fdf74 100644
--- a/grub-core/commands/blscfg.c
+++ b/grub-core/commands/blscfg.c
@@ -448,7 +448,11 @@ static int read_entry (
separator[0] = '\0';
- rc = bls_add_keyval (entry, buf, separator+1);
+ do {
+ separator++;
+ } while (*separator == ' ' || *separator == '\t');
+
+ rc = bls_add_keyval (entry, buf, separator);
grub_free (buf);
if (rc < 0)
break;
--
2.17.1