Every PLDM response contains 1 byte Completion code which is needed
to be checked against SUCCESS value which means that the PLDM command
was accepted and completed normally.
If it is not equal to that value it is necessary to return error status
so the caller would know that Response buffer is invalid.

Signed-off-by: Konstantin Aladyshev <aladyshe...@gmail.com>
---
 .../Universal/PldmProtocol/Common/PldmProtocolCommon.c         | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git 
a/Features/ManageabilityPkg/Universal/PldmProtocol/Common/PldmProtocolCommon.c 
b/Features/ManageabilityPkg/Universal/PldmProtocol/Common/PldmProtocolCommon.c
index 04f250e57c..2f2f76603e 100644
--- 
a/Features/ManageabilityPkg/Universal/PldmProtocol/Common/PldmProtocolCommon.c
+++ 
b/Features/ManageabilityPkg/Universal/PldmProtocol/Common/PldmProtocolCommon.c
@@ -293,7 +293,8 @@ CommonPldmSubmitCommand (
       (ResponseHeader->PldmHeader.RequestBit != 
PLDM_MESSAGE_HEADER_IS_RESPONSE) ||
       (ResponseHeader->PldmHeader.InstanceId != mPldmRequestInstanceId) ||
       (ResponseHeader->PldmHeader.PldmType != PldmType) ||
-      (ResponseHeader->PldmHeader.PldmTypeCommandCode != PldmCommand))
+      (ResponseHeader->PldmHeader.PldmTypeCommandCode != PldmCommand) ||
+      (ResponseHeader->PldmCompletionCode != PLDM_COMPLETION_CODE_SUCCESS))
   {
     DEBUG ((DEBUG_ERROR, "PLDM integrity check of response data is 
failed.\n"));
     DEBUG ((DEBUG_ERROR, "    Datagram     = %d (Expected value: %d)\n", 
ResponseHeader->PldmHeader.DatagramBit, (!PLDM_MESSAGE_HEADER_IS_DATAGRAM)));
-- 
2.34.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#109924): https://edk2.groups.io/g/devel/message/109924
Mute This Topic: https://groups.io/mt/102134666/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to