grub2/0243-Skip-leading-spaces-on-BLS-field-values.patch
Javier Martinez Canillas afb0baacd6
Use BLS fragment filename as menu entry id and for sort criterion
The BLS config filenames are guaranteed to be unique, so they can be
used as GRUB2 entry id and can also be used to sort the menu entries.

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
2018-07-02 17:33:09 +02:00

60 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/250] 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