diff options
author | Michal Privoznik <mprivozn@redhat.com> | 2023-02-06 16:03:44 +0100 |
---|---|---|
committer | Michal Privoznik <mprivozn@redhat.com> | 2023-02-06 16:33:26 +0100 |
commit | 874e0916c31f5c663b93f2d20cf37bdac193f344 (patch) | |
tree | f4a5fffeb786dc39e4ff294b68d087510ceb5c17 /tests/virhostdevtest.c | |
parent | af954d60468b502ccb2ef29a1504c908d8f9d77d (diff) | |
download | libvirt-874e0916c31f5c663b93f2d20cf37bdac193f344.tar.gz |
virhostdevtest: Decrease possibility of uninitialized @subsys
With the current way the myInit() is written, it's fairly easy to
miss initialization of @subsys variable as the variable is
allocated firstly on the stack and then it's assigned to
hostdev[i] which was allocated using g_new0() (this it is
containing nothing but all zeroes).
Make the subsys point to the corresponding member in hostdev[i]
from the start. This way only the important bits are overwritten
and the rest stays initialized to zero.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
Diffstat (limited to 'tests/virhostdevtest.c')
-rw-r--r-- | tests/virhostdevtest.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/tests/virhostdevtest.c b/tests/virhostdevtest.c index 92bafcbb49..1aed0d2b6d 100644 --- a/tests/virhostdevtest.c +++ b/tests/virhostdevtest.c @@ -123,23 +123,23 @@ myInit(void) size_t i; for (i = 0; i < nhostdevs; i++) { - virDomainHostdevSubsys subsys = {0}; + virDomainHostdevSubsys *subsys; hostdevs[i] = virDomainHostdevDefNew(); if (!hostdevs[i]) goto cleanup; hostdevs[i]->mode = VIR_DOMAIN_HOSTDEV_MODE_SUBSYS; - subsys.type = VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI; - subsys.u.pci.addr.domain = 0; - subsys.u.pci.addr.bus = 0; - subsys.u.pci.addr.slot = i + 1; - subsys.u.pci.addr.function = 0; - subsys.u.pci.backend = VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO; - hostdevs[i]->source.subsys = subsys; + subsys = &hostdevs[i]->source.subsys; + subsys->type = VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI; + subsys->u.pci.addr.domain = 0; + subsys->u.pci.addr.bus = 0; + subsys->u.pci.addr.slot = i + 1; + subsys->u.pci.addr.function = 0; + subsys->u.pci.backend = VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO; } for (i = 0; i < nhostdevs; i++) { - virDomainHostdevSubsys subsys = hostdevs[i]->source.subsys; - if (!(dev[i] = virPCIDeviceNew(&subsys.u.pci.addr))) + virDomainHostdevSubsys *subsys = &hostdevs[i]->source.subsys; + if (!(dev[i] = virPCIDeviceNew(&subsys->u.pci.addr))) goto cleanup; virPCIDeviceSetStubDriver(dev[i], VIR_PCI_STUB_DRIVER_VFIO); |