serialbridge: Fix checksum data byte escaping
Checksum in response packet should check for data byte escaping.
Tested with ipmitool.
Change-Id: I6b0fbb635480adfb87d8cbef6feca8bed6213f34
Signed-off-by: John Chung <john.chung@arm.com>
diff --git a/transport/serialbridge/serialcmd.cpp b/transport/serialbridge/serialcmd.cpp
index 696515a..68622d8 100644
--- a/transport/serialbridge/serialcmd.cpp
+++ b/transport/serialbridge/serialcmd.cpp
@@ -188,13 +188,15 @@
// Assemble connection header and checksum
checksum = processEscapedCharacter(responseBuffer, connectionHeader);
- responseBuffer.push_back(-checksum); // checksum1
+ checksum = static_cast<uint8_t>(~checksum + 1); // checksum1
+ processEscapedCharacter(responseBuffer, std::vector<uint8_t>{checksum});
// Assemble response message and checksum
checksum = processEscapedCharacter(responseBuffer, messageHeader);
checksum +=
processEscapedCharacter(responseBuffer, std::vector<uint8_t>(data));
- responseBuffer.push_back(-checksum); // checksum2
+ checksum = static_cast<uint8_t>(~checksum + 1); // checksum2
+ processEscapedCharacter(responseBuffer, std::vector<uint8_t>{checksum});
// bmStop
responseBuffer.push_back(bmStop);