[Pkg-libvirt-maintainers] Bug#1115914: unblock: libvirt/11.3.0-3+deb13u1
Andrea Bolognani
eof at kiyuko.org
Sun Sep 21 17:52:29 BST 2025
Package: release.debian.org
Severity: normal
User: release.debian.org at packages.debian.org
Usertags: unblock
X-Debbugs-Cc: libvirt at packages.debian.org
Control: affects -1 + src:libvirt
Please unblock package libvirt.
Note: this is a preemptive unblock request. I will proceed with the
upload once the release team has confirmed that they're okay with it.
[ Reason ]
Various fixes for libvirt in trixie.
[ Tests ]
I have manually verified that the fixes work as intended. They all
come directly from upstream, which means that they were validated in
that context already.
[ Risks ]
Very little risk given the targeted nature of the fixes and the fact
that they are straightforward backports from upstream.
[ Checklist ]
[x] all changes are documented in the d/changelog
[x] I reviewed all changes and I approve them
[x] attach debdiff against the package in testing
unblock libvirt/11.3.0-3+deb13u1
--
Andrea Bolognani <eof at kiyuko.org>
Resistance is futile, you will be garbage collected.
-------------- next part --------------
diff -Nru libvirt-11.3.0/debian/changelog libvirt-11.3.0/debian/changelog
--- libvirt-11.3.0/debian/changelog 2025-07-02 22:15:28.000000000 +0200
+++ libvirt-11.3.0/debian/changelog 2025-09-21 18:29:38.000000000 +0200
@@ -1,3 +1,25 @@
+libvirt (11.3.0-3+deb13u1) trixie; urgency=medium
+
+ * [6a549fc] patches: Add backports
+ - backport/tlscert-Don-t-force-keyEncipherment[...]
+ - backport/tls-Don-t-require-keyEncipherment-[...]
+ - backport/tests-[...]-Drop-use-of-GNUTLS_KEY_KEY_ENCIPHERM[...]
+ - Removes the requirement to have keyEncipherment enabled
+ for TLS certificates
+ - Closes: #1110816
+ * [8b355a8] patches: Add backports
+ - backport/daemon-Drop-log-level-of-VIR_ERR_NO_SUPPORT-[...]
+ - Prevents journal spam when using the LXC driver
+ - Closes: #1110963
+ * [f5079ab] patches: Add backports
+ - backport/qemu-capabilities-Check-if-cpuModels-is-not-NULL-[...]
+ - Fixes a daemon crash that occurs when probing capabilities
+ for a QEMU binary that doesn't report information about
+ CPU models
+ - Closes: #1112481
+
+ -- Andrea Bolognani <eof at kiyuko.org> Sun, 21 Sep 2025 18:29:38 +0200
+
libvirt (11.3.0-3) unstable; urgency=medium
* [d10b70f] patches: Add backports
diff -Nru libvirt-11.3.0/debian/patches/backport/daemon-Drop-log-level-of-VIR_ERR_NO_SUPPORT-to-debug.patch libvirt-11.3.0/debian/patches/backport/daemon-Drop-log-level-of-VIR_ERR_NO_SUPPORT-to-debug.patch
--- libvirt-11.3.0/debian/patches/backport/daemon-Drop-log-level-of-VIR_ERR_NO_SUPPORT-to-debug.patch 1970-01-01 01:00:00.000000000 +0100
+++ libvirt-11.3.0/debian/patches/backport/daemon-Drop-log-level-of-VIR_ERR_NO_SUPPORT-to-debug.patch 2025-09-21 18:29:38.000000000 +0200
@@ -0,0 +1,34 @@
+From: Peter Krempa <pkrempa at redhat.com>
+Date: Tue, 26 Aug 2025 13:57:42 +0200
+Subject: daemon: Drop log level of VIR_ERR_NO_SUPPORT to debug
+
+The error code signals that the API the user called is not supported by
+the driver. This can happen with some hypervisor drivers which don't
+have everything implemented yet. There's no point in spamming the log
+with it.
+
+Closes: https://gitlab.com/libvirt/libvirt/-/issues/805
+Signed-off-by: Peter Krempa <pkrempa at redhat.com>
+Reviewed-by: Martin Kletzander <mkletzan at redhat.com>
+(cherry picked from commit 37a1bd945899308d1c071bb885e5d1d9529d6b85)
+
+Bug-Debian: https://bugs.debian.org/1110963
+
+Forwarded: not-needed
+Origin: https://gitlab.com/libvirt/libvirt/-/commits/37a1bd945899308d1c071bb885e5d1d9529d6b85
+---
+ src/remote/remote_daemon.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/remote/remote_daemon.c b/src/remote/remote_daemon.c
+index 1424d4c..2973813 100644
+--- a/src/remote/remote_daemon.c
++++ b/src/remote/remote_daemon.c
+@@ -108,6 +108,7 @@ static int daemonErrorLogFilter(virErrorPtr err, int priority)
+ case VIR_ERR_NO_CLIENT:
+ case VIR_ERR_NO_HOSTNAME:
+ case VIR_ERR_NO_NETWORK_METADATA:
++ case VIR_ERR_NO_SUPPORT:
+ return VIR_LOG_DEBUG;
+ }
+
diff -Nru libvirt-11.3.0/debian/patches/backport/qemu-capabilities-Check-if-cpuModels-is-not-NULL-before-t.patch libvirt-11.3.0/debian/patches/backport/qemu-capabilities-Check-if-cpuModels-is-not-NULL-before-t.patch
--- libvirt-11.3.0/debian/patches/backport/qemu-capabilities-Check-if-cpuModels-is-not-NULL-before-t.patch 1970-01-01 01:00:00.000000000 +0100
+++ libvirt-11.3.0/debian/patches/backport/qemu-capabilities-Check-if-cpuModels-is-not-NULL-before-t.patch 2025-09-21 18:29:38.000000000 +0200
@@ -0,0 +1,76 @@
+From: anonymix007 <48598263+anonymix007 at users.noreply.github.com>
+Date: Wed, 4 Jun 2025 12:05:23 +0300
+Subject: qemu: capabilities: Check if cpuModels is not NULL before trying to
+ dereference it
+
+accel->cpuModels field might be NULL if QEMU does not return CPU models.
+The following backtrace is observed in such cases:
+0 virQEMUCapsProbeQMPCPUDefinitions (qemuCaps=qemuCaps at entry=0x7f1890003ae0, accel=accel at entry=0x7f1890003c10, mon=mon at entry=0x7f1890005270)
+ at ../src/qemu/qemu_capabilities.c:3091
+1 0x00007f18b42fa7b1 in virQEMUCapsInitQMPMonitor (qemuCaps=qemuCaps at entry=0x7f1890003ae0, mon=0x7f1890005270) at ../src/qemu/qemu_capabilities.c:5746
+2 0x00007f18b42fafaf in virQEMUCapsInitQMPSingle (qemuCaps=qemuCaps at entry=0x7f1890003ae0, libDir=libDir at entry=0x7f186c1e70f0 "/var/lib/libvirt/qemu",
+ runUid=runUid at entry=955, runGid=runGid at entry=955, onlyTCG=onlyTCG at entry=false) at ../src/qemu/qemu_capabilities.c:5832
+3 0x00007f18b42fb1a5 in virQEMUCapsInitQMP (qemuCaps=0x7f1890003ae0, libDir=0x7f186c1e70f0 "/var/lib/libvirt/qemu", runUid=955, runGid=955)
+ at ../src/qemu/qemu_capabilities.c:5848
+4 virQEMUCapsNewForBinaryInternal (hostArch=VIR_ARCH_X86_64, binary=binary at entry=0x7f1868002fc0 "/usr/bin/qemu-system-alpha",
+ libDir=0x7f186c1e70f0 "/var/lib/libvirt/qemu", runUid=955, runGid=955,
+ hostCPUSignature=0x7f186c1e9f20 "AuthenticAMD, AMD Ryzen 9 7950X 16-Core Processor, family: 25, model: 97, stepping: 2", microcodeVersion=174068233,
+ kernelVersion=0x7f186c194200 "6.14.9-arch1-1 #1 SMP PREEMPT_DYNAMIC Thu, 29 May 2025 21:42:15 +0000", cpuData=0x7f186c1ea490)
+ at ../src/qemu/qemu_capabilities.c:5907
+5 0x00007f18b42fb4c9 in virQEMUCapsNewData (binary=0x7f1868002fc0 "/usr/bin/qemu-system-alpha", privData=0x7f186c194280)
+ at ../src/qemu/qemu_capabilities.c:5942
+6 0x00007f18bd42d302 in virFileCacheNewData (cache=0x7f186c193730, name=0x7f1868002fc0 "/usr/bin/qemu-system-alpha") at ../src/util/virfilecache.c:206
+7 virFileCacheValidate (cache=cache at entry=0x7f186c193730, name=name at entry=0x7f1868002fc0 "/usr/bin/qemu-system-alpha", data=data at entry=0x7f18b67c37c0)
+ at ../src/util/virfilecache.c:269
+8 0x00007f18bd42d5b8 in virFileCacheLookup (cache=cache at entry=0x7f186c193730, name=name at entry=0x7f1868002fc0 "/usr/bin/qemu-system-alpha")
+ at ../src/util/virfilecache.c:301
+9 0x00007f18b42fb679 in virQEMUCapsCacheLookup (cache=cache at entry=0x7f186c193730, binary=binary at entry=0x7f1868002fc0 "/usr/bin/qemu-system-alpha")
+ at ../src/qemu/qemu_capabilities.c:6036
+10 0x00007f18b42fb785 in virQEMUCapsInitGuest (caps=<optimized out>, cache=<optimized out>, hostarch=VIR_ARCH_X86_64, guestarch=VIR_ARCH_ALPHA)
+ at ../src/qemu/qemu_capabilities.c:1037
+11 virQEMUCapsInit (cache=0x7f186c193730) at ../src/qemu/qemu_capabilities.c:1229
+12 0x00007f18b431d311 in virQEMUDriverCreateCapabilities (driver=driver at entry=0x7f186c01f410) at ../src/qemu/qemu_conf.c:1553
+13 0x00007f18b431d663 in virQEMUDriverGetCapabilities (driver=0x7f186c01f410, refresh=<optimized out>) at ../src/qemu/qemu_conf.c:1623
+14 0x00007f18b435e3e4 in qemuConnectGetVersion (conn=<optimized out>, version=0x7f18b67c39b0) at ../src/qemu/qemu_driver.c:1492
+15 0x00007f18bd69c5e8 in virConnectGetVersion (conn=0x55bc5f4cda20, hvVer=hvVer at entry=0x7f18b67c39b0) at ../src/libvirt-host.c:201
+16 0x000055bc34ef3627 in remoteDispatchConnectGetVersion (server=0x55bc5f4b93f0, msg=0x55bc5f4cdf60, client=0x55bc5f4c66d0, rerr=0x7f18b67c3a80,
+ ret=0x55bc5f4b8670) at src/remote/remote_daemon_dispatch_stubs.h:1265
+17 remoteDispatchConnectGetVersionHelper (server=0x55bc5f4b93f0, client=0x55bc5f4c66d0, msg=0x55bc5f4cdf60, rerr=0x7f18b67c3a80, args=0x0, ret=0x55bc5f4b8670)
+ at src/remote/remote_daemon_dispatch_stubs.h:1247
+18 0x00007f18bd5506da in virNetServerProgramDispatchCall (prog=0x55bc5f4cae90, server=0x55bc5f4b93f0, client=0x55bc5f4c66d0, msg=0x55bc5f4cdf60)
+ at ../src/rpc/virnetserverprogram.c:423
+19 virNetServerProgramDispatch (prog=0x55bc5f4cae90, server=server at entry=0x55bc5f4b93f0, client=0x55bc5f4c66d0, msg=0x55bc5f4cdf60)
+ at ../src/rpc/virnetserverprogram.c:299
+20 0x00007f18bd556c32 in virNetServerProcessMsg (srv=srv at entry=0x55bc5f4b93f0, client=<optimized out>, prog=<optimized out>, msg=<optimized out>)
+ at ../src/rpc/virnetserver.c:135
+21 0x00007f18bd556f77 in virNetServerHandleJob (jobOpaque=0x55bc5f4d2bb0, opaque=0x55bc5f4b93f0) at ../src/rpc/virnetserver.c:155
+22 0x00007f18bd47dd19 in virThreadPoolWorker (opaque=<optimized out>) at ../src/util/virthreadpool.c:164
+23 0x00007f18bd47d253 in virThreadHelper (data=0x55bc5f4b7810) at ../src/util/virthread.c:256
+24 0x00007f18bce117eb in start_thread (arg=<optimized out>) at pthread_create.c:448
+25 0x00007f18bce9518c in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
+
+Signed-off-by: anonymix007 <anonymix007 at users.noreply.github.com>
+(cherry picked from commit e7239c619fcaf35b8b605ce07c5d5b15351b3a62)
+
+Bug-Debian: https://bugs.debian.org/1112481
+
+Forwarded: not-needed
+Origin: https://gitlab.com/libvirt/libvirt/-/commits/e7239c619fcaf35b8b605ce07c5d5b15351b3a62
+---
+ src/qemu/qemu_capabilities.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
+index a804335..e937fe3 100644
+--- a/src/qemu/qemu_capabilities.c
++++ b/src/qemu/qemu_capabilities.c
+@@ -3078,6 +3078,9 @@ virQEMUCapsProbeQMPCPUDefinitions(virQEMUCaps *qemuCaps,
+ if (virQEMUCapsFetchCPUDefinitions(mon, qemuCaps->arch, &accel->cpuModels) < 0)
+ return -1;
+
++ if (!accel->cpuModels)
++ return 0;
++
+ defs = accel->cpuModels;
+ for (i = 0; i < defs->ncpus; i++) {
+ if (STREQ_NULLABLE(defs->cpus[i].name, "max")) {
diff -Nru libvirt-11.3.0/debian/patches/backport/tests-virnettls-test-Drop-use-of-GNUTLS_KEY_KEY_ENCIPHERM.patch libvirt-11.3.0/debian/patches/backport/tests-virnettls-test-Drop-use-of-GNUTLS_KEY_KEY_ENCIPHERM.patch
--- libvirt-11.3.0/debian/patches/backport/tests-virnettls-test-Drop-use-of-GNUTLS_KEY_KEY_ENCIPHERM.patch 1970-01-01 01:00:00.000000000 +0100
+++ libvirt-11.3.0/debian/patches/backport/tests-virnettls-test-Drop-use-of-GNUTLS_KEY_KEY_ENCIPHERM.patch 2025-09-21 18:29:38.000000000 +0200
@@ -0,0 +1,237 @@
+From: Peter Krempa <pkrempa at redhat.com>
+Date: Tue, 1 Jul 2025 13:48:00 +0200
+Subject: tests: virnettls*test: Drop use of GNUTLS_KEY_KEY_ENCIPHERMENT
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 8bit
+
+It's not needed with TLS 1.3 any more.
+
+Signed-off-by: Peter Krempa <pkrempa at redhat.com>
+Reviewed-by: J?n Tomko <jtomko at redhat.com>
+(cherry picked from commit e67952b0e612c9ad3c3eec8bb692589602953ee8)
+
+Bug-Debian: https://bugs.debian.org/1110816
+
+Forwarded: not-needed
+Origin: https://gitlab.com/libvirt/libvirt/-/commits/e67952b0e612c9ad3c3eec8bb692589602953ee8
+---
+ tests/virnettlscontexttest.c | 36 ++++++++++++++++++------------------
+ tests/virnettlssessiontest.c | 14 +++++++-------
+ 2 files changed, 25 insertions(+), 25 deletions(-)
+
+diff --git a/tests/virnettlscontexttest.c b/tests/virnettlscontexttest.c
+index 2311524..48bdefd 100644
+--- a/tests/virnettlscontexttest.c
++++ b/tests/virnettlscontexttest.c
+@@ -156,13 +156,13 @@ mymain(void)
+ TLS_CERT_REQ(servercertreq, cacertreq,
+ "UK", "libvirt.org", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_SERVER, NULL,
+ 0, 0);
+ TLS_CERT_REQ(clientcertreq, cacertreq,
+ "UK", "libvirt", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_CLIENT, NULL,
+ 0, 0);
+
+@@ -182,7 +182,7 @@ mymain(void)
+ TLS_CERT_REQ(servercert1req, cacert1req,
+ "UK", "libvirt.org", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_SERVER, NULL,
+ 0, 0);
+
+@@ -196,7 +196,7 @@ mymain(void)
+ TLS_CERT_REQ(servercert2req, cacert2req,
+ "UK", "libvirt.org", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_SERVER, NULL,
+ 0, 0);
+
+@@ -210,7 +210,7 @@ mymain(void)
+ TLS_CERT_REQ(servercert3req, cacert3req,
+ "UK", "libvirt.org", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_SERVER, NULL,
+ 0, 0);
+
+@@ -230,7 +230,7 @@ mymain(void)
+ TLS_CERT_REQ(servercert4req, cacert4req,
+ "UK", "libvirt.org", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_SERVER, NULL,
+ 0, 0);
+ /* no-basic */
+@@ -243,7 +243,7 @@ mymain(void)
+ TLS_CERT_REQ(servercert5req, cacert5req,
+ "UK", "libvirt.org", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_SERVER, NULL,
+ 0, 0);
+ /* Key usage:dig-sig:critical */
+@@ -256,7 +256,7 @@ mymain(void)
+ TLS_CERT_REQ(servercert6req, cacert6req,
+ "UK", "libvirt.org", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_SERVER, NULL,
+ 0, 0);
+
+@@ -284,7 +284,7 @@ mymain(void)
+ TLS_CERT_REQ(servercert8req, cacertreq,
+ "UK", "libvirt", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT | GNUTLS_KEY_KEY_CERT_SIGN,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_CERT_SIGN,
+ false, false, NULL, NULL,
+ 0, 0);
+ /* usage:cert-sign:not-critical */
+@@ -372,7 +372,7 @@ mymain(void)
+ TLS_CERT_REQ(clientcert2req, cacertreq,
+ "UK", "libvirt", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT | GNUTLS_KEY_KEY_CERT_SIGN,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_CERT_SIGN,
+ false, false, NULL, NULL,
+ 0, 0);
+ /* usage:cert-sign:not-critical */
+@@ -459,19 +459,19 @@ mymain(void)
+ TLS_CERT_REQ(servercertexpreq, cacertexpreq,
+ "UK", "libvirt.org", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_SERVER, NULL,
+ 0, 0);
+ TLS_CERT_REQ(servercertexp1req, cacertreq,
+ "UK", "libvirt", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_SERVER, NULL,
+ 0, -1);
+ TLS_CERT_REQ(clientcertexp1req, cacertreq,
+ "UK", "libvirt", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_CLIENT, NULL,
+ 0, -1);
+
+@@ -491,19 +491,19 @@ mymain(void)
+ TLS_CERT_REQ(servercertnewreq, cacertnewreq,
+ "UK", "libvirt", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_SERVER, NULL,
+ 0, 0);
+ TLS_CERT_REQ(servercertnew1req, cacertreq,
+ "UK", "libvirt", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_SERVER, NULL,
+ 1, 2);
+ TLS_CERT_REQ(clientcertnew1req, cacertreq,
+ "UK", "libvirt", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_CLIENT, NULL,
+ 1, 2);
+
+@@ -538,13 +538,13 @@ mymain(void)
+ TLS_CERT_REQ(servercertlevel3areq, cacertlevel2areq,
+ "UK", "libvirt.org", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_SERVER, NULL,
+ 0, 0);
+ TLS_CERT_REQ(clientcertlevel2breq, cacertlevel1breq,
+ "UK", "libvirt client level 2b", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_CLIENT, NULL,
+ 0, 0);
+
+diff --git a/tests/virnettlssessiontest.c b/tests/virnettlssessiontest.c
+index 285cde5..459e17c 100644
+--- a/tests/virnettlssessiontest.c
++++ b/tests/virnettlssessiontest.c
+@@ -314,20 +314,20 @@ mymain(void)
+ TLS_CERT_REQ(servercertreq, cacertreq,
+ "UK", "libvirt.org", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_SERVER, NULL,
+ 0, 0);
+ TLS_CERT_REQ(clientcertreq, cacertreq,
+ "UK", "libvirt", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_CLIENT, NULL,
+ 0, 0);
+
+ TLS_CERT_REQ(clientcertaltreq, altcacertreq,
+ "UK", "libvirt", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_CLIENT, NULL,
+ 0, 0);
+
+@@ -342,14 +342,14 @@ mymain(void)
+ TLS_CERT_REQ(servercertalt1req, cacertreq,
+ "UK", "libvirt.org", "www.libvirt.org", "libvirt.org", "192.168.122.1", "fec0::dead:beaf",
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_SERVER, NULL,
+ 0, 0);
+ /* This intentionally doesn't replicate */
+ TLS_CERT_REQ(servercertalt2req, cacertreq,
+ "UK", "libvirt.org", "www.libvirt.org", "wiki.libvirt.org", "192.168.122.1", "fec0::dead:beaf",
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_SERVER, NULL,
+ 0, 0);
+
+@@ -433,13 +433,13 @@ mymain(void)
+ TLS_CERT_REQ(servercertlevel3areq, cacertlevel2areq,
+ "UK", "libvirt.org", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_SERVER, NULL,
+ 0, 0);
+ TLS_CERT_REQ(clientcertlevel2breq, cacertlevel1breq,
+ "UK", "libvirt client level 2b", NULL, NULL, NULL, NULL,
+ true, true, false,
+- true, true, GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT,
++ true, true, GNUTLS_KEY_DIGITAL_SIGNATURE,
+ true, true, GNUTLS_KP_TLS_WWW_CLIENT, NULL,
+ 0, 0);
+
diff -Nru libvirt-11.3.0/debian/patches/backport/tlscert-Don-t-force-keyEncipherment-for-ECDSA-and-ECDH.patch libvirt-11.3.0/debian/patches/backport/tlscert-Don-t-force-keyEncipherment-for-ECDSA-and-ECDH.patch
--- libvirt-11.3.0/debian/patches/backport/tlscert-Don-t-force-keyEncipherment-for-ECDSA-and-ECDH.patch 1970-01-01 01:00:00.000000000 +0100
+++ libvirt-11.3.0/debian/patches/backport/tlscert-Don-t-force-keyEncipherment-for-ECDSA-and-ECDH.patch 2025-09-21 18:29:38.000000000 +0200
@@ -0,0 +1,73 @@
+From: Peter Krempa <pkrempa at redhat.com>
+Date: Tue, 17 Jun 2025 15:01:26 +0200
+Subject: tlscert: Don't force 'keyEncipherment' for ECDSA and ECDH
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 8bit
+
+Per RFC8813 [1] which amends RFC5580 [2] ECDSA, ECDH, and ECMQV
+algorithms must not have 'keyEncipherment' present, but our code did
+check it. Add exemption for known algorithms which don't use it.
+
+[1] https://datatracker.ietf.org/doc/rfc8813/
+[2] https://datatracker.ietf.org/doc/rfc5480
+
+Closes: https://gitlab.com/libvirt/libvirt/-/issues/691
+Signed-off-by: Peter Krempa <pkrempa at redhat.com>
+Reviewed-by: Daniel P. Berrang? <berrange at redhat.com>
+Reviewed-by: Michal Privoznik <mprivozn at redhat.com>
+Reviewed-by: J?n Tomko <jtomko at redhat.com>
+(cherry picked from commit 11867b0224a2b8dc34755ff0ace446b6842df1c1)
+
+Bug-Debian: https://bugs.debian.org/1110816
+
+Forwarded: not-needed
+Origin: https://gitlab.com/libvirt/libvirt/-/commits/11867b0224a2b8dc34755ff0ace446b6842df1c1
+---
+ src/rpc/virnettlscert.c | 33 +++++++++++++++++++++++++--------
+ 1 file changed, 25 insertions(+), 8 deletions(-)
+
+diff --git a/src/rpc/virnettlscert.c b/src/rpc/virnettlscert.c
+index 1befbe0..f197995 100644
+--- a/src/rpc/virnettlscert.c
++++ b/src/rpc/virnettlscert.c
+@@ -163,14 +163,31 @@ static int virNetTLSCertCheckKeyUsage(gnutls_x509_crt_t cert,
+ }
+ }
+ if (!(usage & GNUTLS_KEY_KEY_ENCIPHERMENT)) {
+- if (critical) {
+- virReportError(VIR_ERR_SYSTEM_ERROR,
+- _("Certificate %1$s usage does not permit key encipherment"),
+- certFile);
+- return -1;
+- } else {
+- VIR_WARN("Certificate %s usage does not permit key encipherment",
+- certFile);
++ int alg = gnutls_x509_crt_get_pk_algorithm(cert, NULL);
++
++ /* Per RFC8813 [1] which amends RFC5580 [2] ECDSA, ECDH, and ECMQV
++ * algorithms must not have 'keyEncipherment' present.
++ *
++ * [1] https://datatracker.ietf.org/doc/rfc8813/
++ * [2] https://datatracker.ietf.org/doc/rfc5480
++ */
++
++ switch (alg) {
++ case GNUTLS_PK_ECDSA:
++ case GNUTLS_PK_ECDH_X25519:
++ case GNUTLS_PK_ECDH_X448:
++ break;
++
++ default:
++ if (critical) {
++ virReportError(VIR_ERR_SYSTEM_ERROR,
++ _("Certificate %1$s usage does not permit key encipherment"),
++ certFile);
++ return -1;
++ } else {
++ VIR_WARN("Certificate %s usage does not permit key encipherment",
++ certFile);
++ }
+ }
+ }
+ }
diff -Nru libvirt-11.3.0/debian/patches/backport/tls-Don-t-require-keyEncipherment-to-be-enabled-altoghthe.patch libvirt-11.3.0/debian/patches/backport/tls-Don-t-require-keyEncipherment-to-be-enabled-altoghthe.patch
--- libvirt-11.3.0/debian/patches/backport/tls-Don-t-require-keyEncipherment-to-be-enabled-altoghthe.patch 1970-01-01 01:00:00.000000000 +0100
+++ libvirt-11.3.0/debian/patches/backport/tls-Don-t-require-keyEncipherment-to-be-enabled-altoghthe.patch 2025-09-21 18:29:38.000000000 +0200
@@ -0,0 +1,84 @@
+From: Peter Krempa <pkrempa at redhat.com>
+Date: Mon, 30 Jun 2025 19:19:42 +0200
+Subject: tls: Don't require 'keyEncipherment' to be enabled altoghther
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 8bit
+
+Key encipherment is required only for RSA key exchange algorithm. With
+TLS 1.3 this is not even used as RSA is used only for authentication.
+
+Since we can't really check when it's required ahead of time drop the
+check completely. GnuTLS will moan if it will not be able to use RSA
+key exchange.
+
+In commit 11867b0224a2 I tried to relax the check for some eliptic
+curve algorithm that explicitly forbid it. Based on the above the proper
+solution is to completely remove it.
+
+Resolves: https://issues.redhat.com/browse/RHEL-100711
+Fixes: 11867b0224a2b8dc34755ff0ace446b6842df1c1
+Signed-off-by: Peter Krempa <pkrempa at redhat.com>
+Reviewed-by: J?n Tomko <jtomko at redhat.com>
+(cherry picked from commit 8cecd3249e5fa5478a7c53567971b4d969274ea3)
+
+Bug-Debian: https://bugs.debian.org/1110816
+
+Forwarded: not-needed
+Origin: https://gitlab.com/libvirt/libvirt/-/commits/8cecd3249e5fa5478a7c53567971b4d969274ea3
+---
+ src/rpc/virnettlscert.c | 34 ++++------------------------------
+ 1 file changed, 4 insertions(+), 30 deletions(-)
+
+diff --git a/src/rpc/virnettlscert.c b/src/rpc/virnettlscert.c
+index f197995..6a723c1 100644
+--- a/src/rpc/virnettlscert.c
++++ b/src/rpc/virnettlscert.c
+@@ -128,8 +128,10 @@ static int virNetTLSCertCheckKeyUsage(gnutls_x509_crt_t cert,
+ VIR_DEBUG("Cert %s key usage status %d usage %d critical %u", certFile, status, usage, critical);
+ if (status < 0) {
+ if (status == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) {
+- usage = isCA ? GNUTLS_KEY_KEY_CERT_SIGN :
+- GNUTLS_KEY_DIGITAL_SIGNATURE|GNUTLS_KEY_KEY_ENCIPHERMENT;
++ if (isCA)
++ usage = GNUTLS_KEY_KEY_CERT_SIGN;
++ else
++ usage = GNUTLS_KEY_DIGITAL_SIGNATURE;
+ } else {
+ virReportError(VIR_ERR_SYSTEM_ERROR,
+ _("Unable to query certificate %1$s key usage %2$s"),
+@@ -162,34 +164,6 @@ static int virNetTLSCertCheckKeyUsage(gnutls_x509_crt_t cert,
+ certFile);
+ }
+ }
+- if (!(usage & GNUTLS_KEY_KEY_ENCIPHERMENT)) {
+- int alg = gnutls_x509_crt_get_pk_algorithm(cert, NULL);
+-
+- /* Per RFC8813 [1] which amends RFC5580 [2] ECDSA, ECDH, and ECMQV
+- * algorithms must not have 'keyEncipherment' present.
+- *
+- * [1] https://datatracker.ietf.org/doc/rfc8813/
+- * [2] https://datatracker.ietf.org/doc/rfc5480
+- */
+-
+- switch (alg) {
+- case GNUTLS_PK_ECDSA:
+- case GNUTLS_PK_ECDH_X25519:
+- case GNUTLS_PK_ECDH_X448:
+- break;
+-
+- default:
+- if (critical) {
+- virReportError(VIR_ERR_SYSTEM_ERROR,
+- _("Certificate %1$s usage does not permit key encipherment"),
+- certFile);
+- return -1;
+- } else {
+- VIR_WARN("Certificate %s usage does not permit key encipherment",
+- certFile);
+- }
+- }
+- }
+ }
+
+ return 0;
diff -Nru libvirt-11.3.0/debian/patches/series libvirt-11.3.0/debian/patches/series
--- libvirt-11.3.0/debian/patches/series 2025-07-02 22:15:28.000000000 +0200
+++ libvirt-11.3.0/debian/patches/series 2025-09-21 18:29:38.000000000 +0200
@@ -1,5 +1,10 @@
backport/qemuProcessStartWithMemoryState-Don-t-setup-qemu-for-inco.patch
backport/qemu-Be-more-forgiving-when-acquiring-QUERY-job-when-form.patch
+backport/tlscert-Don-t-force-keyEncipherment-for-ECDSA-and-ECDH.patch
+backport/tls-Don-t-require-keyEncipherment-to-be-enabled-altoghthe.patch
+backport/tests-virnettls-test-Drop-use-of-GNUTLS_KEY_KEY_ENCIPHERM.patch
+backport/daemon-Drop-log-level-of-VIR_ERR_NO_SUPPORT-to-debug.patch
+backport/qemu-capabilities-Check-if-cpuModels-is-not-NULL-before-t.patch
debian/Debianize-libvirt-guests.patch
debian/apparmor_profiles_local_include.patch
debian/Use-sensible-editor-by-default.patch
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-libvirt-maintainers/attachments/20250921/fc11256f/attachment-0001.sig>
More information about the Pkg-libvirt-maintainers
mailing list