On Mon, Dec 01, 2008 at 09:16:10AM +0000, Ron Yorston wrote:
"Daniel P. Berrange" <berrange(a)redhat.com> wrote:
> static int umlDomainShutdown(virDomainPtr dom) {
>- struct uml_driver *driver = (struct uml_driver *)dom->conn->privateData;
>- virDomainObjPtr vm = virDomainFindByID(&driver->domains, dom->id);
>- char* info;
>+ struct uml_driver *driver = dom->conn->privateData;
>+ virDomainObjPtr vm;
>+ char *info;
>+ int ret = -1;
>
>+ vm = virDomainFindByID(&driver->domains, dom->id);
> if (!vm) {
> umlReportError(dom->conn, dom, NULL, VIR_ERR_INVALID_DOMAIN,
> _("no domain with matching id %d"), dom->id);
>- return -1;
>+ goto cleanup;
> }
>
> #if 0
> if (umlMonitorCommand(driver, vm, "system_powerdown", &info) <
0) {
> umlReportError(dom->conn, dom, NULL, VIR_ERR_OPERATION_FAILED,
> "%s", _("shutdown operation failed"));
>- return -1;
>+ goto cleanup;
> }
>+ ret = 0;
> #endif
>+
>+cleanup:
> VIR_FREE(info);
>- return 0;
>+ return ret;
>
> }
info should be initialised to NULL, otherwise the VIR_FREE will fail.
With the umlMonitorCommand if'ed out this is also broken before the
patch, which is how I came to notice it.
Yes indeed this entire method is on my hit list, since it actually
needs implementing for real !
Daniel
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://ovirt.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|