[libvirt] [PATCHv2 06/14] qemu: Implement request of vCPU state using the guest agent
Daniel P. Berrange
berrange at redhat.com
Fri Jun 7 14:48:39 UTC 2013
On Wed, Jun 05, 2013 at 03:43:57PM +0200, Peter Krempa wrote:
> This patch implements the VIR_DOMAIN_VCPU_AGENT flag for the
> qemuDomainGetVcpusFlags() libvirt API implementation.
> ---
> src/qemu/qemu_driver.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++----
> 1 file changed, 56 insertions(+), 4 deletions(-)
>
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 3db21d4..2922fce 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -4406,17 +4406,24 @@ static int
> qemuDomainGetVcpusFlags(virDomainPtr dom, unsigned int flags)
> {
> virQEMUDriverPtr driver = dom->conn->privateData;
> + qemuDomainObjPrivatePtr priv;
> virDomainObjPtr vm;
> virDomainDefPtr def;
> int ret = -1;
> virCapsPtr caps = NULL;
> + qemuAgentCPUInfoPtr cpuinfo = NULL;
> + int ncpuinfo;
This is not initialized here
> +
> + if (!virDomainObjIsActive(vm)) {
> + virReportError(VIR_ERR_OPERATION_INVALID, "%s",
> + _("domain is not running"));
> + goto endjob;
> + }
This 'goto' jumps over the only initialization of 'ncpuinfo':
> +
> + qemuDomainObjEnterAgent(vm);
> + ncpuinfo = qemuAgentGetVCPUs(priv->agent, &cpuinfo);
> + qemuDomainObjExitAgent(vm);
> +
> +endjob:
> + if (qemuDomainObjEndJob(driver, vm) == 0)
> + vm = NULL;
> +
> + if (ncpuinfo < 0)
> + goto cleanup;
So here you're accessing uninitialized memory.
CC libvirt_driver_qemu_impl_la-qemu_driver.lo
qemu/qemu_driver.c: In function 'qemuDomainGetVcpusFlags':
qemu/qemu_driver.c:4573:9: error: 'ncpuinfo' may be used uninitialized in this function [-Werror=maybe-uninitialized]
qemu/qemu_driver.c: At top level:
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 :|
More information about the libvir-list
mailing list