Avoid crashing if an incorrect parameter is passed to BufferFiller

This commit is contained in:
2024-04-20 11:31:45 +10:00
parent 195bcb7726
commit 9417db243f

View File

@@ -75,6 +75,9 @@ bool BufferFiller::fill(uint8_t *buffer, const Packet* packet) {
buffer[dataOffset + 2] = 0x00; buffer[dataOffset + 2] = 0x00;
break; break;
case PacketType::FIELDS: { case PacketType::FIELDS: {
if (!std::holds_alternative<FieldsParameters>(packet->parameters)) {
return false;
}
FieldsParameters parameters = std::get<FieldsParameters>(packet->parameters); FieldsParameters parameters = std::get<FieldsParameters>(packet->parameters);
// 0x10 is the number of bytes without any fields // 0x10 is the number of bytes without any fields
setPacketSize(buffer, 0x10 + calculateTotalFieldSize(parameters)); setPacketSize(buffer, 0x10 + calculateTotalFieldSize(parameters));
@@ -84,6 +87,9 @@ bool BufferFiller::fill(uint8_t *buffer, const Packet* packet) {
break; break;
} }
case PacketType::FIELD_COMMAND: { case PacketType::FIELD_COMMAND: {
if (!std::holds_alternative<FieldsParameters>(packet->parameters)) {
return false;
}
FieldsParameters parameters = std::get<FieldsParameters>(packet->parameters); FieldsParameters parameters = std::get<FieldsParameters>(packet->parameters);
// 0x10 is the number of bytes without any fields // 0x10 is the number of bytes without any fields
setPacketSize(buffer, 0x10 + calculateTotalFieldSize(parameters)); setPacketSize(buffer, 0x10 + calculateTotalFieldSize(parameters));