bugfix: skip 0'd crc bytes on reply computation
Skip the 0'd CRC bytes on reply computation, mirroring the skipping
during request validation.
Tested: Verified via client the CRC for the reply now matches
expectations.
Change-Id: I18da28604a388fb4210c55f3e54410a067b9f10a
Signed-off-by: Patrick Venture <venture@google.com>
diff --git a/process.cpp b/process.cpp
index 7e6410d..683bf77 100644
--- a/process.cpp
+++ b/process.cpp
@@ -136,9 +136,8 @@
/* The command, whatever it was, replied, so let's set the CRC. */
crc->clear();
- replyCmdBuf[0] = 0x00;
- replyCmdBuf[1] = 0x00;
- crc->compute(replyCmdBuf, replyLength);
+ crc->compute(replyCmdBuf + sizeof(uint16_t),
+ replyLength - sizeof(uint16_t));
/* Copy the CRC into place. */
uint16_t crcValue = crc->get();
diff --git a/test/process_unittest.cpp b/test/process_unittest.cpp
index 4f8c9a6..a908ee6 100644
--- a/test/process_unittest.cpp
+++ b/test/process_unittest.cpp
@@ -294,7 +294,7 @@
dataLen = sizeof(request);
EXPECT_CALL(crc, clear());
- EXPECT_CALL(crc, compute(_, payloadLen));
+ EXPECT_CALL(crc, compute(_, payloadLen - sizeof(uint16_t)));
EXPECT_CALL(crc, get()).WillOnce(Return(0x3412));
EXPECT_EQ(IPMI_CC_OK,