diff options
author | Zhang, Chao B <chao.b.zhang@intel.com> | 2016-08-31 09:26:08 +0800 |
---|---|---|
committer | Zhang, Chao B <chao.b.zhang@intel.com> | 2016-09-01 14:50:44 +0800 |
commit | 950a3bc788b5b101729b26aed3ff75fd2a64a570 (patch) | |
tree | e35958416445e9313320c80f12fcf88826c05f7f /SecurityPkg/Library | |
parent | 6c59c7c2f488d7c9b951b5ead780f6102dafae8a (diff) | |
download | edk2-950a3bc788b5b101729b26aed3ff75fd2a64a570.tar.gz edk2-950a3bc788b5b101729b26aed3ff75fd2a64a570.tar.bz2 edk2-950a3bc788b5b101729b26aed3ff75fd2a64a570.zip |
SecurityPkg: TPM12CommandLib: Add Response returnCode Check
Check response return code before return from Tpm12Extend and
Tpm12PhysicalPresence.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chao Zhang <chao.b.zhang@intel.com>
Reviewed-by: Yao Jiewen <jiewen.yao@intel.com>
Reviewed-by: Long Qin <qin.long@intel.com>
Diffstat (limited to 'SecurityPkg/Library')
-rw-r--r-- | SecurityPkg/Library/Tpm12CommandLib/Tpm12Pcr.c | 5 | ||||
-rw-r--r-- | SecurityPkg/Library/Tpm12CommandLib/Tpm12PhysicalPresence.c | 14 |
2 files changed, 18 insertions, 1 deletions
diff --git a/SecurityPkg/Library/Tpm12CommandLib/Tpm12Pcr.c b/SecurityPkg/Library/Tpm12CommandLib/Tpm12Pcr.c index 321653fb60..18d5b96e6f 100644 --- a/SecurityPkg/Library/Tpm12CommandLib/Tpm12Pcr.c +++ b/SecurityPkg/Library/Tpm12CommandLib/Tpm12Pcr.c @@ -74,6 +74,11 @@ Tpm12Extend ( return Status;
}
+ if (SwapBytes32(Response.Hdr.returnCode) != TPM_SUCCESS) {
+ DEBUG ((EFI_D_ERROR, "Tpm12Extend: Response Code error! 0x%08x\r\n", SwapBytes32(Response.Hdr.returnCode)));
+ return EFI_DEVICE_ERROR;
+ }
+
if (NewPcrValue != NULL) {
CopyMem (NewPcrValue, &Response.TpmDigest, sizeof (*NewPcrValue));
}
diff --git a/SecurityPkg/Library/Tpm12CommandLib/Tpm12PhysicalPresence.c b/SecurityPkg/Library/Tpm12CommandLib/Tpm12PhysicalPresence.c index a730334c3f..d8d1998d4b 100644 --- a/SecurityPkg/Library/Tpm12CommandLib/Tpm12PhysicalPresence.c +++ b/SecurityPkg/Library/Tpm12CommandLib/Tpm12PhysicalPresence.c @@ -44,6 +44,7 @@ Tpm12PhysicalPresence ( IN TPM_PHYSICAL_PRESENCE PhysicalPresence
)
{
+ EFI_STATUS Status;
TPM_CMD_PHYSICAL_PRESENCE Command;
TPM_RSP_COMMAND_HDR Response;
UINT32 Length;
@@ -56,5 +57,16 @@ Tpm12PhysicalPresence ( Command.Hdr.ordinal = SwapBytes32 (TSC_ORD_PhysicalPresence);
Command.PhysicalPresence = SwapBytes16 (PhysicalPresence);
Length = sizeof (Response);
- return Tpm12SubmitCommand (sizeof (Command), (UINT8 *)&Command, &Length, (UINT8 *)&Response);
+
+ Status = Tpm12SubmitCommand (sizeof (Command), (UINT8 *)&Command, &Length, (UINT8 *)&Response);
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ if (SwapBytes32(Response.returnCode) != TPM_SUCCESS) {
+ DEBUG ((EFI_D_ERROR, "Tpm12PhysicalPresence: Response Code error! 0x%08x\r\n", SwapBytes32(Response.returnCode)));
+ return EFI_DEVICE_ERROR;
+ }
+
+ return EFI_SUCCESS;
}
|