]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
multiboot: Don't rely on particular ordering of options.
authorVladimir Serbinenko <phcoder@gmail.com>
Thu, 12 Nov 2015 10:54:38 +0000 (11:54 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Thu, 12 Nov 2015 10:54:38 +0000 (11:54 +0100)
grub-core/loader/multiboot.c

index fd8f28e21a113bb7032039cf6f59b58233bec129..73aa0aa12a13459ad5be0b810c0695c70a3acbdd 100644 (file)
@@ -240,20 +240,27 @@ grub_cmd_multiboot (grub_command_t cmd __attribute__ ((unused)),
 
 #ifndef GRUB_USE_MULTIBOOT2
   grub_multiboot_quirks = GRUB_MULTIBOOT_QUIRKS_NONE;
+  int option_found = 0;
 
-  if (argc != 0 && grub_strcmp (argv[0], "--quirk-bad-kludge") == 0)
+  do
     {
-      argc--;
-      argv++;
-      grub_multiboot_quirks |= GRUB_MULTIBOOT_QUIRK_BAD_KLUDGE;
-    }
+      option_found = 0;
+      if (argc != 0 && grub_strcmp (argv[0], "--quirk-bad-kludge") == 0)
+       {
+         argc--;
+         argv++;
+         option_found = 1;
+         grub_multiboot_quirks |= GRUB_MULTIBOOT_QUIRK_BAD_KLUDGE;
+       }
 
-  if (argc != 0 && grub_strcmp (argv[0], "--quirk-modules-after-kernel") == 0)
-    {
-      argc--;
-      argv++;
-      grub_multiboot_quirks |= GRUB_MULTIBOOT_QUIRK_MODULES_AFTER_KERNEL;
-    }
+      if (argc != 0 && grub_strcmp (argv[0], "--quirk-modules-after-kernel") == 0)
+       {
+         argc--;
+         argv++;
+         option_found = 1;
+         grub_multiboot_quirks |= GRUB_MULTIBOOT_QUIRK_MODULES_AFTER_KERNEL;
+       }
+    } while (option_found);
 #endif
 
   if (argc == 0)