From 5383fd12d26512bfaae85134e1fd09783b0a7554 Mon Sep 17 00:00:00 2001 From: Feng Jiang Date: Fri, 5 Aug 2022 10:09:44 +0800 Subject: [PATCH] virgl/vtest: fix memory overwrite problem in virgl_vtest_send_get_caps() Signed-off-by: Feng Jiang (cherry picked from commit 060936fe0de668127310a65e607fa4b7b48d6f0a) Part-of: --- src/gallium/winsys/virgl/vtest/virgl_vtest_socket.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gallium/winsys/virgl/vtest/virgl_vtest_socket.c b/src/gallium/winsys/virgl/vtest/virgl_vtest_socket.c index f24116e32da..62ef471405a 100644 --- a/src/gallium/winsys/virgl/vtest/virgl_vtest_socket.c +++ b/src/gallium/winsys/virgl/vtest/virgl_vtest_socket.c @@ -253,8 +253,13 @@ int virgl_vtest_send_get_caps(struct virgl_vtest_winsys *vws, ret = virgl_block_read(vws->sock_fd, &caps->caps, resp_size); - if (dummy_size) - ret = virgl_block_read(vws->sock_fd, &dummy, dummy_size); + while (dummy_size) { + ret = virgl_block_read(vws->sock_fd, &dummy, + dummy_size < sizeof(dummy) ? dummy_size : sizeof(dummy)); + if (ret <= 0) + break; + dummy_size -= ret; + } /* now read back the pointless caps v1 we requested */ ret = virgl_block_read(vws->sock_fd, resp_buf, sizeof(resp_buf));