/** @file\r
Implement TPM2 help.\r
\r
-Copyright (c) 2013 - 2016, Intel Corporation. All rights reserved. <BR>\r
+Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved. <BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
UINT8 *Buffer;\r
\r
Buffer = (UINT8 *)AuthSessionOut;\r
- \r
+\r
//\r
// Add in Auth session\r
//\r
Buffer += sizeof(UINT16);\r
}\r
\r
- return (UINT32)(UINTN)(Buffer - (UINT8 *)AuthSessionOut);\r
+ return (UINT32)((UINTN)Buffer - (UINTN)AuthSessionOut);\r
}\r
\r
/**\r
@param [in] AuthSessionIn Input AuthSession data in TPM2 response buffer\r
@param [out] AuthSessionOut Output AuthSession data\r
\r
- @return AuthSession size\r
+ @return 0 copy failed\r
+ else AuthSession size\r
**/\r
UINT32\r
EFIAPI\r
// nonce\r
AuthSessionOut->nonce.size = SwapBytes16 (ReadUnaligned16 ((UINT16 *)Buffer));\r
Buffer += sizeof(UINT16);\r
+ if (AuthSessionOut->nonce.size > sizeof(TPMU_HA)) {\r
+ DEBUG ((DEBUG_ERROR, "CopyAuthSessionResponse - nonce.size error %x\n", AuthSessionOut->nonce.size));\r
+ return 0;\r
+ }\r
\r
CopyMem (AuthSessionOut->nonce.buffer, Buffer, AuthSessionOut->nonce.size);\r
Buffer += AuthSessionOut->nonce.size;\r
// hmac\r
AuthSessionOut->hmac.size = SwapBytes16 (ReadUnaligned16 ((UINT16 *)Buffer));\r
Buffer += sizeof(UINT16);\r
+ if (AuthSessionOut->hmac.size > sizeof(TPMU_HA)) {\r
+ DEBUG ((DEBUG_ERROR, "CopyAuthSessionResponse - hmac.size error %x\n", AuthSessionOut->hmac.size));\r
+ return 0;\r
+ }\r
\r
CopyMem (AuthSessionOut->hmac.buffer, Buffer, AuthSessionOut->hmac.size);\r
Buffer += AuthSessionOut->hmac.size;\r
\r
- return (UINT32)(UINTN)(Buffer - (UINT8 *)AuthSessionIn);\r
+ return (UINT32)((UINTN)Buffer - (UINTN)AuthSessionIn);\r
}\r
\r
/**\r
/**\r
Copy TPML_DIGEST_VALUES into a buffer\r
\r
- @param[in,out] Buffer Buffer to hold TPML_DIGEST_VALUES.\r
+ @param[in,out] Buffer Buffer to hold copied TPML_DIGEST_VALUES compact binary.\r
@param[in] DigestList TPML_DIGEST_VALUES to be copied.\r
@param[in] HashAlgorithmMask HASH bits corresponding to the desired digests to copy.\r
\r