[PATCH][v2] uefi: uefidump: small re-working of uefi GUID lookup
Colin King
colin.king at canonical.com
Wed Mar 5 08:53:28 UTC 2014
From: Colin Ian King <colin.king at canonical.com>
I've taken the liberty to re-work the GUID lookup to
couple guid and str arrays into an array of guid_maps.
No functional change.
Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
src/uefi/uefidump/uefidump.c | 59 +++++++++++++++++++++-----------------------
1 file changed, 28 insertions(+), 31 deletions(-)
diff --git a/src/uefi/uefidump/uefidump.c b/src/uefi/uefidump/uefidump.c
index cc1137f..50d47e1 100644
--- a/src/uefi/uefidump/uefidump.c
+++ b/src/uefi/uefidump/uefidump.c
@@ -1059,40 +1059,34 @@ static void uefidump_info_keyoption(fwts_framework *fw, fwts_uefi_var *var)
}
}
+#define GUID_MAP(x) { x, # x }
+
static void uefidump_info_signaturedatabase(fwts_framework *fw, fwts_uefi_var *var)
{
fwts_uefi_signature_list *signature_list;
char guid_str[37];
size_t offset = 0, list_start = 0;
size_t i;
- fwts_uefi_guid guid[] = {
- EFI_CERT_X509_GUID,
- EFI_CERT_SHA256_GUID,
- EFI_CERT_RSA2048_GUID,
- EFI_CERT_RSA2048_SHA256_GUID,
- EFI_CERT_SHA1_GUID,
- EFI_CERT_RSA2048_SHA1_GUID,
- EFI_CERT_SHA224_GUID,
- EFI_CERT_SHA384_GUID,
- EFI_CERT_SHA512_GUID,
- EFI_CERT_X509_SHA256_GUID,
- EFI_CERT_X509_SHA384_GUID,
- EFI_CERT_X509_SHA512_GUID
- };
- char *str[] = {
- "EFI_CERT_X509_GUID",
- "EFI_CERT_SHA256_GUID",
- "EFI_CERT_RSA2048_GUID",
- "EFI_CERT_RSA2048_SHA256_GUID",
- "EFI_CERT_SHA1_GUID",
- "EFI_CERT_RSA2048_SHA1_GUID",
- "EFI_CERT_SHA224_GUID",
- "EFI_CERT_SHA384_GUID",
- "EFI_CERT_SHA512_GUID",
- "EFI_CERT_X509_SHA256_GUID",
- "EFI_CERT_X509_SHA384_GUID",
- "EFI_CERT_X509_SHA512_GUID",
- "Unknown GUID"
+
+ typedef struct {
+ const fwts_uefi_guid guid;
+ const char *str;
+ } guid_map;
+
+ static const guid_map guids[] = {
+ GUID_MAP(EFI_CERT_X509_GUID),
+ GUID_MAP(EFI_CERT_SHA256_GUID),
+ GUID_MAP(EFI_CERT_RSA2048_GUID),
+ GUID_MAP(EFI_CERT_RSA2048_SHA256_GUID),
+ GUID_MAP(EFI_CERT_SHA1_GUID),
+ GUID_MAP(EFI_CERT_RSA2048_SHA1_GUID),
+ GUID_MAP(EFI_CERT_SHA224_GUID),
+ GUID_MAP(EFI_CERT_SHA384_GUID),
+ GUID_MAP(EFI_CERT_SHA512_GUID),
+ GUID_MAP(EFI_CERT_X509_SHA256_GUID),
+ GUID_MAP(EFI_CERT_X509_SHA384_GUID),
+ GUID_MAP(EFI_CERT_X509_SHA512_GUID),
+ { { 0, 0, 0, { 0, }}, NULL }
};
if (var->datalen < sizeof(fwts_uefi_signature_list))
@@ -1101,12 +1095,15 @@ static void uefidump_info_signaturedatabase(fwts_framework *fw, fwts_uefi_var *v
do {
signature_list = (fwts_uefi_signature_list *)(var->data + list_start);
fwts_guid_buf_to_str(var->data, guid_str, sizeof(guid_str));
+ const char *str = "Unknown GUID";
- for (i = 0; i < sizeof(guid)/sizeof(guid[0]); i++)
- if (memcmp(var->data, &guid[i], sizeof(fwts_uefi_guid)) == 0)
+ for (i = 0; guids[i].str; i++)
+ if (!memcmp(var->data, &guids[i].guid, sizeof(fwts_uefi_guid))) {
+ str = guids[i].str;
break;
+ }
- fwts_log_info_verbatum(fw, " SignatureType: %s (%s)", guid_str, str[i]);
+ fwts_log_info_verbatum(fw, " SignatureType: %s (%s)", guid_str, str);
fwts_log_info_verbatum(fw, " SignatureListSize: 0x%" PRIx32, signature_list->signaturelistsize);
fwts_log_info_verbatum(fw, " SignatureHeaderSize: 0x%" PRIx32, signature_list->signatureheadersize);
fwts_log_info_verbatum(fw, " SignatureSize: 0x%" PRIx32, signature_list->signaturesize);
--
1.9.0
More information about the fwts-devel
mailing list