summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Garrett <mjg@redhat.com>2012-10-23 13:00:40 -0400
committerMatthew Garrett <mjg@redhat.com>2012-10-23 13:00:40 -0400
commit3a5933619965b4ba8c3aa0e3abbb4755bb80dc78 (patch)
tree40d7c0c6941b52fe13583857e1bbe475053b3065
parent34f0c4abc0a0e43656155be587428639bbf87710 (diff)
downloadefi-boot-shim-3a5933619965b4ba8c3aa0e3abbb4755bb80dc78.tar.gz
efi-boot-shim-3a5933619965b4ba8c3aa0e3abbb4755bb80dc78.zip
Fix key database parsing
The pointer to the certificate needs to be incremented by the size of the entire certificate, not just the certificate data.
-rw-r--r--MokManager.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/MokManager.c b/MokManager.c
index 08e1d363..282fbc6a 100644
--- a/MokManager.c
+++ b/MokManager.c
@@ -108,7 +108,7 @@ static MokListNode *build_mok_list(UINT32 num, void *Data, UINTN DataSize) {
(CompareGuid (&CertList->SignatureType, &HashType) != 0)) {
dbsize -= CertList->SignatureListSize;
CertList = (EFI_SIGNATURE_LIST *)((UINT8 *) CertList +
- CertList->SignatureSize);
+ CertList->SignatureListSize);
continue;
}
@@ -116,7 +116,7 @@ static MokListNode *build_mok_list(UINT32 num, void *Data, UINTN DataSize) {
(CertList->SignatureSize != 48)) {
dbsize -= CertList->SignatureListSize;
CertList = (EFI_SIGNATURE_LIST *)((UINT8 *) CertList +
- CertList->SignatureSize);
+ CertList->SignatureListSize);
continue;
}
@@ -129,7 +129,7 @@ static MokListNode *build_mok_list(UINT32 num, void *Data, UINTN DataSize) {
count++;
dbsize -= CertList->SignatureListSize;
CertList = (EFI_SIGNATURE_LIST *) ((UINT8 *) CertList +
- CertList->SignatureSize);
+ CertList->SignatureListSize);
}
return list;
@@ -414,7 +414,7 @@ static UINT8 list_keys (void *MokNew, UINTN MokNewSize)
Print(L"Doesn't look like a key or hash\n");
dbsize -= CertList->SignatureListSize;
CertList = (EFI_SIGNATURE_LIST *) ((UINT8 *) CertList +
- CertList->SignatureSize);
+ CertList->SignatureListSize);
continue;
}
@@ -423,14 +423,14 @@ static UINT8 list_keys (void *MokNew, UINTN MokNewSize)
Print(L"Doesn't look like a valid hash\n");
dbsize -= CertList->SignatureListSize;
CertList = (EFI_SIGNATURE_LIST *) ((UINT8 *) CertList +
- CertList->SignatureSize);
+ CertList->SignatureListSize);
continue;
}
MokNum++;
dbsize -= CertList->SignatureListSize;
CertList = (EFI_SIGNATURE_LIST *) ((UINT8 *) CertList +
- CertList->SignatureSize);
+ CertList->SignatureListSize);
}
keys = build_mok_list(MokNum, MokNew, MokNewSize);