From e0bd66c3141f61749c599a190ecae17903a1d7ec Mon Sep 17 00:00:00 2001 From: Vladimir Serbinenko Date: Thu, 12 Nov 2015 11:54:38 +0100 Subject: [PATCH] multiboot: Don't rely on particular ordering of options. --- grub-core/loader/multiboot.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/grub-core/loader/multiboot.c b/grub-core/loader/multiboot.c index fd8f28e21..73aa0aa12 100644 --- a/grub-core/loader/multiboot.c +++ b/grub-core/loader/multiboot.c @@ -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) -- 2.47.2