|
|
00e791 |
From f748139695384fb4e09833898f0b8cb3ab85d810 Mon Sep 17 00:00:00 2001
|
|
|
24a050 |
From: Gary Lin <glin@suse.com>
|
|
|
24a050 |
Date: Wed, 21 Nov 2018 12:47:43 +0800
|
|
|
00e791 |
Subject: [PATCH 21/62] mok: fix the mirroring of RT variables
|
|
|
24a050 |
|
|
|
24a050 |
When there is no key in MokList, import_mok_state() just skipped MokList
|
|
|
24a050 |
even though it should always mirror the vendor cert. Besides, the faulty
|
|
|
24a050 |
check of 'present' and 'addend' invalidates the mirroring of MokListXRT,
|
|
|
24a050 |
MokSBStateRT, and MokIgnoreDB.
|
|
|
24a050 |
|
|
|
24a050 |
https://github.com/rhboot/shim/issues/154
|
|
|
24a050 |
|
|
|
24a050 |
Signed-off-by: Gary Lin <glin@suse.com>
|
|
|
00e791 |
Upstream-commit-id: 4b27ae034ba
|
|
|
24a050 |
---
|
|
|
24a050 |
mok.c | 11 ++++-------
|
|
|
24a050 |
1 file changed, 4 insertions(+), 7 deletions(-)
|
|
|
24a050 |
|
|
|
24a050 |
diff --git a/mok.c b/mok.c
|
|
|
24a050 |
index 00dd1ad3034..41925abbb49 100644
|
|
|
24a050 |
--- a/mok.c
|
|
|
24a050 |
+++ b/mok.c
|
|
|
24a050 |
@@ -231,12 +231,8 @@ EFI_STATUS import_mok_state(EFI_HANDLE image_handle)
|
|
|
24a050 |
&v->data, &v->data_size,
|
|
|
24a050 |
*v->guid, &attrs);
|
|
|
24a050 |
if (efi_status == EFI_NOT_FOUND) {
|
|
|
24a050 |
- if (v->rtname && addend) {
|
|
|
24a050 |
- efi_status = mirror_one_mok_variable(v);
|
|
|
24a050 |
- if (EFI_ERROR(efi_status) &&
|
|
|
24a050 |
- ret != EFI_SECURITY_VIOLATION)
|
|
|
24a050 |
- ret = efi_status;
|
|
|
24a050 |
- }
|
|
|
24a050 |
+ if (addend)
|
|
|
24a050 |
+ goto mirror_addend;
|
|
|
24a050 |
/*
|
|
|
24a050 |
* after possibly adding, we can continue, no
|
|
|
24a050 |
* further checks to be done.
|
|
|
24a050 |
@@ -316,7 +312,8 @@ EFI_STATUS import_mok_state(EFI_HANDLE image_handle)
|
|
|
24a050 |
}
|
|
|
24a050 |
}
|
|
|
24a050 |
|
|
|
24a050 |
- if (v->rtname && present && addend) {
|
|
|
24a050 |
+mirror_addend:
|
|
|
24a050 |
+ if (v->rtname && (present || addend)) {
|
|
|
24a050 |
if (v->flags & MOK_MIRROR_DELETE_FIRST)
|
|
|
24a050 |
LibDeleteVariable(v->rtname, v->guid);
|
|
|
24a050 |
|
|
|
24a050 |
--
|
|
|
00e791 |
2.26.2
|
|
|
24a050 |
|