From: Geliang Tang <tanggeli...@kylinos.cn>

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 <tanggeli...@kylinos.cn>
Acked-by: Yonghong Song <yonghong.s...@linux.dev>
---
 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


Reply via email to