summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Jones <pjones@redhat.com>2013-09-26 13:44:05 -0400
committerPeter Jones <pjones@redhat.com>2013-09-26 13:44:05 -0400
commit8317a1f0ada758d4e86f0503ff229a8f7b74ef75 (patch)
tree11158631ee0edf4c49e7aeeb9ab18c61dfbc6860
parent59dcd9d1b8c45027d9aa5a1958579ae9872df6c7 (diff)
downloadefi-boot-shim-8317a1f0ada758d4e86f0503ff229a8f7b74ef75.tar.gz
efi-boot-shim-8317a1f0ada758d4e86f0503ff229a8f7b74ef75.zip
Don't use LibGetVariable(), since it doesn't give us real error codes.
-rw-r--r--MokManager.c55
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);