mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-22 22:13:18 +00:00
util: Fix for NULL dereference
The device xml parser code does not set "model" while parsing the following XML: <interface type='hostdev'> <source> <address type='pci' domain='0x0002' bus='0x01' slot='0x00' function='0x2'/> </source> </interface> The net->model can be NULL and therefore must be compared using STREQ_NULLABLE instead of plain STREQ. Fixes:ac47e4a622
(qemu: replace "def->nets[i]" with "net" and "def->sounds[i]" with "sound") Fixes:c7fc151eec
(qemu: assign virtio devices to PCIe slot when appropriate) Signed-off-by: Radoslaw Biernacki <radoslaw.biernacki@linaro.org> Signed-off-by: dann frazier <dann.frazier@canonical.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
10bca495e0
commit
8fac64db5e
@ -230,10 +230,8 @@ qemuDomainAssignSpaprVIOAddresses(virDomainDefPtr def)
|
|||||||
for (i = 0; i < def->nnets; i++) {
|
for (i = 0; i < def->nnets; i++) {
|
||||||
virDomainNetDefPtr net = def->nets[i];
|
virDomainNetDefPtr net = def->nets[i];
|
||||||
|
|
||||||
if (net->model &&
|
if (STREQ_NULLABLE(net->model, "spapr-vlan"))
|
||||||
STREQ(net->model, "spapr-vlan")) {
|
|
||||||
net->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO;
|
net->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO;
|
||||||
}
|
|
||||||
|
|
||||||
if (qemuDomainAssignSpaprVIOAddress(def, &net->info, VIO_ADDR_NET) < 0)
|
if (qemuDomainAssignSpaprVIOAddress(def, &net->info, VIO_ADDR_NET) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -322,8 +320,7 @@ qemuDomainPrimeVirtioDeviceAddresses(virDomainDefPtr def,
|
|||||||
for (i = 0; i < def->nnets; i++) {
|
for (i = 0; i < def->nnets; i++) {
|
||||||
virDomainNetDefPtr net = def->nets[i];
|
virDomainNetDefPtr net = def->nets[i];
|
||||||
|
|
||||||
if (net->model &&
|
if (STREQ_NULLABLE(net->model, "virtio") &&
|
||||||
STREQ(net->model, "virtio") &&
|
|
||||||
net->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) {
|
net->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) {
|
||||||
net->info.type = type;
|
net->info.type = type;
|
||||||
}
|
}
|
||||||
@ -691,14 +688,14 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDefPtr dev,
|
|||||||
* addresses for other hostdev devices.
|
* addresses for other hostdev devices.
|
||||||
*/
|
*/
|
||||||
if (net->type == VIR_DOMAIN_NET_TYPE_HOSTDEV ||
|
if (net->type == VIR_DOMAIN_NET_TYPE_HOSTDEV ||
|
||||||
STREQ(net->model, "usb-net")) {
|
STREQ_NULLABLE(net->model, "usb-net")) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (STREQ(net->model, "virtio"))
|
if (STREQ_NULLABLE(net->model, "virtio"))
|
||||||
return virtioFlags;
|
return virtioFlags;
|
||||||
|
|
||||||
if (STREQ(net->model, "e1000e"))
|
if (STREQ_NULLABLE(net->model, "e1000e"))
|
||||||
return pcieFlags;
|
return pcieFlags;
|
||||||
|
|
||||||
return pciFlags;
|
return pciFlags;
|
||||||
|
Loading…
Reference in New Issue
Block a user