ACK: [PATCH][v2] uefi: uefidump: small re-working of uefi GUID lookup

Alex Hung alex.hung at canonical.com
Thu Mar 6 03:42:21 UTC 2014


On 03/05/2014 04:53 PM, Colin King wrote:
> 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);
>

Acked-by: Alex Hung <alex.hung at canonical.com>



More information about the fwts-devel mailing list