dronecan / libcanard

MIT License
50 stars 55 forks source link

Multiframe transfer assert expression correction #48

Closed bradAPD closed 1 year ago

bradAPD commented 1 year ago

This pull request modifies an assert check targeting an underflow condition in multi-frame transfer receive processing. The assert aims to detect accidental underflow in a memory offset computation. The assert expression mistakenly invalidates a case where the final CAN frame of a transfer is received with all previously allocated memory blocks fully utilised. This condition requires the base address of the frame data buffer to be assigned to the rx_transfer.payload_tail field.

The assert case is triggerable by performing a multi-transfer file read operation using the DroneCAN GUI tool, such as during a firmware update process. The CAN bus is configured in non-CAN-FD mode, with the default memory allocator block size of 32 bytes.

tridge commented 1 year ago

this change looks correct, but I'd like @bugobliterator to comment