]> xenbits.xensource.com Git - libvirt.git/commitdiff
Fix QEMU migration cookie crash for guests with no graphics
authorDaniel P. Berrange <berrange@redhat.com>
Tue, 17 May 2011 08:54:22 +0000 (04:54 -0400)
committerDaniel P. Berrange <berrange@redhat.com>
Thu, 19 May 2011 11:13:00 +0000 (07:13 -0400)
When generating a cookie for a guest with no data, the
QEMU_MIGRATION_COOKIE_GRAPHICS flag was set even if no
graphics data was added. Avoid setting the flag unless
it was needed, also add a safety check for mig->graphics
being non-NULL

* src/qemu/qemu_migration.c: Avoid cookie crash for guest
  with no graphics

src/qemu/qemu_migration.c

index fcf8f9c85e86960002ad0f4143147287b6691ab9..4d7bc38c4caba808e3eff64551fdce2f973bc073 100644 (file)
@@ -252,11 +252,12 @@ qemuMigrationCookieAddGraphics(qemuMigrationCookiePtr mig,
 
     if (dom->def->ngraphics == 1 &&
         (dom->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC ||
-         dom->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE) &&
-        !(mig->graphics = qemuMigrationCookieGraphicsAlloc(driver, dom->def->graphics[0])))
-        return -1;
-
-    mig->flags |= QEMU_MIGRATION_COOKIE_GRAPHICS;
+         dom->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE)) {
+        if (!(mig->graphics =
+              qemuMigrationCookieGraphicsAlloc(driver, dom->def->graphics[0])))
+            return -1;
+        mig->flags |= QEMU_MIGRATION_COOKIE_GRAPHICS;
+    }
 
     return 0;
 }
@@ -295,7 +296,8 @@ static void qemuMigrationCookieXMLFormat(virBufferPtr buf,
     virBufferEscapeString(buf, "  <hostname>%s</hostname>\n", mig->hostname);
     virBufferAsprintf(buf, "  <hostuuid>%s</hostuuid>\n", hostuuidstr);
 
-    if (mig->flags & QEMU_MIGRATION_COOKIE_GRAPHICS)
+    if ((mig->flags & QEMU_MIGRATION_COOKIE_GRAPHICS) &&
+        mig->graphics)
         qemuMigrationCookieGraphicsXMLFormat(buf, mig->graphics);
 
     virBufferAddLit(buf, "</qemu-migration>\n");