52 lines
1.6 KiB
Diff
52 lines
1.6 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Javier Martinez Canillas <javierm@redhat.com>
|
||
|
Date: Tue, 26 Nov 2019 09:51:41 +0100
|
||
|
Subject: [PATCH] blscfg: add a space char when appending fields for variable
|
||
|
expansion
|
||
|
|
||
|
The GRUB variables are expanded and replaced by their values before adding
|
||
|
menu entries, but they didn't include space characters after the values so
|
||
|
the result was not correct.
|
||
|
|
||
|
For the common case this wasn't a problem but it is if there are variables
|
||
|
that are part of the values of other variables.
|
||
|
|
||
|
Resolves: rhbz#1669252
|
||
|
|
||
|
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
|
||
|
---
|
||
|
grub-core/commands/blscfg.c | 19 +++++++++----------
|
||
|
1 file changed, 9 insertions(+), 10 deletions(-)
|
||
|
|
||
|
diff --git a/grub-core/commands/blscfg.c b/grub-core/commands/blscfg.c
|
||
|
index 471975fd2e5..32d3252502e 100644
|
||
|
--- a/grub-core/commands/blscfg.c
|
||
|
+++ b/grub-core/commands/blscfg.c
|
||
|
@@ -602,17 +602,16 @@ static char *field_append(bool is_var, char *buffer, char *start, char *end)
|
||
|
return buffer;
|
||
|
}
|
||
|
|
||
|
- if (!buffer) {
|
||
|
- buffer = grub_strdup(field);
|
||
|
- if (!buffer)
|
||
|
- return NULL;
|
||
|
- } else {
|
||
|
- buffer = grub_realloc (buffer, grub_strlen(buffer) + grub_strlen(field));
|
||
|
- if (!buffer)
|
||
|
- return NULL;
|
||
|
+ if (!buffer)
|
||
|
+ buffer = grub_zalloc (grub_strlen(field) + 1);
|
||
|
+ else
|
||
|
+ buffer = grub_realloc (buffer, grub_strlen(buffer) + grub_strlen(field) + 1);
|
||
|
|
||
|
- grub_stpcpy (buffer + grub_strlen(buffer), field);
|
||
|
- }
|
||
|
+ if (!buffer)
|
||
|
+ return NULL;
|
||
|
+
|
||
|
+ grub_stpcpy (buffer + grub_strlen(buffer), field);
|
||
|
+ grub_stpcpy (buffer + grub_strlen(buffer), " ");
|
||
|
|
||
|
return buffer;
|
||
|
}
|