aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pötzsch <christian.poetzsch@kernkonzept.com>2024-04-26 10:33:13 +0200
committerMichael S. Tsirkin <mst@redhat.com>2024-07-01 14:56:23 -0400
commit5093bee0fa8a6c9712c96653da3a79bc37a4e45d (patch)
treeb91ae94949c19207c4dc04e57ea9892fbb17087d
parentb937fa896321fb7b6d7f2205edb5490e0e5d6c69 (diff)
Fix vhost user assertion when sending more than one fd
If the client sends more than one region this assert triggers. The reason is that two fd's are 8 bytes and VHOST_MEMORY_BASELINE_NREGIONS is exactly 8. The assert is wrong because it should not test for the size of the fd array, but for the numbers of regions. Signed-off-by: Christian Pötzsch <christian.poetzsch@kernkonzept.com> Message-Id: <20240426083313.3081272-1-christian.poetzsch@kernkonzept.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
-rw-r--r--subprojects/libvhost-user/libvhost-user.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvhost-user/libvhost-user.c
index a879149fef..8adb277d54 100644
--- a/subprojects/libvhost-user/libvhost-user.c
+++ b/subprojects/libvhost-user/libvhost-user.c
@@ -568,7 +568,7 @@ vu_message_read_default(VuDev *dev, int conn_fd, VhostUserMsg *vmsg)
if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) {
fd_size = cmsg->cmsg_len - CMSG_LEN(0);
vmsg->fd_num = fd_size / sizeof(int);
- assert(fd_size < VHOST_MEMORY_BASELINE_NREGIONS);
+ assert(vmsg->fd_num <= VHOST_MEMORY_BASELINE_NREGIONS);
memcpy(vmsg->fds, CMSG_DATA(cmsg), fd_size);
break;
}