From: Geliang Tang <[email protected]>
The values of recv and recvp in msg_loop may be negative, so it's necessary
to check if they are positive before using them.
Fixes: 16962b2404ac ("bpf: sockmap, add selftests")
Fixes: 753fb2ee0934 ("bpf: sockmap, add msg_peek tests to test_sockmap")
Signed-off-by: Geliang Tang <[email protected]>
Acked-by: Yonghong Song <[email protected]>
---
tools/testing/selftests/bpf/test_sockmap.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/tools/testing/selftests/bpf/test_sockmap.c
b/tools/testing/selftests/bpf/test_sockmap.c
index 43612de44fbf..24b55da9d4af 100644
--- a/tools/testing/selftests/bpf/test_sockmap.c
+++ b/tools/testing/selftests/bpf/test_sockmap.c
@@ -680,7 +680,8 @@ static int msg_loop(int fd, int iov_count, int iov_length,
int cnt,
}
}
- s->bytes_recvd += recv;
+ if (recv > 0)
+ s->bytes_recvd += recv;
if (opt->check_recved_len && s->bytes_recvd >
total_bytes) {
errno = EMSGSIZE;
@@ -694,12 +695,14 @@ static int msg_loop(int fd, int iov_count, int
iov_length, int cnt,
iov_length * cnt :
iov_length * iov_count;
- errno = msg_verify_data(&msg, recv, chunk_sz);
- if (errno) {
- perror("data verify msg failed");
- goto out_errno;
+ if (recv > 0) {
+ errno = msg_verify_data(&msg, recv,
chunk_sz);
+ if (errno) {
+ perror("data verify msg
failed");
+ goto out_errno;
+ }
}
- if (recvp) {
+ if (recvp > 0) {
errno = msg_verify_data(&msg_peek,
recvp,
chunk_sz);
--
2.40.1