From: gdong1 Date: Fri, 1 Jun 2012 08:06:37 +0000 (+0000) Subject: Enhance GPT measurement to be able to handle different partition entry size. X-Git-Tag: edk2-stable201903~13349 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=2ea3b92055d0793a573b836a28c7044722951f5a;ds=sidebyside Enhance GPT measurement to be able to handle different partition entry size. Signed-off-by: Dong Guo Reviewed-by: Ye Ting Reviewed-by: Yao Jiewen git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13422 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/SecurityPkg/Library/DxeTpmMeasureBootLib/DxeTpmMeasureBootLib.c b/SecurityPkg/Library/DxeTpmMeasureBootLib/DxeTpmMeasureBootLib.c index 8179422e44..803c7876a5 100644 --- a/SecurityPkg/Library/DxeTpmMeasureBootLib/DxeTpmMeasureBootLib.c +++ b/SecurityPkg/Library/DxeTpmMeasureBootLib/DxeTpmMeasureBootLib.c @@ -177,15 +177,15 @@ TcgMeasureGptTable ( if (!CompareGuid (&PartitionEntry->PartitionTypeGUID, &mZeroGuid)) { NumberOfPartition++; } - PartitionEntry++; + PartitionEntry = (EFI_PARTITION_ENTRY *)((UINT8 *)PartitionEntry + PrimaryHeader->SizeOfPartitionEntry); } // - // Parepare Data for Measurement + // Prepare Data for Measurement // EventSize = (UINT32)(sizeof (EFI_GPT_DATA) - sizeof (GptData->Partitions) + NumberOfPartition * PrimaryHeader->SizeOfPartitionEntry); - TcgEvent = (TCG_PCR_EVENT *) AllocateZeroPool (EventSize + sizeof (TCG_PCR_EVENT)); + TcgEvent = (TCG_PCR_EVENT *) AllocateZeroPool (EventSize + sizeof (TCG_PCR_EVENT_HDR)); if (TcgEvent == NULL) { FreePool (PrimaryHeader); FreePool (EntryPtr); @@ -210,13 +210,13 @@ TcgMeasureGptTable ( for (Index = 0; Index < PrimaryHeader->NumberOfPartitionEntries; Index++) { if (!CompareGuid (&PartitionEntry->PartitionTypeGUID, &mZeroGuid)) { CopyMem ( - (UINT8 *)&GptData->Partitions + NumberOfPartition * sizeof (EFI_PARTITION_ENTRY), + (UINT8 *)&GptData->Partitions + NumberOfPartition * PrimaryHeader->SizeOfPartitionEntry, (UINT8 *)PartitionEntry, - sizeof (EFI_PARTITION_ENTRY) + PrimaryHeader->SizeOfPartitionEntry ); NumberOfPartition++; } - PartitionEntry++; + PartitionEntry =(EFI_PARTITION_ENTRY *)((UINT8 *)PartitionEntry + PrimaryHeader->SizeOfPartitionEntry); } //