mirror of
https://git.proxmox.com/git/efi-boot-shim
synced 2025-07-27 06:44:08 +00:00
Updated version 12+1502324945.478f9bb from 'upstream/12+1502324945.478f9bb'
with Debian dir a5373f8bb4
This commit is contained in:
commit
31e25d5271
@ -1 +0,0 @@
|
||||
debian/patches
|
@ -1 +0,0 @@
|
||||
series
|
@ -1 +0,0 @@
|
||||
2
|
63
MokManager.c
63
MokManager.c
@ -1058,14 +1058,12 @@ static EFI_STATUS mok_enrollment_prompt (void *MokNew, UINTN MokNewSize, int aut
|
||||
LibDeleteVariable(L"MokNew", &shim_lock_guid);
|
||||
LibDeleteVariable(L"MokAuth", &shim_lock_guid);
|
||||
}
|
||||
}
|
||||
|
||||
if (MokNew)
|
||||
FreePool (MokNew);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
static EFI_STATUS mok_reset_prompt (BOOLEAN MokX)
|
||||
@ -2184,17 +2182,12 @@ static EFI_STATUS enter_mok_menu(EFI_HANDLE image_handle,
|
||||
void *MokPW, UINTN MokPWSize,
|
||||
void *MokDB, UINTN MokDBSize,
|
||||
void *MokXNew, UINTN MokXNewSize,
|
||||
void *MokXDel, UINTN MokXDelSize,
|
||||
int mok_changed)
|
||||
void *MokXDel, UINTN MokXDelSize)
|
||||
{
|
||||
CHAR16 **menu_strings;
|
||||
mok_menu_item *menu_item;
|
||||
int choice = 0;
|
||||
UINT32 MokAuth = 0;
|
||||
UINT32 MokDelAuth = 0;
|
||||
UINT32 MokXAuth = 0;
|
||||
UINT32 MokXDelAuth = 0;
|
||||
UINTN menucount = 3, i = 0;
|
||||
int mok_changed = 0;
|
||||
EFI_STATUS efi_status;
|
||||
EFI_GUID shim_lock_guid = SHIM_LOCK_GUID;
|
||||
UINT8 auth[PASSWORD_CRYPT_SIZE];
|
||||
@ -2206,6 +2199,16 @@ static EFI_STATUS enter_mok_menu(EFI_HANDLE image_handle,
|
||||
if (verify_pw(&protected) == FALSE)
|
||||
return EFI_ACCESS_DENIED;
|
||||
|
||||
if (protected == FALSE && draw_countdown() == 0)
|
||||
goto out;
|
||||
|
||||
while (choice >= 0) {
|
||||
UINTN menucount = 3, i = 0;
|
||||
UINT32 MokAuth = 0;
|
||||
UINT32 MokDelAuth = 0;
|
||||
UINT32 MokXAuth = 0;
|
||||
UINT32 MokXDelAuth = 0;
|
||||
|
||||
efi_status = uefi_call_wrapper(RT->GetVariable, 5, L"MokAuth",
|
||||
&shim_lock_guid,
|
||||
&attributes, &auth_size, auth);
|
||||
@ -2271,12 +2274,10 @@ static EFI_STATUS enter_mok_menu(EFI_HANDLE image_handle,
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
if (mok_changed) {
|
||||
if (mok_changed)
|
||||
menu_strings[i] = L"Reboot";
|
||||
console_notify(L"The system must be rebooted for your changes to take effect");
|
||||
} else {
|
||||
else
|
||||
menu_strings[i] = L"Continue boot";
|
||||
}
|
||||
menu_item[i] = MOK_BOOT;
|
||||
|
||||
i++;
|
||||
@ -2343,10 +2344,6 @@ static EFI_STATUS enter_mok_menu(EFI_HANDLE image_handle,
|
||||
|
||||
menu_strings[i] = NULL;
|
||||
|
||||
if (protected == FALSE && draw_countdown() == 0)
|
||||
goto out;
|
||||
|
||||
while (choice >= 0) {
|
||||
choice = console_select((CHAR16 *[]){ L"Perform MOK management", NULL },
|
||||
menu_strings, 0);
|
||||
|
||||
@ -2361,27 +2358,41 @@ static EFI_STATUS enter_mok_menu(EFI_HANDLE image_handle,
|
||||
break;
|
||||
case MOK_ENROLL_MOK:
|
||||
efi_status = mok_enrollment_prompt(MokNew, MokNewSize, TRUE, FALSE);
|
||||
if (efi_status == EFI_SUCCESS)
|
||||
MokNew = NULL;
|
||||
break;
|
||||
case MOK_DELETE_MOK:
|
||||
efi_status = mok_deletion_prompt(MokDel, MokDelSize, FALSE);
|
||||
if (efi_status == EFI_SUCCESS)
|
||||
MokDel = NULL;
|
||||
break;
|
||||
case MOK_RESET_MOKX:
|
||||
efi_status = mok_reset_prompt(TRUE);
|
||||
break;
|
||||
case MOK_ENROLL_MOKX:
|
||||
efi_status = mok_enrollment_prompt(MokXNew, MokXNewSize, TRUE, TRUE);
|
||||
if (efi_status == EFI_SUCCESS)
|
||||
MokXNew = NULL;
|
||||
break;
|
||||
case MOK_DELETE_MOKX:
|
||||
efi_status = mok_deletion_prompt(MokXDel, MokXDelSize, TRUE);
|
||||
if (efi_status == EFI_SUCCESS)
|
||||
MokXDel = NULL;
|
||||
break;
|
||||
case MOK_CHANGE_SB:
|
||||
efi_status = mok_sb_prompt(MokSB, MokSBSize);
|
||||
if (efi_status == EFI_SUCCESS)
|
||||
MokSB = NULL;
|
||||
break;
|
||||
case MOK_SET_PW:
|
||||
efi_status = mok_pw_prompt(MokPW, MokPWSize);
|
||||
if (efi_status == EFI_SUCCESS)
|
||||
MokPW = NULL;
|
||||
break;
|
||||
case MOK_CHANGE_DB:
|
||||
efi_status = mok_db_prompt(MokDB, MokDBSize);
|
||||
if (efi_status == EFI_SUCCESS)
|
||||
MokDB = NULL;
|
||||
break;
|
||||
case MOK_KEY_ENROLL:
|
||||
efi_status = mok_key_enroll();
|
||||
@ -2390,29 +2401,21 @@ static EFI_STATUS enter_mok_menu(EFI_HANDLE image_handle,
|
||||
efi_status = mok_hash_enroll();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (efi_status == EFI_SUCCESS)
|
||||
mok_changed = 1;
|
||||
else
|
||||
mok_changed = 0;
|
||||
|
||||
free_menu(menu_item, menu_strings);
|
||||
|
||||
mok_changed = enter_mok_menu(image_handle, MokNew, MokNewSize, MokDel,
|
||||
MokDelSize, MokSB, MokSBSize, MokPW,
|
||||
MokPWSize, MokDB, MokDBSize, MokXNew,
|
||||
MokXNewSize, MokXDel, MokXDelSize,
|
||||
mok_changed);
|
||||
}
|
||||
|
||||
out:
|
||||
free_menu(menu_item, menu_strings);
|
||||
|
||||
if (mok_changed)
|
||||
return reset_system();
|
||||
|
||||
console_reset();
|
||||
|
||||
free_menu(menu_item, menu_strings);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -2502,7 +2505,7 @@ static EFI_STATUS check_mok_request(EFI_HANDLE image_handle)
|
||||
|
||||
enter_mok_menu(image_handle, MokNew, MokNewSize, MokDel, MokDelSize,
|
||||
MokSB, MokSBSize, MokPW, MokPWSize, MokDB, MokDBSize,
|
||||
MokXNew, MokXNewSize, MokXDel, MokXDelSize, 0);
|
||||
MokXNew, MokXNewSize, MokXDel, MokXDelSize);
|
||||
|
||||
if (MokNew)
|
||||
FreePool (MokNew);
|
||||
|
Loading…
Reference in New Issue
Block a user