FreeRTOS-Kernel/FreeRTOS-Plus/Test/CBMC/proofs/ARP/ARP_FreeRTOS_OutputARPRequest
markrtuttle cdf6d93cb9
Modify CBMC proofs to make assumptions about malloc explicit. (#312)
Some proofs assume that some pointers returned by malloc are not
NULL. This patch modifies those proofs to make these assumptions
explicit with `__CPROVER_assume(pointer != NULL)` for all such
pointers.

Co-authored-by: Mark R. Tuttle <mrtuttle@amazon.com>
Co-authored-by: Aniruddha Kanhere <60444055+AniruddhaKanhere@users.noreply.github.com>
2020-10-02 18:18:16 -04:00
..
Configurations.json Move CBMC proofs to FreeRTOS+ directory (#64) 2020-05-05 09:57:18 -07:00
OutputARPRequest_harness.c Modify CBMC proofs to make assumptions about malloc explicit. (#312) 2020-10-02 18:18:16 -04:00
README.md Move CBMC proofs to FreeRTOS+ directory (#64) 2020-05-05 09:57:18 -07:00

This is the memory safety proof for FreeRTOS_OutputARPRequest.

This proof is a work-in-progress. Proof assumptions are described in the harness. The proof also assumes the following functions are memory safe and have no side effects relevant to the memory safety of this function:

  • xNetworkInterfaceOutput

This proof checks FreeRTOS_OutputARPRequest in multiple configuration:

  • The config_CBMC_PROOF_ASSUMPTION_HOLDS_no_packet_bytes proof guarantees that for a buffer allocated to xDataLength, the code executed by the FreeRTOS_OutputARPRequest function call of FreeRTOS_ARP.c is memory safe.
  • If the ipconfigETHERNET_MINIMUM_PACKET_BYTES is set and the buffer allocated by pxGetNetworkBufferWithDescriptor allocates a buffer of at least ipconfigETHERNET_MINIMUM_PACKET_BYTES, the config_CBMC_PROOF_ASSUMPTION_HOLDS_Packet_bytes proof guarantees that the code executed by the FreeRTOS_OutputARPRequest function call of FreeRTOS_ARP.c is memory safe.
  • The third configuration in the subdirectory config_CBMC_PROOF_ASSUMPTION_DOES_NOT_HOLD demonstrates that the code is not memory safe, if the allocation code violates our assumption.
  • All proofs mock the pxGetNetworkBufferWithDescriptor function for modelling the assumptions about the buffer management layer.