gnu: spice-vdagent: Apply a patch fixing the monitor size calculation.

This fixes errors like:

   spice-vdagentd[870]: invalid message size for VDAgentMonitorsConfig

See: <https://github.com/utmapp/UTM/issues/5832#issuecomment-3194879161>

* gnu/packages/patches/spice-vdagent-monitor-size-calculation.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/spice.scm (spice-vdagent) [source] <patches>: New field.

Change-Id: I4bc0f8e207bef65c8f2fcd64928315825d520ad1
This commit is contained in:
Maxim Cournoyer 2025-08-21 07:33:03 +09:00
parent 40311644a2
commit a308eead37
No known key found for this signature in database
GPG key ID: 1260E46482E63562
3 changed files with 34 additions and 1 deletions

View file

@ -2331,6 +2331,7 @@ dist_patch_DATA = \
%D%/packages/patches/softhsm-fix-openssl3-tests.patch \
%D%/packages/patches/spectre-meltdown-checker-externalize-fwdb.patch \
%D%/packages/patches/sphinxbase-fix-doxygen.patch \
%D%/packages/patches/spice-vdagent-monitor-size-calculation.patch \
%D%/packages/patches/guile-srfi-125-fix-r7rs-rename-clause.patch \
%D%/packages/patches/sssd-system-directories.patch \
%D%/packages/patches/steghide-fixes.patch \

View file

@ -0,0 +1,29 @@
From 3660acfcbaaca9c66dca5ef09205bd7c1d70b98c Mon Sep 17 00:00:00 2001
From: Lukas Joeressen <lukas@joeressen.net>
Date: Sat, 12 Apr 2025 10:42:02 +0200
Subject: [PATCH] Fix VDAGentMonitorConfig size calculation
The VDAgentMonitorsConfig struct has the VD_AGENT_CONFIG_MONITORS_FLAG_PHYSICAL_SIZE flag that
indicates if physical monitor sizes are included in the data. If this flag is set there is one
instance of VDAgentMonitorMM for each monitor following the other data.
---
src/vdagentd/vdagentd.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/vdagentd/vdagentd.c b/src/vdagentd/vdagentd.c
index 3e59331..27a6f15 100644
--- a/src/vdagentd/vdagentd.c
+++ b/src/vdagentd/vdagentd.c
@@ -208,6 +208,9 @@ static void do_client_monitors(VirtioPort *vport, int port_nr,
/* Store monitor config to send to agents when they connect */
size = sizeof(VDAgentMonitorsConfig) +
new_monitors->num_of_monitors * sizeof(VDAgentMonConfig);
+ if (new_monitors->flags & VD_AGENT_CONFIG_MONITORS_FLAG_PHYSICAL_SIZE) {
+ size += new_monitors->num_of_monitors * sizeof(VDAgentMonitorMM);
+ }
if (message_header->size != size) {
syslog(LOG_ERR, "invalid message size for VDAgentMonitorsConfig");
return;
--
GitLab

View file

@ -293,7 +293,10 @@ Internet and from a wide variety of machine architectures.")
"spice-vdagent-" version ".tar.bz2"))
(sha256
(base32
"18472sqr0gibzgzi48dpcbnvm78l05qrl5wv6xywqqj7r9dd3c4k"))))
"18472sqr0gibzgzi48dpcbnvm78l05qrl5wv6xywqqj7r9dd3c4k"))
(patches
(search-patches
"spice-vdagent-monitor-size-calculation.patch"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags