LOADER_UNDEFINED,
LOADER_EFI,
LOADER_LINUX,
+ LOADER_STUB,
};
typedef struct {
case KEYPRESS(0, 0, 'e'):
case KEYPRESS(0, 0, 'E'):
/* only the options of configured entries can be edited */
- if (!config->editor || config->entries[idx_highlight]->type == LOADER_UNDEFINED)
+ if (!config->editor || !IN_SET(config->entries[idx_highlight]->type,
+ LOADER_EFI, LOADER_LINUX, LOADER_STUB))
break;
+
+ /* The stub will not accept command line options when secure boot is enabled
+ * unless there is none embedded in the image. Do not try to pretend we
+ * can edit it to only have it be ignored. */
+ if (config->entries[idx_highlight]->type == LOADER_STUB &&
+ secure_boot_enabled() &&
+ config->entries[idx_highlight]->options)
+ break;
+
/* The edit line may end up on the last line of the screen. And even though we're
* not telling the firmware to advance the line, it still does in this one case,
* causing a scroll to happen that screws with our beautiful boot loader output.
entry = config_entry_add_loader(
config,
device,
- LOADER_LINUX,
+ LOADER_STUB,
f->FileName,
/* key= */ 'l',
good_name,