When more packets than expected are received, num_pkt
could index beyond the end of the array. Add a check to prevent
OOB access.
Continue receiving until the FIN is received to obtain
the total packet count. This helps diagnose issues by
distinguishing the cases where no coalescing happened from
the partial-coalescing cases that didn't meet the test check.
Fixes: 7d1575014a63 ("selftests/net: GRO coalesce test")
Signed-off-by: Narcisa Vasile <redacted>
---
tools/testing/selftests/net/lib/gro.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/lib/gro.c b/tools/testing/selftests/net/lib/gro.c
index 7a333155de1a..85ba69eeb6aa 100644
--- a/tools/testing/selftests/net/lib/gro.c
+++ b/tools/testing/selftests/net/lib/gro.c
@@ -1211,7 +1211,8 @@ static void check_recv_pkts(int fd, int *correct_payload,
- sizeof(struct tcphdr) - sizeof(struct iphdr);
}
vlog("%d ", data_len);
- if (data_len != correct_payload[num_pkt]) {
+ if (num_pkt < correct_num_pkts &&
+ data_len != correct_payload[num_pkt]) {
vlog("[!=%d]", correct_payload[num_pkt]);
bad_packet = true;
}--
2.53.0-Meta