]> git.proxmox.com Git - mirror_edk2.git/blobdiff - SecurityPkg/Library/Tpm12CommandLib/Tpm12SelfTest.c
SecurityPkg/Tpm12CommandLib: Always check response returnCode
[mirror_edk2.git] / SecurityPkg / Library / Tpm12CommandLib / Tpm12SelfTest.c
index 8e232ee5b857b47c34d46ac50000b743d5673369..579fed722bc54057348eec9509238d8e70ca5fd9 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Implement TPM1.2 NV Self Test related commands.\r
 \r
-Copyright (c) 2016, Intel Corporation. All rights reserved. <BR>\r
+Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved. <BR>\r
 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
@@ -16,6 +16,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <PiPei.h>\r
 #include <Library/Tpm12CommandLib.h>\r
 #include <Library/BaseLib.h>\r
+#include <Library/DebugLib.h>\r
 #include <Library/Tpm12DeviceLib.h>\r
 \r
 /**\r
@@ -33,6 +34,7 @@ Tpm12ContinueSelfTest (
   VOID\r
   )\r
 {\r
+  EFI_STATUS           Status;\r
   TPM_RQU_COMMAND_HDR  Command;\r
   TPM_RSP_COMMAND_HDR  Response;\r
   UINT32               Length;\r
@@ -44,5 +46,15 @@ Tpm12ContinueSelfTest (
   Command.paramSize = SwapBytes32 (sizeof (Command));\r
   Command.ordinal   = SwapBytes32 (TPM_ORD_ContinueSelfTest);\r
   Length = sizeof (Response);\r
-  return Tpm12SubmitCommand (sizeof (Command), (UINT8 *)&Command, &Length, (UINT8 *)&Response);\r
+  Status = Tpm12SubmitCommand (sizeof (Command), (UINT8 *)&Command, &Length, (UINT8 *)&Response);\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
+\r
+  if (SwapBytes32 (Response.returnCode) != TPM_SUCCESS) {\r
+    DEBUG ((DEBUG_ERROR, "Tpm12ContinueSelfTest: Response Code error! 0x%08x\r\n", SwapBytes32 (Response.returnCode)));\r
+    return EFI_DEVICE_ERROR;\r
+  }\r
+\r
+  return Status;\r
 }\r