New upstream version 12+1502324945.478f9bb

This commit is contained in:
Mathieu Trudel-Lapierre 2017-08-09 20:39:01 -04:00
parent 25f7fd1fb3
commit ac05ece820
2 changed files with 169 additions and 166 deletions

View File

@ -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);

2
commit
View File

@ -1 +1 @@
b58617505096e3940430d8d8bba033bb6bf75a8a
478f9bb2ea91b361ab52dac6604fdfb47e1e963c