diff options
Diffstat (limited to 'MokManager.c')
| -rw-r--r-- | MokManager.c | 55 |
1 files changed, 36 insertions, 19 deletions
diff --git a/MokManager.c b/MokManager.c index 805017b6..7b7e1503 100644 --- a/MokManager.c +++ b/MokManager.c @@ -1685,46 +1685,63 @@ static EFI_STATUS check_mok_request(EFI_HANDLE image_handle) void *MokDel = NULL; void *MokSB = NULL; void *MokPW = NULL; + EFI_STATUS status; - MokNew = LibGetVariableAndSize(L"MokNew", &shim_lock_guid, &MokNewSize); - - MokDel = LibGetVariableAndSize(L"MokDel", &shim_lock_guid, &MokDelSize); - - MokSB = LibGetVariableAndSize(L"MokSB", &shim_lock_guid, &MokSBSize); - - MokPW = LibGetVariableAndSize(L"MokPW", &shim_lock_guid, &MokPWSize); - - enter_mok_menu(image_handle, MokNew, MokNewSize, MokDel, MokDelSize, - MokSB, MokSBSize, MokPW, MokPWSize); - - if (MokNew) { + status = get_variable(L"MokNew", (UINT8 **)&MokNew, &MokNewSize, + shim_lock_guid); + if (status == EFI_SUCCESS) { if (LibDeleteVariable(L"MokNew", &shim_lock_guid) != EFI_SUCCESS) { console_notify(L"Failed to delete MokNew"); } - FreePool (MokNew); + } else if (EFI_ERROR(status) && status != EFI_NOT_FOUND) { + console_error(L"Could not retrieve MokNew", status); } - if (MokDel) { + status = get_variable(L"MokDel", (UINT8 **)&MokDel, &MokDelSize, + shim_lock_guid); + if (status == EFI_SUCCESS) { if (LibDeleteVariable(L"MokDel", &shim_lock_guid) != EFI_SUCCESS) { console_notify(L"Failed to delete MokDel"); } - FreePool (MokDel); + } else if (EFI_ERROR(status) && status != EFI_NOT_FOUND) { + console_error(L"Could not retrieve MokDel", status); } - if (MokSB) { + status = get_variable(L"MokSB", (UINT8 **)&MokSB, &MokSBSize, + shim_lock_guid); + if (status == EFI_SUCCESS) { if (LibDeleteVariable(L"MokSB", &shim_lock_guid) != EFI_SUCCESS) { console_notify(L"Failed to delete MokSB"); } - FreePool (MokNew); + } else if (EFI_ERROR(status) && status != EFI_NOT_FOUND) { + console_error(L"Could not retrieve MokSB", status); } - if (MokPW) { + status = get_variable(L"MokPW", (UINT8 **)&MokPW, &MokPWSize, + shim_lock_guid); + if (status == EFI_SUCCESS) { if (LibDeleteVariable(L"MokPW", &shim_lock_guid) != EFI_SUCCESS) { console_notify(L"Failed to delete MokPW"); } - FreePool (MokNew); + } else if (EFI_ERROR(status) && status != EFI_NOT_FOUND) { + console_error(L"Could not retrieve MokPW", status); } + enter_mok_menu(image_handle, MokNew, MokNewSize, MokDel, MokDelSize, + MokSB, MokSBSize, MokPW, MokPWSize); + + if (MokNew) + FreePool (MokNew); + + if (MokDel) + FreePool (MokDel); + + if (MokSB) + FreePool (MokSB); + + if (MokPW) + FreePool (MokPW); + LibDeleteVariable(L"MokAuth", &shim_lock_guid); LibDeleteVariable(L"MokDelAuth", &shim_lock_guid); |
