Re: [PATCH] SecurityPkg: TPM12CommandLib: Add Response returnCode Check


Yao, Jiewen
 

Reviewed-by: Jiewen.yao@...

-----Original Message-----
From: Zhang, Chao B
Sent: Wednesday, August 31, 2016 9:47 AM
To: edk2-devel@...
Cc: Long, Qin <qin.long@...>; Yao, Jiewen <jiewen.yao@...>;
Zhang, Chao B <chao.b.zhang@...>
Subject: [PATCH] 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@...>
---
SecurityPkg/Library/Tpm12CommandLib/Tpm12Pcr.c | 5
+++++
.../Library/Tpm12CommandLib/Tpm12PhysicalPresence.c | 14
+++++++++++++-
2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/SecurityPkg/Library/Tpm12CommandLib/Tpm12Pcr.c
b/SecurityPkg/Library/Tpm12CommandLib/Tpm12Pcr.c
index 321653f..18d5b96 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 a730334..d8d1998 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;
}
--
1.9.5.msysgit.1

Join devel@edk2.groups.io to automatically receive all group messages.