From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Javier Martinez Canillas 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 --- 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; }