SecurityPkg : Tpm12DeviceLibDTpm: Fix TPM12 wrong Response Tag check

TcgDxePassThroughToTpm should be able to handle all TPM12 Command & Response correctly.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chao Zhang <chao.b.zhang@intel.com>
Reviewed-by: Long Qin <qin.long@intel.com>
This commit is contained in:
Zhang, Chao B 2016-06-07 10:15:07 +08:00
parent eecad34987
commit ee46ac08fc
1 changed files with 5 additions and 3 deletions

View File

@ -267,6 +267,7 @@ Tpm12TisTpmCommand (
UINT32 TpmOutSize; UINT32 TpmOutSize;
UINT16 Data16; UINT16 Data16;
UINT32 Data32; UINT32 Data32;
UINT16 RspTag;
DEBUG_CODE ( DEBUG_CODE (
UINTN DebugSize; UINTN DebugSize;
@ -364,11 +365,12 @@ Tpm12TisTpmCommand (
DEBUG ((EFI_D_VERBOSE, "\n")); DEBUG ((EFI_D_VERBOSE, "\n"));
); );
// //
// Check the reponse data header (tag,parasize and returncode ) // Check the response data header (tag, parasize and returncode)
// //
CopyMem (&Data16, BufferOut, sizeof (UINT16)); CopyMem (&Data16, BufferOut, sizeof (UINT16));
if (SwapBytes16 (Data16) != TPM_TAG_RSP_COMMAND) { RspTag = SwapBytes16 (Data16);
DEBUG ((EFI_D_ERROR, "TPM12: TPM_ST_RSP error - %x\n", TPM_TAG_RSP_COMMAND)); if (RspTag != TPM_TAG_RSP_COMMAND && RspTag != TPM_TAG_RSP_AUTH1_COMMAND && RspTag != TPM_TAG_RSP_AUTH2_COMMAND) {
DEBUG ((EFI_D_ERROR, "TPM12: Response tag error - current tag value is %x\n", RspTag));
Status = EFI_UNSUPPORTED; Status = EFI_UNSUPPORTED;
goto Exit; goto Exit;
} }