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


Reply via email to