[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