From 71a1522eb7df823a5c9d39c8c5ffc9230c4c382e Mon Sep 17 00:00:00 2001 From: Charles Arnold Date: Wed, 9 Dec 2020 15:52:45 +0000 Subject: [PATCH] - Upstream bug fixes (bsc#1027942) e7222b50-addstorage-Dont-pass-None-to-widget.set_active.patch 4d0e3232-virtinst-Fix-TOCTOU-in-domain-enumeration.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=531 --- ...nst-Fix-TOCTOU-in-domain-enumeration.patch | 36 +++++++++++++++++++ ...-Dont-pass-None-to-widget.set_active.patch | 23 ++++++++++++ virt-manager.changes | 7 ++++ virt-manager.spec | 4 +++ 4 files changed, 70 insertions(+) create mode 100644 4d0e3232-virtinst-Fix-TOCTOU-in-domain-enumeration.patch create mode 100644 e7222b50-addstorage-Dont-pass-None-to-widget.set_active.patch diff --git a/4d0e3232-virtinst-Fix-TOCTOU-in-domain-enumeration.patch b/4d0e3232-virtinst-Fix-TOCTOU-in-domain-enumeration.patch new file mode 100644 index 00000000..dd6067b4 --- /dev/null +++ b/4d0e3232-virtinst-Fix-TOCTOU-in-domain-enumeration.patch @@ -0,0 +1,36 @@ +Subject: virtinst: Fix TOCTOU in domain enumeration +From: Martin Pitt martin@piware.de Tue Nov 24 14:24:06 2020 +0100 +Date: Tue Dec 1 13:56:30 2020 -0500: +Git: 4d0e323227f18e58283c45be4d240b506faacb22 + +Similar to commit 49a01b5482, _fetch_all_domains_raw() has a race +condition where a domain may disappear (from parallel libvirt +operations) in between enumerating and inspecting the objects. + +Ignore these missing domains instead of crashing. + +https://bugzilla.redhat.com/show_bug.cgi?id=1901081 + +diff --git a/virtinst/connection.py b/virtinst/connection.py +index fec273b7..06bc60ad 100644 +--- a/virtinst/connection.py ++++ b/virtinst/connection.py +@@ -182,8 +182,16 @@ class VirtinstConnection(object): + def _fetch_all_domains_raw(self): + dummy1, dummy2, ret = pollhelpers.fetch_vms( + self, {}, lambda obj, ignore: obj) +- return [Guest(weakref.proxy(self), parsexml=obj.XMLDesc(0)) +- for obj in ret] ++ domains = [] ++ for obj in ret: ++ # TOCTOU race: a domain may go away in between enumeration and inspection ++ try: ++ xml = obj.XMLDesc(0) ++ except libvirt.libvirtError as e: # pragma: no cover ++ log.debug("Fetching domain XML failed: %s", e) ++ continue ++ domains.append(Guest(weakref.proxy(self), parsexml=xml)) ++ return domains + + def _build_pool_raw(self, poolobj): + return StoragePool(weakref.proxy(self), diff --git a/e7222b50-addstorage-Dont-pass-None-to-widget.set_active.patch b/e7222b50-addstorage-Dont-pass-None-to-widget.set_active.patch new file mode 100644 index 00000000..cd332e69 --- /dev/null +++ b/e7222b50-addstorage-Dont-pass-None-to-widget.set_active.patch @@ -0,0 +1,23 @@ +Subject: addstorage: Don't pass None to widget.set_active() +From: Cole Robinson crobinso@redhat.com Sat Nov 21 17:17:33 2020 -0500 +Date: Sat Nov 21 17:17:33 2020 -0500: +Git: e7222b5058c8874b15fbfd998e5eeb233f571075 + +Older pygobject can't handle it. Mentioned here: +https://github.com/virt-manager/virt-manager/issues/188 + +Signed-off-by: Cole Robinson + +diff --git a/virtManager/device/addstorage.py b/virtManager/device/addstorage.py +index dee0160c..49d0b693 100644 +--- a/virtManager/device/addstorage.py ++++ b/virtManager/device/addstorage.py +@@ -310,7 +310,7 @@ class vmmAddStorage(vmmGObjectUI): + detect_zeroes = disk.driver_detect_zeroes + ro = disk.read_only + share = disk.shareable +- removable = disk.removable ++ removable = bool(disk.removable) + serial = disk.serial + + self.set_disk_bus(disk.bus) diff --git a/virt-manager.changes b/virt-manager.changes index 05a2d649..c2113d71 100644 --- a/virt-manager.changes +++ b/virt-manager.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Wed Dec 9 08:32:32 MST 2020 - carnold@suse.com + +- Upstream bug fixes (bsc#1027942) + e7222b50-addstorage-Dont-pass-None-to-widget.set_active.patch + 4d0e3232-virtinst-Fix-TOCTOU-in-domain-enumeration.patch + ------------------------------------------------------------------- Mon Nov 30 13:39:10 MST 2020 - carnold@suse.com diff --git a/virt-manager.spec b/virt-manager.spec index 31944f98..d312b5e3 100644 --- a/virt-manager.spec +++ b/virt-manager.spec @@ -32,6 +32,8 @@ Source1: virt-install.rb Source2: virt-install.desktop Source3: virt-manager-supportconfig # Upstream Patches +Patch1: e7222b50-addstorage-Dont-pass-None-to-widget.set_active.patch +Patch2: 4d0e3232-virtinst-Fix-TOCTOU-in-domain-enumeration.patch # SUSE Only Patch70: virtman-desktop.patch Patch71: virtman-kvm.patch @@ -157,6 +159,8 @@ machine). %prep %setup -q # Upstream Patches +%patch1 -p1 +%patch2 -p1 # SUSE Only %patch70 -p1 %patch71 -p1