73 lines
2.2 KiB
Diff
73 lines
2.2 KiB
Diff
|
From bf19feea5cbc44e6c50d14814d00c902073d8d92 Mon Sep 17 00:00:00 2001
|
||
|
From: Gary Ching-Pang Lin <glin@suse.com>
|
||
|
Date: Wed, 12 Feb 2014 11:38:24 +0800
|
||
|
Subject: [PATCH 1/2] Fix the signature list size calculation
|
||
|
|
||
|
While merging the hashes into the previous request, the list size
|
||
|
mistakenly included the signature list header, and this made the
|
||
|
request invalid.
|
||
|
|
||
|
Signed-off-by: Gary Ching-Pang Lin <glin@suse.com>
|
||
|
---
|
||
|
src/mokutil.c | 6 ++++--
|
||
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/src/mokutil.c b/src/mokutil.c
|
||
|
index dbec25b..b706c80 100644
|
||
|
--- a/src/mokutil.c
|
||
|
+++ b/src/mokutil.c
|
||
|
@@ -1374,6 +1374,9 @@ issue_hash_request (const char *hash_str, MokRequest req,
|
||
|
|
||
|
old_req.VariableName = req_name;
|
||
|
old_req.VendorGuid = SHIM_LOCK_GUID;
|
||
|
+
|
||
|
+ list_size = sizeof(EFI_SIGNATURE_LIST) + sizeof(efi_guid_t) + hash_size;
|
||
|
+
|
||
|
if (read_variable (&old_req) == EFI_SUCCESS) {
|
||
|
int i;
|
||
|
list_size += old_req.DataSize;
|
||
|
@@ -1388,13 +1391,12 @@ issue_hash_request (const char *hash_str, MokRequest req,
|
||
|
if (efi_guidcmp (mok_list[i].header->SignatureType,
|
||
|
hash_type) == 0) {
|
||
|
merge_ind = i;
|
||
|
+ list_size -= sizeof(EFI_SIGNATURE_LIST);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
- list_size += sizeof(EFI_SIGNATURE_LIST) + sizeof(efi_guid_t) + hash_size;
|
||
|
-
|
||
|
new_list = malloc (list_size);
|
||
|
if (!new_list) {
|
||
|
fprintf (stderr, "Failed to allocate space for %s\n", req_name);
|
||
|
--
|
||
|
1.8.4.5
|
||
|
|
||
|
|
||
|
From 0c8e542eaaa1f3f8be2198806a5bc370813b4d81 Mon Sep 17 00:00:00 2001
|
||
|
From: Gary Ching-Pang Lin <glin@suse.com>
|
||
|
Date: Wed, 12 Feb 2014 15:24:23 +0800
|
||
|
Subject: [PATCH 2/2] Update the list size after deleting a hash
|
||
|
|
||
|
Signed-off-by: Gary Ching-Pang Lin <glin@suse.com>
|
||
|
---
|
||
|
src/mokutil.c | 1 +
|
||
|
1 file changed, 1 insertion(+)
|
||
|
|
||
|
diff --git a/src/mokutil.c b/src/mokutil.c
|
||
|
index b706c80..935cb94 100644
|
||
|
--- a/src/mokutil.c
|
||
|
+++ b/src/mokutil.c
|
||
|
@@ -501,6 +501,7 @@ delete_data_from_list (efi_guid_t type, void *data, uint32_t data_size,
|
||
|
start += sizeof(EFI_SIGNATURE_LIST) + sig_size * del_ind;
|
||
|
end = start + sig_size;
|
||
|
total -= sig_size;
|
||
|
+ list[i].header->SignatureListSize -= sig_size;
|
||
|
remain += sig_list_size - sizeof(EFI_SIGNATURE_LIST) -
|
||
|
(del_ind + 1) * sig_size;
|
||
|
}
|
||
|
--
|
||
|
1.8.4.5
|
||
|
|