boot: Prevent stub command line editing under secure boot

This commit is contained in:
Jan Janssen
2022-01-03 11:29:49 +01:00
parent fb90100cf0
commit 7ffc4f4748
+13 -2
View File
@@ -44,6 +44,7 @@ enum loader_type {
LOADER_UNDEFINED,
LOADER_EFI,
LOADER_LINUX,
LOADER_STUB,
};
typedef struct {
@@ -857,8 +858,18 @@ static BOOLEAN menu_run(
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.
@@ -2106,7 +2117,7 @@ static void config_entry_add_linux(
entry = config_entry_add_loader(
config,
device,
LOADER_LINUX,
LOADER_STUB,
f->FileName,
/* key= */ 'l',
good_name,