kern/corecmd: Quote variable values when displayed by the set command

Variable values may contain spaces at the end or newlines. However, when
displayed without quotes this is not obvious and can lead to confusion as
to the actual contents of variables. Also for some variables grub_env_get()
returns a NULL pointer instead of a pointer to an empty string and
previously would be printed as "var=(null)". Now such variables will be
displayed as "var=''".

Signed-off-by: Glenn Washburn <development@efficientek.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
Glenn Washburn 2022-08-25 19:53:51 -05:00 committed by Daniel Kiper
parent 72b40c2ccb
commit 42a424c9d5

View File

@ -40,7 +40,10 @@ grub_core_cmd_set (struct grub_command *cmd __attribute__ ((unused)),
{ {
struct grub_env_var *env; struct grub_env_var *env;
FOR_SORTED_ENV (env) FOR_SORTED_ENV (env)
grub_printf ("%s=%s\n", env->name, grub_env_get (env->name)); {
val = (char *) grub_env_get (env->name);
grub_printf ("%s='%s'\n", env->name, val == NULL ? "" : val);
}
return 0; return 0;
} }