On Thu, May 19, 2011 at 08:41:48AM +0800, Wen Congyang wrote: > At 05/19/2011 01:08 AM, Daniel P. Berrange Write: > > 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 | 14 ++++++++------ > > 1 files changed, 8 insertions(+), 6 deletions(-) > > > > diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c > > index fcf8f9c..4d7bc38 100644 > > --- a/src/qemu/qemu_migration.c > > +++ b/src/qemu/qemu_migration.c > > @@ -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"); > > This duplicates my patch: > > https://www.redhat.com/archives/libvir-list/2011-May/msg01095.html I fixed it with the second chunk of this patch originally, but pulled in the change that you made too, for added safety. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list