Skip to content

nRF connect crashes when device reports 0 bytes for DFU partition #434

Open
@plaes

Description

@plaes

When firmware accidentally reports 0 bytes available for DFU partition, then nRF connect seems to be simply crashing.

This happens with nRF connect 4.28 and (2.26 as well).

I'm developing a custom Rust-based firmware which is using DFU over BLE.
When testing with nRF connect, and attempting to push out application.zip, it crashed after the download and validation for the .dat file was complete and nRF-Connect requested to start pushing the actual firmware payload.

Log file from firmware side starts just after *.dat file has been uploaded and its CRC is going to be calculated:

19.497955: TRACE DFU REQUEST Crc
19.497985: TRACE DFU RESPONSE DfuResponse { request: Crc, result: Success, body: Some(Crc { offset: 79, crc: 611744236 }) }
19.632843: TRACE ble evt 87
19.632934: TRACE ble evt 80
19.632965: TRACE gatts write handle=16 data=[4]
19.633026: TRACE DFU REQUEST Execute
19.633087: TRACE DFU RESPONSE DfuResponse { request: Execute, result: Success, body: None }
19.767852: TRACE ble evt 87
19.767913: TRACE ble evt 80
19.767974: TRACE gatts write handle=16 data=[2, 10, 0]
19.768035: TRACE DFU REQUEST SetReceiptNotification { target: 10 }
19.768096: TRACE DFU RESPONSE DfuResponse { request: SetReceiptNotification { target: 10 }, result: Success, body: None }
19.902832: TRACE ble evt 87
19.902893: TRACE ble evt 80
19.902923: TRACE gatts write handle=16 data=[6, 2]
19.903015: TRACE DFU REQUEST Select { obj_type: Data }
19.903106: TRACE DFU RESPONSE DfuResponse { request: Select { obj_type: Data }, result: Success, body: Some(Select { offset: 0, crc: 0, max_size: 0 }) }
18.723419: TRACE ble evt 87
19.803649: TRACE ble evt 17
19.803680: TRACE on_disconnected conn_handle=3
19.803741: TRACE conn 0: disconnected
19.803771: INFO  GATT server disconnected: DisconnectedError

And at this point, nRF connect seems to be crashing due unexpected response where max_size = 0.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions