@@ -1067,7 +1067,7 @@ static byte_t rx_parse(const uint32_t can_id,
10671067 frame_t * const out_v0 ,
10681068 frame_t * const out_v1 )
10691069{
1070- CANARD_ASSERT (can_id < ( UINT32_C ( 1 ) << 29U ) );
1070+ CANARD_ASSERT (can_id <= CAN_EXT_ID_MASK );
10711071 CANARD_ASSERT (out_v0 != NULL );
10721072 CANARD_ASSERT (out_v1 != NULL );
10731073 memset (out_v0 , 0 , sizeof (* out_v0 ));
@@ -1461,6 +1461,7 @@ static void rx_session_update(canard_subscription_t* const sub,
14611461 CANARD_ASSERT (frame -> end || (frame -> payload .size >= 7 ));
14621462 CANARD_ASSERT (!frame -> start || (frame -> toggle == canard_kind_version (sub -> kind )));
14631463 CANARD_ASSERT ((frame -> dst == CANARD_NODE_ID_ANONYMOUS ) || (frame -> dst == sub -> owner -> node_id ));
1464+ CANARD_ASSERT ((canard_kind_version (sub -> kind ) != 0 ) || (sub -> extent >= 2 )); // v0 CRC reservation
14641465
14651466 // Only start frames may create new states.
14661467 // The protocol version is observable on start frames by design, which makes this robust.
@@ -1688,7 +1689,7 @@ bool canard_ingest_frame(canard_t* const self,
16881689 const canard_bytes_t can_data )
16891690{
16901691 const bool ok = (self != NULL ) && (timestamp >= 0 ) && (iface_index < CANARD_IFACE_COUNT ) &&
1691- (extended_can_id < ( UINT32_C ( 1 ) << 29U ) ) && ((can_data .size == 0 ) || (can_data .data != NULL ));
1692+ (extended_can_id <= CAN_EXT_ID_MASK ) && ((can_data .size == 0 ) || (can_data .data != NULL ));
16921693 if (ok ) {
16931694 frame_t frs [2 ] = { { 0 }, { 0 } };
16941695 const byte_t parsed = rx_parse (extended_can_id , can_data , & frs [0 ], & frs [1 ]);
0 commit comments