1This is the memory safety proof for FreeRTOS_OutputARPRequest. 2 3This proof is a work-in-progress. Proof assumptions are described in 4the harness. The proof also assumes the following functions are 5memory safe and have no side effects relevant to the memory safety of 6this function: 7 8* xNetworkInterfaceOutput 9 10This proof checks FreeRTOS_OutputARPRequest in multiple configuration: 11 12* The config_CBMC_PROOF_ASSUMPTION_HOLDS_no_packet_bytes proof 13 guarantees that for a buffer allocated to xDataLength, 14 the code executed by the FreeRTOS_OutputARPRequest function 15 call of FreeRTOS_ARP.c is memory safe. 16* If the ipconfigETHERNET_MINIMUM_PACKET_BYTES is set and the 17 buffer allocated by pxGetNetworkBufferWithDescriptor allocates 18 a buffer of at least ipconfigETHERNET_MINIMUM_PACKET_BYTES, 19 the config_CBMC_PROOF_ASSUMPTION_HOLDS_Packet_bytes proof 20 guarantees that the code executed by the 21 FreeRTOS_OutputARPRequest function call 22 of FreeRTOS_ARP.c is memory safe. 23* The third configuration in the subdirectory 24 config_CBMC_PROOF_ASSUMPTION_DOES_NOT_HOLD demonstrates 25 that the code is not memory safe, if the allocation 26 code violates our assumption. 27* All proofs mock the pxGetNetworkBufferWithDescriptor 28 function for modelling the assumptions about the 29 buffer management layer. 30