Check NULL parameter inputs
Signed-off-by: Chunyan Liu <cyliu(a)suse.com>
---
src/util/virhostdev.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 59 insertions(+), 0 deletions(-)
diff --git a/src/util/virhostdev.c b/src/util/virhostdev.c
index 9c189a7..73844a6 100644
--- a/src/util/virhostdev.c
+++ b/src/util/virhostdev.c
@@ -440,6 +440,11 @@ virHostdevPreparePciHostdevs(virHostdevManagerPtr hostdev_mgr,
size_t i;
int ret = -1;
+ if (!nhostdevs)
+ return 0;
+ if (hostdev_mgr == NULL)
+ return -1;
+
virObjectLock(hostdev_mgr->activePciHostdevs);
virObjectLock(hostdev_mgr->inactivePciHostdevs);
@@ -675,6 +680,11 @@ virHostdevReAttachPciHostdevs(virHostdevManagerPtr hostdev_mgr,
virPCIDeviceListPtr pcidevs;
size_t i;
+ if (!nhostdevs)
+ return;
+ if (hostdev_mgr == NULL)
+ return;
+
virObjectLock(hostdev_mgr->activePciHostdevs);
virObjectLock(hostdev_mgr->inactivePciHostdevs);
@@ -763,6 +773,11 @@ virHostdevUpdateActivePciHostdevs(virHostdevManagerPtr mgr,
size_t i;
int ret = -1;
+ if (!nhostdevs)
+ return 0;
+ if (mgr == NULL)
+ return -1;
+
virObjectLock(mgr->activePciHostdevs);
virObjectLock(mgr->inactivePciHostdevs);
@@ -823,6 +838,11 @@ virHostdevUpdateActiveUsbHostdevs(virHostdevManagerPtr mgr,
size_t i;
int ret = -1;
+ if (!nhostdevs)
+ return 0;
+ if (mgr == NULL)
+ return -1;
+
virObjectLock(mgr->activeUsbHostdevs);
for (i = 0; i < nhostdevs; i++) {
virUSBDevicePtr usb = NULL;
@@ -870,6 +890,11 @@ virHostdevUpdateActiveScsiHostdevs(virHostdevManagerPtr mgr,
virSCSIDevicePtr scsi = NULL;
virSCSIDevicePtr tmp = NULL;
+ if (!nhostdevs)
+ return 0;
+ if (mgr == NULL)
+ return -1;
+
virObjectLock(mgr->activeScsiHostdevs);
for (i = 0; i < nhostdevs; i++) {
hostdev = hostdevs[i];
@@ -1068,6 +1093,11 @@ virHostdevPrepareUsbHostdevs(virHostdevManagerPtr hostdev_mgr,
virUSBDevicePtr tmp;
bool coldBoot = !!(flags & VIR_COLD_BOOT);
+ if (!nhostdevs)
+ return 0;
+ if (hostdev_mgr == NULL)
+ return -1;
+
/* To prevent situation where USB device is assigned to two domains
* we need to keep a list of currently assigned USB devices.
* This is done in several loops which cannot be joined into one big
@@ -1137,6 +1167,11 @@ virHostdevPrepareScsiHostdevs(virHostdevManagerPtr hostdev_mgr,
virSCSIDeviceListPtr list;
virSCSIDevicePtr tmp;
+ if (!nhostdevs)
+ return 0;
+ if (hostdev_mgr == NULL)
+ return -1;
+
/* To prevent situation where SCSI device is assigned to two domains
* we need to keep a list of currently assigned SCSI devices.
* This is done in several loops which cannot be joined into one big
@@ -1245,6 +1280,12 @@ virHostdevReAttachUsbHostdevs(virHostdevManagerPtr hostdev_mgr,
int nhostdevs)
{
size_t i;
+
+ if (!nhostdevs)
+ return;
+ if (hostdev_mgr == NULL)
+ return;
+
virObjectLock(hostdev_mgr->activeUsbHostdevs);
for (i = 0; i < nhostdevs; i++) {
virDomainHostdevDefPtr hostdev = hostdevs[i];
@@ -1311,6 +1352,11 @@ virHostdevReAttachScsiHostdevs(virHostdevManagerPtr hostdev_mgr,
{
size_t i;
+ if (!nhostdevs)
+ return;
+ if (hostdev_mgr == NULL)
+ return;
+
virObjectLock(hostdev_mgr->activeScsiHostdevs);
for (i = 0; i < nhostdevs; i++) {
virDomainHostdevDefPtr hostdev = hostdevs[i];
@@ -1371,6 +1417,9 @@ virHostdevPciNodeDeviceDetach(virHostdevManagerPtr hostdev_mgr,
{
int ret = -1;
+ if (hostdev_mgr == NULL || pci == NULL)
+ return -1;
+
virObjectLock(hostdev_mgr->activePciHostdevs);
virObjectLock(hostdev_mgr->inactivePciHostdevs);
@@ -1393,6 +1442,9 @@ virHostdevPciNodeDeviceReAttach(virHostdevManagerPtr hostdev_mgr,
virPCIDevicePtr other;
int ret = -1;
+ if (hostdev_mgr == NULL || pci == NULL)
+ return -1;
+
virObjectLock(hostdev_mgr->activePciHostdevs);
virObjectLock(hostdev_mgr->inactivePciHostdevs);
other = virPCIDeviceListFind(hostdev_mgr->activePciHostdevs, pci);
@@ -1432,6 +1484,10 @@ virHostdevPciNodeDeviceReset(virHostdevManagerPtr hostdev_mgr,
virPCIDevicePtr pci)
{
int ret = -1;
+
+ if (hostdev_mgr == NULL || pci == NULL)
+ return -1;
+
virObjectLock(hostdev_mgr->activePciHostdevs);
virObjectLock(hostdev_mgr->inactivePciHostdevs);
if (virPCIDeviceReset(pci, hostdev_mgr->activePciHostdevs,
@@ -1522,6 +1578,9 @@ virHostdevUpdateDomainActiveHostdevs(virHostdevManagerPtr mgr,
if (!def->nhostdevs)
return 0;
+ if (mgr == NULL)
+ return -1;
+
if (flags & VIR_SP_PCI_HOSTDEV) {
if (virHostdevUpdateActivePciHostdevs(mgr,
def->hostdevs,
--
1.6.0.2