]> git.proxmox.com Git - efi-boot-shim.git/commitdiff
Don't use LibGetVariable(), since it doesn't give us real error codes.
authorPeter Jones <pjones@redhat.com>
Thu, 26 Sep 2013 15:42:34 +0000 (11:42 -0400)
committerPeter Jones <pjones@redhat.com>
Thu, 26 Sep 2013 17:44:05 +0000 (13:44 -0400)
MokManager.c

index 805017b61846f52dc4994d10228ace46c8af00eb..7b7e15033f3302ecf1a092fa3c10b1c1a1600bca 100644 (file)
@@ -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);