[PATCH 1/1] In GRUB2 parser save_env, treat unset variable value as empty

Sam Mendoza-Jonas sam at mendozajonas.com
Tue Mar 15 11:18:26 AEDT 2016


Hi Alan,

Finally found some time to work through these patches - everything looks
good, but this one is missing your Signed-off-by - if you can add that
I'll go ahead and merge these.

Cheers,
Sam

On Thu, Feb 11, 2016 at 03:14:53PM -0800, Alan Dunn wrote:
> It seems better to treat unset variable values as empty rather than
> crashing in save_env.  While GRUB's behavior is actually to delete the
> variable from the environment block, it seems useful to at least not
> crash while later on someone can do further work to improve GRUB
> compatibility if desired.
> 
> Tested:
>  Modified test-grub2-save-env to cover this case.
> ---
>  discover/grub2/env.c              | 4 ++++
>  test/parser/test-grub2-save-env.c | 6 ++++++
>  2 files changed, 10 insertions(+)
> 
> diff --git a/discover/grub2/env.c b/discover/grub2/env.c
> index 3598927..7eda095 100644
> --- a/discover/grub2/env.c
> +++ b/discover/grub2/env.c
> @@ -257,6 +257,10 @@ int builtin_save_env(struct grub2_script *script,
>  
>  		name = argv[i];
>  		value = script_env_get(script, name);
> +		if (!value) {
> +			pb_log("Saved unset environment variable %s!\n", name);
> +			value = "";
> +		}
>  
>  		update_env(buf + siglen, len - siglen, name, value);
>  	}
> diff --git a/test/parser/test-grub2-save-env.c b/test/parser/test-grub2-save-env.c
> index 68e91bd..36725e2 100644
> --- a/test/parser/test-grub2-save-env.c
> +++ b/test/parser/test-grub2-save-env.c
> @@ -74,6 +74,12 @@ struct env_test {
>  		"a=xxx\nsave_env a\n",
>  		"q=q\na=x\nr=r\n#",
>  	},
> +	{
> +		"unset-var",
> +		"##############",
> +		"save_env an_unset_var\n",
> +		"an_unset_var=\n"
> +	}
>  };
>  
>  static void run_env_test(struct parser_test *test, struct env_test *envtest)
> -- 
> 2.7.0.rc3.207.g0ac5344
> 
> _______________________________________________
> Petitboot mailing list
> Petitboot at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/petitboot



More information about the Petitboot mailing list