SecurityPkg TPM2: Assign real copied count in CopyDigestListToBuffer()

In CopyDigestListToBuffer() of Tpm2CommandLib, the count in returned
Buffer should be real copied DigestList count.

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>
diff --git a/SecurityPkg/Library/Tpm2CommandLib/Tpm2Help.c b/SecurityPkg/Library/Tpm2CommandLib/Tpm2Help.c
index 43574a2..be95fd6 100644
--- a/SecurityPkg/Library/Tpm2CommandLib/Tpm2Help.c
+++ b/SecurityPkg/Library/Tpm2CommandLib/Tpm2Help.c
@@ -230,8 +230,11 @@
 {

   UINTN  Index;

   UINT16 DigestSize;

+  UINT32 DigestListCount;

+  UINT32 *DigestListCountPtr;

 

-  CopyMem (Buffer, &DigestList->count, sizeof(DigestList->count));

+  DigestListCountPtr = (UINT32 *) Buffer;

+  DigestListCount = 0;

   Buffer = (UINT8 *)Buffer + sizeof(DigestList->count);

   for (Index = 0; Index < DigestList->count; Index++) {

     if (!IsHashAlgSupportedInHashAlgorithmMask(DigestList->digests[Index].hashAlg, HashAlgorithmMask)) {

@@ -243,7 +246,9 @@
     DigestSize = GetHashSizeFromAlgo (DigestList->digests[Index].hashAlg);

     CopyMem (Buffer, &DigestList->digests[Index].digest, DigestSize);

     Buffer = (UINT8 *)Buffer + DigestSize;

+    DigestListCount++;

   }

+  WriteUnaligned32 (DigestListCountPtr, DigestListCount);

 

   return Buffer;

 }