mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 12:35:17 +00:00
virpci: Resolve coverity issues
Coverity complains about "USE_AFTER_FREE" due to how virPCIDeviceSetStubDriver "could" return either -1, 0, or 1 from the VIR_STRDUP() and then possibly makes a call to virPCIDeviceDetach(). The only way this could happen is if NULL were passed as the "driver" name and virStrdup() returned 0. Since the calling functions check < 0 on the initial function call, the 0 possibility causes Coverity to complain. To fix this - enforce that the second parameter is not NULL using ATTRIBUTE_NONNULL(2) for the function prototype, then in virPCIDeviceDetach add an sa_assert(dev->stubDriver). This will result in Coverity not complaining any more.
This commit is contained in:
parent
f336b1cccb
commit
b60644f38f
@ -1327,6 +1327,8 @@ virPCIDeviceDetach(virPCIDevicePtr dev,
|
|||||||
virPCIDeviceList *activeDevs,
|
virPCIDeviceList *activeDevs,
|
||||||
virPCIDeviceList *inactiveDevs)
|
virPCIDeviceList *inactiveDevs)
|
||||||
{
|
{
|
||||||
|
sa_assert(dev->stubDriver);
|
||||||
|
|
||||||
if (virPCIProbeStubDriver(dev->stubDriver) < 0)
|
if (virPCIProbeStubDriver(dev->stubDriver) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@ -1657,7 +1659,7 @@ int
|
|||||||
virPCIDeviceSetStubDriver(virPCIDevicePtr dev, const char *driver)
|
virPCIDeviceSetStubDriver(virPCIDevicePtr dev, const char *driver)
|
||||||
{
|
{
|
||||||
VIR_FREE(dev->stubDriver);
|
VIR_FREE(dev->stubDriver);
|
||||||
return driver ? VIR_STRDUP(dev->stubDriver, driver) : 0;
|
return VIR_STRDUP(dev->stubDriver, driver);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
|
@ -63,7 +63,8 @@ void virPCIDeviceSetManaged(virPCIDevice *dev,
|
|||||||
bool managed);
|
bool managed);
|
||||||
unsigned int virPCIDeviceGetManaged(virPCIDevice *dev);
|
unsigned int virPCIDeviceGetManaged(virPCIDevice *dev);
|
||||||
int virPCIDeviceSetStubDriver(virPCIDevicePtr dev,
|
int virPCIDeviceSetStubDriver(virPCIDevicePtr dev,
|
||||||
const char *driver);
|
const char *driver)
|
||||||
|
ATTRIBUTE_NONNULL(2);
|
||||||
const char *virPCIDeviceGetStubDriver(virPCIDevicePtr dev);
|
const char *virPCIDeviceGetStubDriver(virPCIDevicePtr dev);
|
||||||
void virPCIDeviceSetUsedBy(virPCIDevice *dev,
|
void virPCIDeviceSetUsedBy(virPCIDevice *dev,
|
||||||
const char *used_by);
|
const char *used_by);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user