From 379e4bcce500bbb2506af6848b7053b4d172a6fc Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A1n=20Tomko?= Date: Fri, 26 Apr 2013 18:05:46 +0200 Subject: [PATCH] qemu: prevent invalid reads in qemuAssignDevicePCISlots Don't reserve slot 2 for video if the machine has no PCI buses. Error out when the user specifies a video device without a PCI address when there are no PCI buses. (This wouldn't work on a machine with no PCI bus anyway since we do add PCI addresses for video devices to the command line) --- src/qemu/qemu_command.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index aa69dca36f..d23bdfcec9 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1909,6 +1909,9 @@ qemuAssignDevicePCISlots(virDomainDefPtr def, primaryVideo->info.addr.pci.function = 0; addrptr = &primaryVideo->info.addr.pci; + if (!qemuPCIAddressValidate(addrs, addrptr)) + goto error; + if (qemuDomainPCIAddressSlotInUse(addrs, addrptr)) { if (qemuDeviceVideoUsable) { virResetLastError(); @@ -1935,7 +1938,7 @@ qemuAssignDevicePCISlots(virDomainDefPtr def, /* If TYPE==PCI, then qemuCollectPCIAddress() function * has already reserved the address, so we must skip */ } - } else if (!qemuDeviceVideoUsable) { + } else if (addrs->nbuses && !qemuDeviceVideoUsable) { memset(&tmp_addr, 0, sizeof(tmp_addr)); tmp_addr.slot = 2; -- 2.47.2