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

Alan Dunn amdunn at google.com
Tue Mar 15 11:41:23 AEDT 2016


Done, thanks!

On Mon, Mar 14, 2016 at 5:18 PM, Sam Mendoza-Jonas <sam at mendozajonas.com>
wrote:

> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/petitboot/attachments/20160314/75fd937f/attachment.html>


More information about the Petitboot mailing list