ACK: [PATCH] uefi: uefidump: fix the Partition Signature length for the HD Media Device Path isn't correct (LP: #1308415)

Colin Ian King colin.king at canonical.com
Wed Apr 16 09:25:04 UTC 2014


On 16/04/14 10:17, Ivan Hu wrote:
> Partition Signature defined byte length is 16 on UEFI spec., but the partition_signature array is defined only 8 bytes on fwts_uefi.h.
> And the uefidump tool of fwts only dump 8 bytes Hard Drive Partition signature information. This patch fixed to dump the 16 bytes signature.
> 
> This patch also fixed the missing __attribute__((packed)) for the wts_uefi_fibre_channel_dev_path structure.
> 
> Signed-off-by: Ivan Hu <ivan.hu at canonical.com>
> ---
>  src/lib/include/fwts_uefi.h  |    4 ++--
>  src/uefi/uefidump/uefidump.c |    5 +++++
>  2 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/src/lib/include/fwts_uefi.h b/src/lib/include/fwts_uefi.h
> index ebb5bad..da4556e 100644
> --- a/src/lib/include/fwts_uefi.h
> +++ b/src/lib/include/fwts_uefi.h
> @@ -319,7 +319,7 @@ typedef struct {
>  	uint32_t reserved;
>  	uint64_t wwn;
>  	uint64_t lun;
> -} fwts_uefi_fibre_channel_dev_path;
> +} __attribute__((packed)) fwts_uefi_fibre_channel_dev_path;
>  
>  typedef struct {
>  	fwts_uefi_dev_path dev_path;
> @@ -468,7 +468,7 @@ typedef struct {
>  	uint32_t partition_number;
>  	uint64_t partition_start;
>  	uint64_t partition_size;
> -	uint8_t partition_signature[8];
> +	uint8_t partition_signature[16];
>  	uint8_t mbr_type;
>  	uint8_t signature_type;
>  } __attribute__((packed)) fwts_uefi_hard_drive_dev_path;
> diff --git a/src/uefi/uefidump/uefidump.c b/src/uefi/uefidump/uefidump.c
> index 50d47e1..e17731f 100644
> --- a/src/uefi/uefidump/uefidump.c
> +++ b/src/uefi/uefidump/uefidump.c
> @@ -464,6 +464,7 @@ static char *uefidump_build_dev_path(char *path, fwts_uefi_dev_path *dev_path, c
>  				fwts_uefi_hard_drive_dev_path *h = (fwts_uefi_hard_drive_dev_path*)dev_path;
>  				path = uefidump_vprintf(path, "\\HARDDRIVE("
>  				"%" PRIu32 ",%" PRIx64 ",%" PRIx64 ","
> +				"%02" PRIx8 "%02" PRIx8 "%02" PRIx8 "%02" PRIx8 "%02" PRIx8 "%02" PRIx8 "%02" PRIx8 "%02" PRIx8
>  				"%02" PRIx8 "%02" PRIx8 "%02" PRIx8 "%02" PRIx8 "%02" PRIx8 "%02" PRIx8 "%02" PRIx8 "%02" PRIx8 ","
>  				"%" PRIx8 ",%" PRIx8 ")",
>  				h->partition_number,
> @@ -473,6 +474,10 @@ static char *uefidump_build_dev_path(char *path, fwts_uefi_dev_path *dev_path, c
>  				h->partition_signature[2], h->partition_signature[3],
>  				h->partition_signature[4], h->partition_signature[5],
>  				h->partition_signature[6], h->partition_signature[7],
> +				h->partition_signature[8], h->partition_signature[9],
> +				h->partition_signature[10], h->partition_signature[11],
> +				h->partition_signature[12], h->partition_signature[13],
> +				h->partition_signature[14], h->partition_signature[15],
>  				h->mbr_type, h->signature_type);
>  			}
>  			break;
> 

Thanks Ivan for spotting that.

Acked-by: Colin Ian King <colin.king at canonical.com>



More information about the fwts-devel mailing list