Print this page
10349 bop_blacklist should cover loader menu

@@ -24,11 +24,11 @@
  * Use is subject to license terms.
  *
  * Copyright (c) 2010, Intel Corporation.
  * All rights reserved.
  *
- * Copyright 2018 Joyent, Inc.  All rights reserved.
+ * Copyright (c) 2019, Joyent, Inc.
  */
 
 /*
  * This file contains the functionality that mimics the boot operations
  * on SPARC systems or the old boot.bin/multiboot programs on x86 systems.

@@ -1286,19 +1286,22 @@
  * To keep the blacklist from growing too large, we use prefix based filtering.
  * This is possible because in many cases, the loader variable names are
  * using a structured layout.
  *
  * We will not overwrite already set properties.
+ *
+ * Note that the menu items in particular can contain characters not
+ * well-handled as bootparams, such as spaces, brackets, and the like, so that's
+ * another reason.
  */
 static struct bop_blacklist {
         const char *bl_name;
         int bl_name_len;
 } bop_prop_blacklist[] = {
         { "ISADIR", sizeof ("ISADIR") },
         { "acpi", sizeof ("acpi") },
         { "autoboot_delay", sizeof ("autoboot_delay") },
-        { "autoboot_delay", sizeof ("autoboot_delay") },
         { "beansi_", sizeof ("beansi_") },
         { "beastie", sizeof ("beastie") },
         { "bemenu", sizeof ("bemenu") },
         { "boot.", sizeof ("boot.") },
         { "bootenv", sizeof ("bootenv") },

@@ -1306,12 +1309,20 @@
         { "dhcp.", sizeof ("dhcp.") },
         { "interpret", sizeof ("interpret") },
         { "kernel", sizeof ("kernel") },
         { "loaddev", sizeof ("loaddev") },
         { "loader_", sizeof ("loader_") },
+        { "mainansi_", sizeof ("mainansi_") },
+        { "mainmenu_", sizeof ("mainmenu_") },
+        { "maintoggled_", sizeof ("maintoggled_") },
+        { "menu_timeout_command", sizeof ("menu_timeout_command") },
+        { "menuset_", sizeof ("menuset_") },
         { "module_path", sizeof ("module_path") },
         { "nfs.", sizeof ("nfs.") },
+        { "optionsansi_", sizeof ("optionsansi_") },
+        { "optionsmenu_", sizeof ("optionsmenu_") },
+        { "optionstoggled_", sizeof ("optionstoggled_") },
         { "pcibios", sizeof ("pcibios") },
         { "prompt", sizeof ("prompt") },
         { "smbios", sizeof ("smbios") },
         { "tem", sizeof ("tem") },
         { "twiddle_divisor", sizeof ("twiddle_divisor") },