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 <scdbac...@gmx.net>
---
 util/grub-mkrescue.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/util/grub-mkrescue.c b/util/grub-mkrescue.c
index abcc1c2f5..8714d819e 100644
--- a/util/grub-mkrescue.c
+++ b/util/grub-mkrescue.c
@@ -477,6 +477,9 @@ main (int argc, char *argv[])
     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];
@@ -485,6 +488,9 @@ main (int argc, char *argv[])
        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:
--
2.39.2


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to