As reported by Victoriia Egorova in bug 65880, grub-mkrescue does not
verify that the expected argument of an option like -d or -k does really
exist in argv. So, check the loop counter before incrementing it inside
the loop which copies argv to argp_argv. Issue an error message similar
to what older versions of grub-mkrescue did with a missing argument,
e.g. 2.02.
Fixes: https://savannah.gnu.org/bugs/index.php?65880
Signed-off-by: Thomas Schmitt <scdbackup@gmx.net>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
for (i = 1; i < argc; i++)
{
if (strcmp (argv[i], "-output") == 0) {
+ if (i + 1 >= argc)
+ grub_util_error ("%s -- '%s'", _("option requires an argument"), argv[i]);
argp_argv[argp_argc++] = (char *) "--output";
i++;
argp_argv[argp_argc++] = argv[i];
switch (args_to_eat (argv[i]))
{
case 2:
+ if (i + 1 >= argc)
+ grub_util_error ("%s -- '%s'", _("option requires an argument"), argv[i]);
argp_argv[argp_argc++] = argv[i++];
/* Fallthrough */
case 1: