moved a size check

This commit is contained in:
Robin Müller 2022-08-20 01:45:49 +02:00
parent 70d9f00372
commit 2e2afcd6c5
No known key found for this signature in database
GPG Key ID: 11D4952C8CCEF814

View File

@ -1121,19 +1121,8 @@ class WriteMemory : public ploc::SpTcBase {
uint8_t* updateData) { uint8_t* updateData) {
size_t serializedSize = 0; size_t serializedSize = 0;
uint8_t* data = payloadStart; uint8_t* data = payloadStart;
SerializeAdapter::serialize(&memoryId, &data, &serializedSize, sizeof(memoryId),
SerializeIF::Endianness::BIG);
SerializeAdapter::serialize(&n, &data, &serializedSize, sizeof(n),
SerializeIF::Endianness::BIG);
SerializeAdapter::serialize(&startAddr, &data, &serializedSize, sizeof(startAddr),
SerializeIF::Endianness::BIG);
SerializeAdapter::serialize(&updateDataLen, &data, &serializedSize, sizeof(updateDataLen),
SerializeIF::Endianness::BIG);
if (updateDataLen % 2 != 0) { if (updateDataLen % 2 != 0) {
spParams.setPayloadLen(META_DATA_LENGTH + updateDataLen + 1); spParams.setPayloadLen(META_DATA_LENGTH + updateDataLen + 1);
// The data field must be two bytes aligned. Thus, in case the number of bytes to write is odd
// a value of zero is added here
*(data + updateDataLen + 1) = 0;
} else { } else {
spParams.setPayloadLen(META_DATA_LENGTH + updateDataLen); spParams.setPayloadLen(META_DATA_LENGTH + updateDataLen);
} }
@ -1142,7 +1131,20 @@ class WriteMemory : public ploc::SpTcBase {
if (result != HasReturnvaluesIF::RETURN_OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
return result; return result;
} }
SerializeAdapter::serialize(&memoryId, &data, &serializedSize, sizeof(memoryId),
SerializeIF::Endianness::BIG);
SerializeAdapter::serialize(&n, &data, &serializedSize, sizeof(n),
SerializeIF::Endianness::BIG);
SerializeAdapter::serialize(&startAddr, &data, &serializedSize, sizeof(startAddr),
SerializeIF::Endianness::BIG);
SerializeAdapter::serialize(&updateDataLen, &data, &serializedSize, sizeof(updateDataLen),
SerializeIF::Endianness::BIG);
std::memcpy(data, updateData, updateDataLen); std::memcpy(data, updateData, updateDataLen);
if (updateDataLen % 2 != 0) {
// The data field must be two bytes aligned. Thus, in case the number of bytes to write is odd
// a value of zero is added here
data[updateDataLen + 1] = 0;
}
return HasReturnvaluesIF::RETURN_OK; return HasReturnvaluesIF::RETURN_OK;
} }
}; };