X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;ds=sidebyside;f=discover%2Fgrub2%2Fscript.c;h=c910bf8bc1a28bf86901459b11d7a99ad059bc35;hb=53e0f3ef35ac694220dce135f01a4f736cbd1c19;hp=1a802b97943ee951fa2487873becd04016d43463;hpb=91ce1a8f8863d8f740188236f138421d17292d6c;p=petitboot diff --git a/discover/grub2/script.c b/discover/grub2/script.c index 1a802b9..c910bf8 100644 --- a/discover/grub2/script.c +++ b/discover/grub2/script.c @@ -117,12 +117,10 @@ static bool option_is_default(struct grub2_script *script, if (end != var && *end == '\0') return default_idx == script->n_options; - /* if we don't have an explicit id for this option, fall back to - * the name */ - if (!id) - id = opt->option->name; + if (id && !strcmp(id, var)) + return true; - return !strcmp(id, var); + return !strcmp(opt->option->name, var); } static void append_text_to_current_arg(struct grub2_argv *argv, @@ -227,7 +225,7 @@ static void process_expansions(struct grub2_script *script, } /* we may have allocated an extra argv element but not populated it */ - if (!argv->argv[argv->argc - 1]) + if (argv->argv && !argv->argv[argv->argc - 1]) argv->argc--; } @@ -489,6 +487,9 @@ void script_execute(struct grub2_script *script) { struct discover_boot_option *opt, *tmp; + if (!script) + return; + init_env(script); statements_execute(script, script->statements);