From da6dd5a2273609dc9b275c1a0c1cc402b624101f Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Fri, 3 Jul 2015 06:16:50 +0300 Subject: [PATCH] TransferReceiver: Checking for unexpected start of transfer --- libuavcan/src/transport/uc_transfer_receiver.cpp | 5 +++++ 1 file changed, 5 insertions(+) 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",