#include <security_utilities/crc.h>
#include <security_utilities/casts.h>
#include <unistd.h>
+#include <vector>
/*
Logically, these should go in /var/run/mds, but we know that /var/db/mds
// assemble the final message
ssize_t messageSize = kHeaderLength + messageLength;
- u_int8_t finalMessage[messageSize];
- SegmentOffsetType *fm = (SegmentOffsetType*) finalMessage;
+ std::vector<u_int8_t> finalMessage(messageSize);
+ SegmentOffsetType *fm = (SegmentOffsetType*) finalMessage.data();
fm[0] = OSSwapHostToBigInt32(domain);
fm[1] = OSSwapHostToBigInt32(event);
memcpy(&fm[2], message, messageLength);
- SegmentOffsetType crc = CalculateCRC(finalMessage, messageSize);
+ SegmentOffsetType crc = CalculateCRC(finalMessage.data(), messageSize);
// write the length
WriteOffset(int_cast<size_t, SegmentOffsetType>(messageSize));
WriteOffset(crc);
// write the data
- WriteData (finalMessage, int_cast<size_t, SegmentOffsetType>(messageSize));
+ WriteData (finalMessage.data(), int_cast<size_t, SegmentOffsetType>(messageSize));
// write the data count
SetProducerOffset(int_cast<size_t, SegmentOffsetType>(mDataPtr - mDataArea));