Hello community, here is the log from the commit of package gnome-boxes for openSUSE:Factory checked in at 2016-11-03 12:56:50 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gnome-boxes (Old) and /work/SRC/openSUSE:Factory/.gnome-boxes.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-boxes" Changes: -------- --- /work/SRC/openSUSE:Factory/gnome-boxes/gnome-boxes.changes 2016-10-18 10:27:46.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.gnome-boxes.new/gnome-boxes.changes 2016-11-03 12:56:51.000000000 +0100 @@ -1,0 +2,7 @@ +Wed Oct 26 16:13:26 UTC 2016 - cbosdon...@suse.com + +- Add + ad606291-vm-configurator-Don-t-access-invalid-device-objects.patch: + Fix crash in update_existing_domain() (boo#1005488, bgo#769718). + +------------------------------------------------------------------- New: ---- ad606291-vm-configurator-Don-t-access-invalid-device-objects.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gnome-boxes.spec ++++++ --- /var/tmp/diff_new_pack.bho76M/_old 2016-11-03 12:56:53.000000000 +0100 +++ /var/tmp/diff_new_pack.bho76M/_new 2016-11-03 12:56:53.000000000 +0100 @@ -25,6 +25,8 @@ Group: System/GUI/GNOME Url: https://live.gnome.org/Design/Apps/Boxes Source: http://download.gnome.org/sources/gnome-boxes/3.22/%{name}-%{version}.tar.xz +# PATCH-FIX-UPSTREAM ad606291-vm-configurator-Don-t-access-invalid-device-objects.patch boo#1005488 bgo#769718 cbosdon...@suse.com -- Fix crash in update_existing_domain() +Patch0: ad606291-vm-configurator-Don-t-access-invalid-device-objects.patch # For directory ownership BuildRequires: gnome-shell BuildRequires: intltool >= 0.40.0 @@ -86,6 +88,7 @@ %lang_package %prep %setup -q +%patch0 -p1 %if !0%{?is_opensuse} translation-update-upstream %endif ++++++ ad606291-vm-configurator-Don-t-access-invalid-device-objects.patch ++++++ >From ad60629187c21b8fd9335e1aa83f5dceee12a56f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Bosdonnat?= <cbosdon...@suse.com> Date: Wed, 26 Oct 2016 17:38:53 +0200 Subject: [PATCH] vm-configurator: Don't access invalid device objects The GVirConfig.DomainInterface or GVirConfig.DomainGraphics references kept in update_existing_domain() will get their XML node destroyed when running GVirConfig.Domain.set_devices(). To workaround this problem, add the updated devices to the devices list before calling set_devices(). https://bugzilla.gnome.org/show_bug.cgi?id=769718 --- src/vm-configurator.vala | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/vm-configurator.vala b/src/vm-configurator.vala index 3efe1e6..94f4341 100644 --- a/src/vm-configurator.vala +++ b/src/vm-configurator.vala @@ -74,7 +74,8 @@ public static Domain create_domain_config (InstallerMedia install_media, string set_target_media_config (domain, target_path, install_media); install_media.setup_domain_config (domain); - add_graphics_device (domain); + var graphics = create_graphics_device (); + domain.add_device (graphics); // SPICE agent channel. This is needed for features like copy&paste between host and guest etc to work. var channel = new DomainChannel (); @@ -106,7 +107,10 @@ public static Domain create_domain_config (InstallerMedia install_media, string console.set_source (new DomainChardevSourcePty ()); domain.add_device (console); - add_network_interface (domain, is_libvirt_bridge_net_available (), install_media.supports_virtio_net); + var iface = create_network_interface (domain, + is_libvirt_bridge_net_available (), + install_media.supports_virtio_net); + domain.add_device (iface); return domain; } @@ -260,19 +264,20 @@ else if (device is DomainGraphicsSpice) else devices.prepend (device); } - devices.reverse (); - domain.set_devices (devices); // If user interface device was found and removed, let's add bridge device now. if (iface != null) { var bridge = is_libvirt_bridge_net_available (); var virtio = iface.get_model () == "virtio"; - add_network_interface (domain, bridge, virtio); + devices.prepend (create_network_interface (domain, bridge, virtio)); } if (graphics != null) - add_graphics_device (domain); + devices.prepend (create_graphics_device ()); + + devices.reverse (); + domain.set_devices (devices); } public static void set_target_media_config (Domain domain, @@ -488,30 +493,31 @@ public static void add_usb_support (Domain domain) { domain.add_device (controller); } - public static void add_network_interface (Domain domain, bool bridge, bool virtio) { + public static DomainInterface create_network_interface (Domain domain, bool bridge, bool virtio) { DomainInterface iface; if (bridge) { - debug ("Adding bridge network to %s", domain.get_name ()); + debug ("Creating bridge network device for %", domain.get_name ()); var bridge_iface = new DomainInterfaceBridge (); bridge_iface.set_source ("virbr0"); iface = bridge_iface; } else { - debug ("Adding user network to %s", domain.get_name ()); + debug ("Creating user network device for %", domain.get_name ()); iface = new DomainInterfaceUser (); } if (virtio) iface.set_model ("virtio"); - domain.add_device (iface); + return iface; } - public static void add_graphics_device (Domain domain) { + public static DomainGraphicsSpice create_graphics_device () { var graphics = new DomainGraphicsSpice (); graphics.set_autoport (false); graphics.set_image_compression (DomainGraphicsSpiceImageCompression.OFF); - domain.add_device (graphics); + + return graphics; } private static DomainControllerUsb create_usb_controller (DomainControllerUsbModel model, -- 2.10.1