]> git.proxmox.com Git - mirror_edk2.git/commitdiff
SecurityPkg Tcg2Dxe: Get correct digest list size
authorStar Zeng <star.zeng@intel.com>
Wed, 16 Nov 2016 09:17:36 +0000 (17:17 +0800)
committerStar Zeng <star.zeng@intel.com>
Mon, 21 Nov 2016 02:38:33 +0000 (10:38 +0800)
Current code uses GetDigestListSize(DigestList) to get
digest list size, that is incorrect.
The code should get digest list size of digests copied
into event2 log, those digests are compacted, so
GetDigestListBinSize() should be used.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Chao Zhang <chao.b.zhang@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
SecurityPkg/Tcg/Tcg2Dxe/Tcg2Dxe.c

index 3d79a07d126292461a82e9777f23255c4d1d6d4a..6241c5208b484c441ac0a2c602455246077b2a01 100644 (file)
@@ -974,6 +974,7 @@ TcgDxeLogHashEvent (
   EFI_STATUS                        RetStatus;\r
   TCG_PCR_EVENT2                    TcgPcrEvent2;\r
   UINT8                             *DigestBuffer;\r
+  UINT32                            *EventSizePtr;\r
 \r
   DEBUG ((EFI_D_INFO, "SupportedEventLogs - 0x%08x\n", mTcgDxeData.BsCap.SupportedEventLogs));\r
 \r
@@ -1010,9 +1011,8 @@ TcgDxeLogHashEvent (
         TcgPcrEvent2.PCRIndex = NewEventHdr->PCRIndex;\r
         TcgPcrEvent2.EventType = NewEventHdr->EventType;\r
         DigestBuffer = (UINT8 *)&TcgPcrEvent2.Digest;\r
-        DigestBuffer = CopyDigestListToBuffer (DigestBuffer, DigestList, mTcgDxeData.BsCap.ActivePcrBanks);\r
-        CopyMem (DigestBuffer, &NewEventHdr->EventSize, sizeof(NewEventHdr->EventSize));\r
-        DigestBuffer = DigestBuffer + sizeof(NewEventHdr->EventSize);\r
+        EventSizePtr = CopyDigestListToBuffer (DigestBuffer, DigestList, mTcgDxeData.BsCap.ActivePcrBanks);\r
+        CopyMem (EventSizePtr, &NewEventHdr->EventSize, sizeof(NewEventHdr->EventSize));\r
 \r
         //\r
         // Enter critical region\r
@@ -1021,7 +1021,7 @@ TcgDxeLogHashEvent (
         Status = TcgDxeLogEvent (\r
                    mTcg2EventInfo[Index].LogFormat,\r
                    &TcgPcrEvent2,\r
-                   sizeof(TcgPcrEvent2.PCRIndex) + sizeof(TcgPcrEvent2.EventType) + GetDigestListSize (DigestList) + sizeof(TcgPcrEvent2.EventSize),\r
+                   sizeof(TcgPcrEvent2.PCRIndex) + sizeof(TcgPcrEvent2.EventType) + GetDigestListBinSize (DigestBuffer) + sizeof(TcgPcrEvent2.EventSize),\r
                    NewEventData,\r
                    NewEventHdr->EventSize\r
                    );\r