diff --git a/gnu/local.mk b/gnu/local.mk index 8530f3311a2..2986521b4b0 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -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 \ diff --git a/gnu/packages/patches/spice-vdagent-monitor-size-calculation.patch b/gnu/packages/patches/spice-vdagent-monitor-size-calculation.patch new file mode 100644 index 00000000000..370932c7eda --- /dev/null +++ b/gnu/packages/patches/spice-vdagent-monitor-size-calculation.patch @@ -0,0 +1,29 @@ +From 3660acfcbaaca9c66dca5ef09205bd7c1d70b98c Mon Sep 17 00:00:00 2001 +From: Lukas Joeressen +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 + diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm index 5957ac66632..cb0827bf29b 100644 --- a/gnu/packages/spice.scm +++ b/gnu/packages/spice.scm @@ -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