]> git.proxmox.com Git - mirror_edk2.git/commitdiff
SecurityPkg: Correct data copy in Tpm2NvReadPublic.
authorYao, Jiewen <jiewen.yao@intel.com>
Wed, 27 Jan 2016 12:16:47 +0000 (12:16 +0000)
committerjyao1 <jyao1@Edk2>
Wed, 27 Jan 2016 12:16:47 +0000 (12:16 +0000)
1) NvPublic.dataSize data should be got from original
receive buffer, instead of returned NvPublic.

2) NvNameSize means the size of NvName without size field.
The original code treats it to be size of NvName with size
field, so the last 2 bytes are missing.

This patch fixed problem.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: "Yao, Jiewen" <jiewen.yao@intel.com>
Reviewed-by: "Zhang, Chao B" <chao.b.zhang@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19756 6f19259b-4bc3-4df7-8a09-765794883524

SecurityPkg/Library/Tpm2CommandLib/Tpm2NVStorage.c

index 5fe48e180463ae26a46ad3a46f7bfe384ab68025..950802213232c80cf6df5457754b40f4e62e898d 100644 (file)
@@ -250,11 +250,11 @@ Tpm2NvReadPublic (
   NvPublic->nvPublic.nameAlg = SwapBytes16 (NvPublic->nvPublic.nameAlg);\r
   WriteUnaligned32 ((UINT32 *)&NvPublic->nvPublic.attributes, SwapBytes32 (ReadUnaligned32 ((UINT32 *)&NvPublic->nvPublic.attributes)));\r
   NvPublic->nvPublic.authPolicy.size = SwapBytes16 (NvPublic->nvPublic.authPolicy.size);\r
-  Buffer = (UINT8 *)&NvPublic->nvPublic.authPolicy;\r
+  Buffer = (UINT8 *)&RecvBuffer.NvPublic.nvPublic.authPolicy;\r
   Buffer += sizeof(UINT16) + NvPublic->nvPublic.authPolicy.size;\r
   NvPublic->nvPublic.dataSize = SwapBytes16 (ReadUnaligned16 ((UINT16 *)Buffer));\r
 \r
-  CopyMem (NvName, (UINT8 *)&RecvBuffer + sizeof(TPM2_RESPONSE_HEADER) + sizeof(UINT16) + NvPublicSize, NvNameSize);\r
+  CopyMem (NvName->name, (UINT8 *)&RecvBuffer + sizeof(TPM2_RESPONSE_HEADER) + sizeof(UINT16) + NvPublicSize + sizeof(UINT16), NvNameSize);\r
   NvName->size = NvNameSize;\r
   \r
   return EFI_SUCCESS;\r