From 56a77b4920e2a1e027be9f133fab469599864bc9 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Thu, 30 Jun 2011 15:01:54 +0100 Subject: [PATCH] Fix use of uninitialized memory when releasing PCI slots The 'function' field in the PCI address was not correctly initialized, so it was building the wrong address address string and so not removing all functions from the in use list. * src/qemu/qemu_command.c: Fix initialization of PCI function --- src/qemu/qemu_command.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 7ac1faf9f5..90a6653d6f 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -931,14 +931,14 @@ int qemuDomainPCIAddressReleaseSlot(qemuDomainPCIAddressSetPtr addrs, int slot) { virDomainDeviceInfo dev; char *addr; - int function; int ret = 0; + unsigned int *function = &dev.addr.pci.function; dev.addr.pci.domain = 0; dev.addr.pci.bus = 0; dev.addr.pci.slot = slot; - for (function = 0; function <= QEMU_PCI_ADDRESS_LAST_FUNCTION; function++) { + for (*function = 0; *function <= QEMU_PCI_ADDRESS_LAST_FUNCTION; (*function)++) { addr = qemuPCIAddressAsString(&dev); if (!addr) return -1; @@ -950,7 +950,7 @@ int qemuDomainPCIAddressReleaseSlot(qemuDomainPCIAddressSetPtr addrs, int slot) VIR_FREE(addr); - if (qemuDomainPCIAddressReleaseFunction(addrs, slot, function) < 0) + if (qemuDomainPCIAddressReleaseFunction(addrs, slot, *function) < 0) ret = -1; } -- GitLab