[libvirt] [PATCH 3/4] util: Fix for NULL dereference
Radoslaw Biernacki
radoslaw.biernacki at linaro.org
Sat Nov 17 19:41:33 UTC 2018
On Thu, 15 Nov 2018 at 12:23, Michal Privoznik <mprivozn at redhat.com> wrote:
> On 11/10/2018 01:56 PM, Radoslaw Biernacki wrote:
> > The device xml parser code does not set "model" while parsing
> > <interface type='hostdev'>
> > <source>
> > <address type='pci' domain='0x0002' bus='0x01' slot='0x00'
> function='0x2'/>
> > </source>
> > </interface>
> > virDomainDefPtr def->nets[i]->model can be NULL while latter compares
> strings with
> > STREQ instead of STREQ_NULLABLE.
> >
> > Fixes: ac47e4a6225 (qemu: replace "def->nets[i]" with "net" and
> "def->sounds[i]" with "sound")
> > Fixes: c7fc151eec7 (qemu: assign virtio devices to PCIe slot when
> appropriate)
> > Signed-off-by: Radoslaw Biernacki <radoslaw.biernacki at linaro.org>
> > ---
> > src/qemu/qemu_domain_address.c | 11 +++++------
> > 1 file changed, 5 insertions(+), 6 deletions(-)
> >
> > diff --git a/src/qemu/qemu_domain_address.c
> b/src/qemu/qemu_domain_address.c
> > index 27c9bfb946..15d25481d8 100644
> > --- a/src/qemu/qemu_domain_address.c
> > +++ b/src/qemu/qemu_domain_address.c
> > @@ -232,8 +232,7 @@ qemuDomainAssignSpaprVIOAddresses(virDomainDefPtr
> def)
> > for (i = 0; i < def->nnets; i++) {
> > virDomainNetDefPtr net = def->nets[i];
> >
> > - if (net->model &&
> > - STREQ(net->model, "spapr-vlan")) {
> > + if (STREQ_NULLABLE(net->model, "spapr-vlan")) {
> > net->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO;
> > }
>
> We don't require curly braces around single line bodies. Actually the
> opposite, our coding style says there should be none. This exception to
> the rule was discussed many times but without any result. Anyway, 'make
> syntax-check' would have caught this.
>
Sorry Michal, overlooked that.
Fixed in v2.
>
> >
> > @@ -325,7 +324,7 @@ qemuDomainPrimeVirtioDeviceAddresses(virDomainDefPtr
> def,
> > virDomainNetDefPtr net = def->nets[i];
> >
> > if (net->model &&
> > - STREQ(net->model, "virtio") &&
> > + STREQ_NULLABLE(net->model, "virtio") &&
>
> Looks like you've forgotten to remove net->model check ;-)
>
> > net->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) {
> > net->info.type = type;
> > }
> > @@ -634,14 +633,14 @@
> qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDefPtr dev,
> > * addresses for other hostdev devices.
> > */
> > if (net->type == VIR_DOMAIN_NET_TYPE_HOSTDEV ||
> > - STREQ(net->model, "usb-net")) {
> > + STREQ_NULLABLE(net->model, "usb-net")) {
> > return 0;
> > }
> >
> > - if (STREQ(net->model, "virtio"))
> > + if (STREQ_NULLABLE(net->model, "virtio"))
> > return virtioFlags;
> >
> > - if (STREQ(net->model, "e1000e"))
> > + if (STREQ_NULLABLE(net->model, "e1000e"))
> > return pcieFlags;
> >
> > return pciFlags;
> >
>
> The rest looks okay.
>
> Michal
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20181117/495ce3f0/attachment-0001.htm>
More information about the libvir-list
mailing list