From: Vladimir 'phcoder' Serbinenko Date: Mon, 1 Nov 2010 11:45:51 +0000 (+0100) Subject: * grub-core/lib/arg.c (grub_arg_parse): Avoid interpreting direct X-Git-Tag: 1.99~358 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6428dec358c31142df4e9accb492d51590b99176;p=thirdparty%2Fgrub.git * grub-core/lib/arg.c (grub_arg_parse): Avoid interpreting direct argument as an argument to no-argument option. --- diff --git a/ChangeLog b/ChangeLog index 96df25ede..45e76b68a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2010-11-01 Vladimir Serbinenko + + * grub-core/lib/arg.c (grub_arg_parse): Avoid interpreting direct + argument as an argument to no-argument option. + 2010-11-01 Vladimir Serbinenko * util/grub.d/10_linux.in: Add missing load_video with explicit diff --git a/grub-core/lib/arg.c b/grub-core/lib/arg.c index 1c765f12a..75b1dd53c 100644 --- a/grub-core/lib/arg.c +++ b/grub-core/lib/arg.c @@ -340,17 +340,20 @@ grub_arg_parse (grub_extcmd_t cmd, int argc, char **argv, } option = grub_strchr (arg, '='); - if (option) { - arglen = option - arg - 2; - option++; - } else { + if (option) + { + arglen = option - arg - 2; + option++; + } + else arglen = grub_strlen (arg) - 2; - if (argv[curarg + 1]) - option = argv[curarg + 1][0] == '-' ? 0 : argv[++curarg]; - } opt = find_long (cmd->options, arg + 2, arglen); + if (!option && argv[curarg + 1] && argv[curarg + 1][0] != '-' + && opt->type != ARG_TYPE_NONE) + option = argv[++curarg]; + if (!opt && (cmd->cmd->flags & GRUB_COMMAND_ACCEPT_DASH)) { if (add_arg (arg) != 0)