diff --git a/libuavcan/src/transport/uc_transfer_receiver.cpp b/libuavcan/src/transport/uc_transfer_receiver.cpp index 0ce3999466..9fc9e9b4e0 100644 --- a/libuavcan/src/transport/uc_transfer_receiver.cpp +++ b/libuavcan/src/transport/uc_transfer_receiver.cpp @@ -75,6 +75,11 @@ bool TransferReceiver::validate(const RxFrame& frame) const registerError(); return false; } + if (frame.isStartOfTransfer() && (buffer_write_pos_ != 0)) + { + UAVCAN_TRACE("TransferReceiver", "Unexpected start of transfer, %s", frame.toString().c_str()); + registerError(); + } if (frame.getToggle() != next_toggle_) { UAVCAN_TRACE("TransferReceiver", "Unexpected toggle bit (not %i), %s",