Skip to content

Commit 5341b9b

Browse files
committed
Fix CBMC proof for xCheckRequiresARPResolution
1 parent 6ae79f1 commit 5341b9b

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

test/cbmc/proofs/ARP/xCheckRequiresARPResolution/xCheckRequiresARPResolution_harness.c

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -90,18 +90,12 @@ void harness()
9090
NetworkBufferDescriptor_t * pxNetworkBuffer;
9191
IPPacket_t * pxIPPacket;
9292

93-
/* IPv4/IPv6 header size are different. To make sure buffer size is enough,
94-
* determine the test case is for IPv4 or IPv6 at the beginning. */
95-
xIsIPv6 = nondet_bool();
93+
const IPPacket_t * pxIPPacket;
94+
const IPHeader_t * pxIPHeader;
9695

97-
if( xIsIPv6 )
98-
{
99-
__CPROVER_assume( ( xBufferLength >= sizeof( IPPacket_IPv6_t ) ) && ( xBufferLength < ipconfigNETWORK_MTU ) );
100-
}
101-
else
102-
{
103-
__CPROVER_assume( ( xBufferLength >= sizeof( IPPacket_t ) ) && ( xBufferLength < ipconfigNETWORK_MTU ) );
104-
}
96+
/* Make sure buffer size is enough, xCheckRequiresARPResolution is only called for
97+
IPv4 packets hence the minimum size should be sizeof( IPPacket_t ) */
98+
__CPROVER_assume( ( xBufferLength >= sizeof( IPPacket_t ) ) && ( xBufferLength < ipconfigNETWORK_MTU ) );
10599

106100
pxNetworkBuffer = ( NetworkBufferDescriptor_t * ) safeMalloc( sizeof( NetworkBufferDescriptor_t ) );
107101
__CPROVER_assume( pxNetworkBuffer != NULL );
@@ -111,6 +105,13 @@ void harness()
111105
pxNetworkBuffer->pucEthernetBuffer = safeMalloc( xBufferLength );
112106
__CPROVER_assume( pxNetworkBuffer->pucEthernetBuffer != NULL );
113107

108+
/* Its asserted in the code that xCheckRequiresARPResolution is only called on IPv4 frame types */
109+
/* See assertion: configASSERT( ( pxIPPacket->xEthernetHeader.usFrameType == ipIPv4_FRAME_TYPE ) || ( pxIPPacket->xEthernetHeader.usFrameType == ipARP_FRAME_TYPE ) );
110+
in xCheckRequiresARPResolution() */
111+
pxIPPacket = ( ( const IPPacket_t * ) pxNetworkBuffer->pucEthernetBuffer );
112+
pxIPHeader = &( pxIPPacket->xIPHeader );
113+
__CPROVER_assume(pxIPPacket->xEthernetHeader.usFrameType == ipIPv4_FRAME_TYPE);
114+
114115
pxNetworkBuffer->pxEndPoint = ( NetworkEndPoint_t * ) safeMalloc( sizeof( NetworkEndPoint_t ) );
115116
__CPROVER_assume( pxNetworkBuffer->pxEndPoint != NULL );
116117

0 commit comments

Comments
 (0)