diff options
| author | Matthew Garrett <mjg@redhat.com> | 2012-10-06 17:30:46 -0400 |
|---|---|---|
| committer | Matthew Garrett <mjg@redhat.com> | 2012-10-06 17:30:46 -0400 |
| commit | 24eace99538f7281f9490c39f02e640956032c92 (patch) | |
| tree | 969cb80d9ff6ea0b94ff7a05088ccb9ec3065f4e | |
| parent | 27a8fc9fd1f94526965713e0b6b362df49e5569e (diff) | |
| download | efi-boot-shim-24eace99538f7281f9490c39f02e640956032c92.tar.gz efi-boot-shim-24eace99538f7281f9490c39f02e640956032c92.zip | |
Fix menu items
Only show the MOK manipulation menu item if MokNew existed
| -rw-r--r-- | MokManager.c | 48 |
1 files changed, 31 insertions, 17 deletions
diff --git a/MokManager.c b/MokManager.c index 3325bb30..71d6b4b3 100644 --- a/MokManager.c +++ b/MokManager.c @@ -990,33 +990,47 @@ UINTN find_fs (void *data, void *data2) { return 0; } -static int enter_mok_menu(EFI_HANDLE image_handle, void *MokNew) +static EFI_STATUS enter_mok_menu(EFI_HANDLE image_handle, void *MokNew) { - struct menu_item menu_item[3]; + struct menu_item *menu_item; UINT32 MokNum; + UINTN menucount = 0; + + if (MokNew) + menu_item = AllocatePool(sizeof(struct menu_item) * 3); + else + menu_item = AllocatePool(sizeof(struct menu_item) * 2); + + if (!menu_item) + return EFI_OUT_OF_RESOURCES; menu_item[0].text = StrDuplicate(L"Continue boot"); menu_item[0].colour = EFI_WHITE; menu_item[0].callback = NULL; - CopyMem(&MokNum, MokNew, sizeof(UINT32)); - if (MokNum == 0) { - menu_item[1].text = StrDuplicate(L"Delete MOK"); - menu_item[1].colour = EFI_WHITE; - menu_item[1].data = MokNew; - menu_item[1].callback = mok_deletion_prompt; - } else { - menu_item[1].text = StrDuplicate(L"Enroll MOK\n"); - menu_item[1].colour = EFI_WHITE; - menu_item[1].data = MokNew; - menu_item[1].callback = mok_enrollment_prompt; + menucount++; + + if (MokNew) { + CopyMem(&MokNum, MokNew, sizeof(UINT32)); + if (MokNum == 0) { + menu_item[1].text = StrDuplicate(L"Delete MOK"); + menu_item[1].colour = EFI_WHITE; + menu_item[1].data = MokNew; + menu_item[1].callback = mok_deletion_prompt; + } else { + menu_item[1].text = StrDuplicate(L"Enroll MOK\n"); + menu_item[1].colour = EFI_WHITE; + menu_item[1].data = MokNew; + menu_item[1].callback = mok_enrollment_prompt; + } + menucount++; } - menu_item[2].text = StrDuplicate(L"Enroll key from disk"); - menu_item[2].colour = EFI_WHITE; - menu_item[2].callback = find_fs; + menu_item[menucount].text = StrDuplicate(L"Enroll key from disk"); + menu_item[menucount].colour = EFI_WHITE; + menu_item[menucount].callback = find_fs; - run_menu(menu_item, 3); + run_menu(menu_item, menucount); return 0; } |
