rt-link: reject frame offset at frame limit

The receive sequence filter maps incoming data-frame sequence numbers to zero-based frame offsets. RT_LINK_FRAMES_MAX is the maximum number of split frames, so valid offsets are 0 through RT_LINK_FRAMES_MAX - 1.

Reject offset == RT_LINK_FRAMES_MAX before frame handling instead of letting it reach long-frame assembly.

Generated-by: OpenAI Codex
Signed-off-by: Old-Ding <35417409+Old-Ding@users.noreply.github.com>
This commit is contained in:
Old-Ding
2026-07-07 19:55:21 +08:00
committed by Bernard Xiong
parent ee43eeb685
commit 50c6853d38
+1 -1
View File
@@ -767,7 +767,7 @@ static void rt_link_frame_check(void)
{
/* Check the receive sequence */
offset = rt_link_check_seq(receive_frame.head.sequence, rt_link_scb->rx_record.rx_seq) - 1;
if (offset > RT_LINK_FRAMES_MAX)
if (offset >= RT_LINK_FRAMES_MAX)
{
/* exceptional frame, ignore it */
LOG_D("seq (%d) failed, rx_seq (%d) offset=(%d) attr= (%d) status (%d)", receive_frame.head.sequence, rt_link_scb->rx_record.rx_seq, offset, receive_frame.attribute, rt_link_scb->state);