-/*
+//*
* libvirt.c: Main interfaces for the libvirt library to handle virtualization
* domains from a process running in domain 0
*
if (virInitialize() < 0)
return -1;
- if (driver == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
+ virCheckNonNullArgReturn(driver, -1);
if (virNetworkDriverTabCount >= MAX_DRIVERS) {
virLibConnError(VIR_ERR_INTERNAL_ERROR,
if (virInitialize() < 0)
return -1;
- if (driver == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
+ virCheckNonNullArgReturn(driver, -1);
if (virInterfaceDriverTabCount >= MAX_DRIVERS) {
virLibConnError(VIR_ERR_INTERNAL_ERROR,
if (virInitialize() < 0)
return -1;
- if (driver == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
+ virCheckNonNullArgReturn(driver, -1);
if (virStorageDriverTabCount >= MAX_DRIVERS) {
virLibConnError(VIR_ERR_INTERNAL_ERROR,
if (virInitialize() < 0)
return -1;
- if (driver == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
+ virCheckNonNullArgReturn(driver, -1);
if (virDeviceMonitorTabCount >= MAX_DRIVERS) {
virLibConnError(VIR_ERR_INTERNAL_ERROR,
if (virInitialize() < 0)
return -1;
- if (driver == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
+ virCheckNonNullArgReturn(driver, -1);
if (virSecretDriverTabCount >= MAX_DRIVERS) {
virLibConnError(VIR_ERR_INTERNAL_ERROR,
if (virInitialize() < 0)
return -1;
- if (driver == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
+ virCheckNonNullArgReturn(driver, -1);
if (virNWFilterDriverTabCount >= MAX_DRIVERS) {
virLibConnError(VIR_ERR_INTERNAL_ERROR,
if (virInitialize() < 0)
return -1;
- if (driver == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
+ virCheckNonNullArgReturn(driver, -1);
if (virDriverTabCount >= MAX_DRIVERS) {
virLibConnError(VIR_ERR_INTERNAL_ERROR,
return -1;
}
- if (driver->no < 0) {
- virLibConnError(VIR_ERR_INVALID_ARG,
- _("Tried to register an internal Xen driver"));
- return -1;
- }
-
VIR_DEBUG ("registering %s as driver %d",
driver->name, virDriverTabCount);
if (virInitialize() < 0)
return -1;
- if (driver == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
+ virCheckNonNullArgReturn(driver, -1);
if (virStateDriverTabCount >= MAX_DRIVERS) {
virLibConnError(VIR_ERR_INTERNAL_ERROR,
STRCASEEQ(ret->uri->scheme, "xenapi") ||
#endif
false)) {
- virReportErrorHelper(VIR_FROM_NONE, VIR_ERR_INVALID_ARG,
+ virReportErrorHelper(VIR_FROM_NONE, VIR_ERR_CONFIG_UNSUPPORTED,
__FILE__, __FUNCTION__, __LINE__,
_("libvirt was built without the '%s' driver"),
ret->uri->scheme);
return -1;
}
- if (hvVer == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(hvVer, error);
if (conn->driver->version) {
int ret = conn->driver->version (conn, hvVer);
return -1;
}
- if (libVer == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(libVer, error);
if (conn->driver->libvirtVersion) {
ret = conn->driver->libvirtVersion(conn, libVer);
return -1;
}
- if ((ids == NULL) || (maxids < 0)) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(ids, error);
+ virCheckNonNegativeArgGoto(maxids, error);
if (conn->driver->listDomains) {
int ret = conn->driver->listDomains (conn, ids, maxids);
virDispatchError(NULL);
return NULL;
}
- if (xmlDesc == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xmlDesc, error);
if (conn->flags & VIR_CONNECT_RO) {
virLibConnError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
virDispatchError(NULL);
return NULL;
}
- if (id < 0) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNegativeArgGoto(id, error);
if (conn->driver->domainLookupByID) {
virDomainPtr ret;
virDispatchError(NULL);
return NULL;
}
- if (uuid == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(uuid, error);
if (conn->driver->domainLookupByUUID) {
virDomainPtr ret;
virDispatchError(NULL);
return NULL;
}
- if (uuidstr == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(uuidstr, error);
if (virUUIDParse(uuidstr, uuid) < 0) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(uuidstr,
+ _("uuidstr in %s must be a valid UUID"),
+ __FUNCTION__);
goto error;
}
virDispatchError(NULL);
return NULL;
}
- if (name == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(name, error);
if (conn->driver->domainLookupByName) {
virDomainPtr dom;
virDomainRef(virDomainPtr domain)
{
if ((!VIR_IS_CONNECTED_DOMAIN(domain))) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virLibConnError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
virDispatchError(NULL);
return -1;
}
goto error;
}
conn = domain->conn;
- if (to == NULL) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(to, error);
if (conn->driver->domainSave) {
int ret;
goto error;
}
conn = domain->conn;
- if (to == NULL) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(to, error);
if ((flags & VIR_DOMAIN_SAVE_RUNNING) && (flags & VIR_DOMAIN_SAVE_PAUSED)) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("running and paused flags are mutually exclusive"));
+ virReportInvalidArg(flags, "%s",
+ _("running and paused flags are mutually exclusive"));
goto error;
}
virLibConnError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if (from == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(from, error);
if (conn->driver->domainRestore) {
int ret;
virLibConnError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if (from == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(from, error);
if ((flags & VIR_DOMAIN_SAVE_RUNNING) && (flags & VIR_DOMAIN_SAVE_PAUSED)) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("running and paused flags are mutually exclusive"));
+ virReportInvalidArg(flags, "%s",
+ _("running and paused flags are mutually exclusive"));
goto error;
}
virDispatchError(NULL);
return NULL;
}
- if (file == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(file, error);
if ((conn->flags & VIR_CONNECT_RO) && (flags & VIR_DOMAIN_XML_SECURE)) {
virLibConnError(VIR_ERR_OPERATION_DENIED,
virLibConnError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if (!file || !dxml) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(file, error);
+ virCheckNonNullArgGoto(dxml, error);
if ((flags & VIR_DOMAIN_SAVE_RUNNING) && (flags & VIR_DOMAIN_SAVE_PAUSED)) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("running and paused flags are mutually exclusive"));
+ virReportInvalidArg(flags, "%s",
+ _("running and paused flags are mutually exclusive"));
goto error;
}
goto error;
}
conn = domain->conn;
- if (to == NULL) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(to, error);
if ((flags & VIR_DUMP_CRASH) && (flags & VIR_DUMP_LIVE)) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("crash and live flags are mutually exclusive"));
+ virReportInvalidArg(flags, "%s",
+ _("crash and live flags are mutually exclusive"));
goto error;
}
if ((flags & VIR_DUMP_CRASH) && (flags & VIR_DUMP_RESET)) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
+ virReportInvalidArg(flags, "%s",
_("crash and reset flags are mutually exclusive"));
goto error;
}
if ((flags & VIR_DUMP_LIVE) && (flags & VIR_DUMP_RESET)) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("live and reset flags are mutually exclusive"));
+ virReportInvalidArg(flags, "%s",
+ _("live and reset flags are mutually exclusive"));
goto error;
}
/* At most one of these two flags should be set. */
if ((flags & VIR_DOMAIN_SHUTDOWN_ACPI_POWER_BTN) &&
(flags & VIR_DOMAIN_SHUTDOWN_GUEST_AGENT)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(flags, "%s",
+ _("flags for acpi power button and guest agent are mutually exclusive"));
goto error;
}
/* At most one of these two flags should be set. */
if ((flags & VIR_DOMAIN_SHUTDOWN_ACPI_POWER_BTN) &&
(flags & VIR_DOMAIN_SHUTDOWN_GUEST_AGENT)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(flags, "%s",
+ _("flags for acpi power button and guest agent are mutually exclusive"));
goto error;
}
virDispatchError(NULL);
return -1;
}
- if (uuid == NULL) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- virDispatchError(domain->conn);
- return -1;
- }
+ virCheckNonNullArgReturn(uuid, -1);
memcpy(uuid, &domain->uuid[0], VIR_UUID_BUFLEN);
virDispatchError(NULL);
return -1;
}
- if (buf == NULL) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(buf, error);
if (virDomainGetUUID(domain, &uuid[0]))
goto error;
virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if (!memory) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonZeroArgGoto(memory, error);
+
conn = domain->conn;
if (conn->driver->domainSetMaxMemory) {
virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if (!memory) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonZeroArgGoto(memory, error);
conn = domain->conn;
virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
-
- if (!memory) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonZeroArgGoto(memory, error);
conn = domain->conn;
for (i = 0; i < nparams; i++) {
if (strnlen(params[i].field, VIR_TYPED_PARAM_FIELD_LENGTH) ==
VIR_TYPED_PARAM_FIELD_LENGTH) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("string parameter name '%.*s' too long"),
- VIR_TYPED_PARAM_FIELD_LENGTH,
- params[i].field);
- virDispatchError(NULL);
+ virReportInvalidArg(params,
+ _("string parameter name '%.*s' too long"),
+ VIR_TYPED_PARAM_FIELD_LENGTH,
+ params[i].field);
return -1;
}
if (params[i].type == VIR_TYPED_PARAM_STRING) {
if (string_okay) {
if (!params[i].value.s) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("NULL string parameter '%s'"),
- params[i].field);
- virDispatchError(NULL);
+ virReportInvalidArg(params,
+ _("NULL string parameter '%s'"),
+ params[i].field);
return -1;
}
} else {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("string parameter '%s' unsupported"),
- params[i].field);
- virDispatchError(NULL);
+ virReportInvalidArg(params,
+ _("string parameter '%s' unsupported"),
+ params[i].field);
return -1;
}
}
virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if ((nparams <= 0) || (params == NULL)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(params, error);
+ virCheckPositiveArgGoto(nparams, error);
+
if (virTypedParameterValidateSet(domain, params, nparams) < 0)
- return -1;
+ goto error;
conn = domain->conn;
virDispatchError(NULL);
return -1;
}
- if ((nparams == NULL) || (*nparams < 0) ||
- (params == NULL && *nparams != 0)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(nparams, error);
+ virCheckNonNegativeArgGoto(*nparams, error);
+ if (*nparams != 0)
+ virCheckNonNullArgGoto(params, error);
+
if (VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
VIR_DRV_FEATURE_TYPED_PARAM_STRING))
flags |= VIR_TYPED_PARAM_STRING_OKAY;
/* At most one of these two flags should be set. */
if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
(flags & VIR_DOMAIN_AFFECT_CONFIG)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(flags,
+ _("flags 'affect live' and 'affect config' in %s are mutually exclusive"),
+ __FUNCTION__);
goto error;
}
conn = domain->conn;
virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if ((nparams <= 0) || (params == NULL)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(params, error);
+ virCheckPositiveArgGoto(nparams, error);
if (virTypedParameterValidateSet(domain, params, nparams) < 0)
- return -1;
+ goto error;
conn = domain->conn;
virDispatchError(NULL);
return -1;
}
- if ((nparams == NULL) || (*nparams < 0) ||
- (params == NULL && *nparams != 0)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(nparams, error);
+ virCheckNonNegativeArgGoto(*nparams, error);
+ if (*nparams != 0)
+ virCheckNonNullArgGoto(params, error);
+
if (VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
VIR_DRV_FEATURE_TYPED_PARAM_STRING))
flags |= VIR_TYPED_PARAM_STRING_OKAY;
virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if ((nparams <= 0) || (params == NULL)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(params, error);
+ virCheckNonNegativeArgGoto(nparams, error);
+
if (virTypedParameterValidateSet(domain, params, nparams) < 0)
- return -1;
+ goto error;
conn = domain->conn;
virDispatchError(NULL);
return -1;
}
- if ((nparams == NULL) || (*nparams < 0) ||
- (params == NULL && *nparams != 0)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(nparams, error);
+ virCheckNonNegativeArgGoto(*nparams, error);
+ if (*nparams != 0)
+ virCheckNonNullArgGoto(params, error);
+
if (VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
VIR_DRV_FEATURE_TYPED_PARAM_STRING))
flags |= VIR_TYPED_PARAM_STRING_OKAY;
/* At most one of these two flags should be set. */
if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
(flags & VIR_DOMAIN_AFFECT_CONFIG)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(flags,
+ _("flags 'affect live' and 'affect config' in %s are mutually exclusive"),
+ __FUNCTION__);
goto error;
}
conn = domain->conn;
virDispatchError(NULL);
return -1;
}
- if (info == NULL) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(info, error);
memset(info, 0, sizeof(virDomainInfo));
virDispatchError(NULL);
return -1;
}
- if (!state) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(state, error);
conn = domain->conn;
if (conn->driver->domainGetState) {
return -1;
}
- if (!info) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(info, error);
conn = domain->conn;
if (conn->driver->domainGetControlInfo) {
return NULL;
}
- if (nativeFormat == NULL || nativeConfig == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(nativeFormat, error);
+ virCheckNonNullArgGoto(nativeConfig, error);
if (conn->driver->domainXMLFromNative) {
char *ret;
goto error;
}
- if (nativeFormat == NULL || domainXml == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(nativeFormat, error);
+ virCheckNonNullArgGoto(domainXml, error);
if (conn->driver->domainXMLToNative) {
char *ret;
return -1;
}
- if (!tempuri->server || STRPREFIX(tempuri->server, "localhost")) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ if (!tempuri->server) {
+ virReportInvalidArg(dconnuri,
+ _("unable to parse server from dconnuri in %s"),
+ __FUNCTION__);
+ virDispatchError(domain->conn);
+ virURIFree(tempuri);
+ return -1;
+ }
+ if (STRPREFIX(tempuri->server, "localhost")) {
+ virReportInvalidArg(dconnuri,
+ _("unable to parse server from dconnuri in %s"),
+ __FUNCTION__);
virDispatchError(domain->conn);
virURIFree(tempuri);
return -1;
goto error;
}
- if (duri == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(duri, error);
if (flags & VIR_MIGRATE_PEER2PEER) {
if (VIR_DRV_SUPPORTS_FEATURE (domain->conn->driver, domain->conn,
}
if (conn != st->conn) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(conn,
+ _("conn in %s must match stream connection"),
+ __FUNCTION__);
goto error;
}
}
if (conn != st->conn) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(conn,
+ _("conn in %s must match stream connection"),
+ __FUNCTION__);
goto error;
}
virDispatchError(NULL);
return -1;
}
- if (info == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(info, error);
if (conn->driver->nodeGetInfo) {
int ret;
return -1;
}
- if ((nparams == NULL) || (*nparams < 0) ||
- ((cpuNum < 0) && (cpuNum != VIR_NODE_CPU_STATS_ALL_CPUS))) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virCheckNonNullArgGoto(nparams, error);
+ virCheckNonNegativeArgGoto(*nparams, error);
+ if (((cpuNum < 0) && (cpuNum != VIR_NODE_CPU_STATS_ALL_CPUS))) {
+ virReportInvalidArg(cpuNum,
+ _("cpuNum in %s only accepts %d as a negative value"),
+ __FUNCTION__, VIR_NODE_CPU_STATS_ALL_CPUS);
goto error;
}
return -1;
}
- if ((nparams == NULL) || (*nparams < 0) ||
- ((cellNum < 0) && (cellNum != VIR_NODE_MEMORY_STATS_ALL_CELLS))) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virCheckNonNullArgGoto(nparams, error);
+ virCheckNonNegativeArgGoto(*nparams, error);
+ if (((cellNum < 0) && (cellNum != VIR_NODE_MEMORY_STATS_ALL_CELLS))) {
+ virReportInvalidArg(cpuNum,
+ _("cellNum in %s only accepts %d as a negative value"),
+ __FUNCTION__, VIR_NODE_MEMORY_STATS_ALL_CELLS);
goto error;
}
return -1;
}
- if (params == NULL || nparams == NULL || *nparams <= 0) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(params, error);
+ virCheckNonNullArgGoto(nparams, error);
+ virCheckPositiveArgGoto(*nparams, error);
conn = domain->conn;
return -1;
}
- if (params == NULL || nparams == NULL || *nparams <= 0) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(params, error);
+ virCheckNonNullArgGoto(nparams, error);
+ virCheckPositiveArgGoto(*nparams, error);
if (VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
VIR_DRV_FEATURE_TYPED_PARAM_STRING))
/* At most one of these two flags should be set. */
if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
(flags & VIR_DOMAIN_AFFECT_CONFIG)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(flags,
+ _("flags 'affect live' and 'affect config' in %s are mutually exclusive"),
+ __FUNCTION__);
goto error;
}
conn = domain->conn;
virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if (params == NULL || nparams < 0) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(params, error);
+ virCheckNonNegativeArgGoto(nparams, error);
+
if (virTypedParameterValidateSet(domain, params, nparams) < 0)
- return -1;
+ goto error;
conn = domain->conn;
virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if (params == NULL || nparams < 0) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(params, error);
+ virCheckNonNegativeArgGoto(nparams, error);
+
if (virTypedParameterValidateSet(domain, params, nparams) < 0)
- return -1;
+ goto error;
conn = domain->conn;
virDispatchError(NULL);
return -1;
}
- if (!disk || !stats || size > sizeof(stats2)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virCheckNonNullArgGoto(disk, error);
+ virCheckNonNullArgGoto(stats, error);
+ if (size > sizeof(stats2)) {
+ virReportInvalidArg(size,
+ _("size in %s must not exceed %zu"),
+ __FUNCTION__, sizeof(stats2));
goto error;
}
conn = dom->conn;
virDispatchError(NULL);
return -1;
}
- if (!disk || (nparams == NULL) || (*nparams < 0) ||
- (params == NULL && *nparams != 0)) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(disk, error);
+ virCheckNonNullArgGoto(nparams, error);
+ virCheckNonNegativeArgGoto(*nparams, error);
+ if (*nparams != 0)
+ virCheckNonNullArgGoto(params, error);
+
if (VIR_DRV_SUPPORTS_FEATURE(dom->conn->driver, dom->conn,
VIR_DRV_FEATURE_TYPED_PARAM_STRING))
flags |= VIR_TYPED_PARAM_STRING_OKAY;
virDispatchError(NULL);
return -1;
}
- if (!path || !stats || size > sizeof(stats2)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virCheckNonNullArgGoto(path, error);
+ virCheckNonNullArgGoto(stats, error);
+ if (size > sizeof(stats2)) {
+ virReportInvalidArg(size,
+ _("size in %s must not exceed %zu"),
+ __FUNCTION__, sizeof(stats2));
goto error;
}
+
conn = dom->conn;
if (conn->driver->domainInterfaceStats) {
virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if ((nparams <= 0) || (params == NULL)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(params, error);
+ virCheckPositiveArgGoto(nparams, error);
+
if (virTypedParameterValidateSet(domain, params, nparams) < 0)
- return -1;
+ goto error;
conn = domain->conn;
virDispatchError(NULL);
return -1;
}
- if ((nparams == NULL) || (*nparams < 0) ||
- (params == NULL && *nparams != 0)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(nparams, error);
+ virCheckNonNegativeArgGoto(*nparams, error);
+ if (*nparams != 0)
+ virCheckNonNullArgGoto(params, error);
+
if (VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
VIR_DRV_FEATURE_TYPED_PARAM_STRING))
flags |= VIR_TYPED_PARAM_STRING_OKAY;
goto error;
}
- if (!disk) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("disk is NULL"));
- goto error;
- }
+ virCheckNonNullArgGoto(disk, error);
/* Allow size == 0 as an access test. */
- if (size > 0 && !buffer) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("buffer is NULL"));
- goto error;
- }
+ if (size > 0)
+ virCheckNonNullArgGoto(buffer, error);
if (conn->driver->domainBlockPeek) {
int ret;
goto error;
}
- if (!disk) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("disk is NULL"));
- goto error;
- }
+ virCheckNonNullArgGoto(disk, error);
if (conn->driver->domainBlockResize) {
int ret;
/* Exactly one of these two flags must be set. */
if (!(flags & VIR_MEMORY_VIRTUAL) == !(flags & VIR_MEMORY_PHYSICAL)) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("flags parameter must include VIR_MEMORY_VIRTUAL or VIR_MEMORY_PHYSICAL"));
+ virReportInvalidArg(flags,
+ _("flags in %s must include VIR_MEMORY_VIRTUAL or VIR_MEMORY_PHYSICAL"),
+ __FUNCTION__);
goto error;
}
/* Allow size == 0 as an access test. */
- if (size > 0 && !buffer) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("buffer is NULL but size is non-zero"));
- goto error;
- }
+ if (size > 0)
+ virCheckNonNullArgGoto(buffer, error);
if (conn->driver->domainMemoryPeek) {
int ret;
virDispatchError(NULL);
return -1;
}
- if (disk == NULL || info == NULL) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(disk, error);
+ virCheckNonNullArgGoto(info, error);
memset(info, 0, sizeof(virDomainBlockInfo));
virLibConnError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if (xml == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xml, error);
if (conn->driver->domainDefineXML) {
virDomainPtr ret;
return -1;
}
- if ((names == NULL) || (maxnames < 0)) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(names, error);
+ virCheckNonNegativeArgGoto(maxnames, error);
if (conn->driver->listDefinedDomains) {
int ret;
virDispatchError(NULL);
return -1;
}
- if (!autostart) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(autostart, error);
conn = domain->conn;
goto error;
}
- if (nvcpus < 1) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonZeroArgGoto(nvcpus, error);
+
conn = domain->conn;
if (conn->driver->domainSetVcpus) {
goto error;
}
- /* Perform some argument validation common to all implementations. */
- if (nvcpus < 1) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonZeroArgGoto(nvcpus, error);
+
if ((unsigned short) nvcpus != nvcpus) {
virLibDomainError(VIR_ERR_OVERFLOW, _("input too large: %u"), nvcpus);
goto error;
/* At most one of these two flags should be set. */
if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
(flags & VIR_DOMAIN_AFFECT_CONFIG)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(flags,
+ _("flags 'affect live' and 'affect config' in %s are mutually exclusive"),
+ __FUNCTION__);
goto error;
}
conn = domain->conn;
goto error;
}
- if ((vcpu > 32000) || (cpumap == NULL) || (maplen < 1)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
+ virCheckNonNullArgGoto(cpumap, error);
+ virCheckPositiveArgGoto(maplen, error);
+
+ if ((unsigned short) vcpu != vcpu) {
+ virLibDomainError(VIR_ERR_OVERFLOW, _("input too large: %u"), vcpu);
+ goto error;
}
conn = domain->conn;
goto error;
}
- if ((vcpu > 32000) || (cpumap == NULL) || (maplen < 1)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virCheckNonNullArgGoto(cpumap, error);
+ virCheckPositiveArgGoto(maplen, error);
+
+ if ((unsigned short) vcpu != vcpu) {
+ virLibDomainError(VIR_ERR_OVERFLOW, _("input too large: %u"), vcpu);
goto error;
}
return -1;
}
- if (ncpumaps < 1 || !cpumaps || maplen <= 0) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(cpumaps, error);
+ virCheckPositiveArgGoto(ncpumaps, error);
+ virCheckPositiveArgGoto(maplen, error);
+
if (INT_MULTIPLY_OVERFLOW(ncpumaps, maplen)) {
virLibDomainError(VIR_ERR_OVERFLOW, _("input too large: %d * %d"),
ncpumaps, maplen);
/* At most one of these two flags should be set. */
if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
(flags & VIR_DOMAIN_AFFECT_CONFIG)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(flags,
+ _("flags 'affect live' and 'affect config' in %s are mutually exclusive"),
+ __FUNCTION__);
goto error;
}
conn = domain->conn;
virDispatchError(NULL);
return -1;
}
- if ((info == NULL) || (maxinfo < 1)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(info, error);
+ virCheckPositiveArgGoto(maxinfo, error);
/* Ensure that domainGetVcpus (aka remoteDomainGetVcpus) does not
try to memcpy anything into a NULL pointer. */
- if (!cpumaps ? maplen != 0 : maplen <= 0) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ if (cpumaps)
+ virCheckPositiveArgGoto(maplen, error);
+ else
+ virCheckZeroArgGoto(maplen, error);
+
if (cpumaps && INT_MULTIPLY_OVERFLOW(maxinfo, maplen)) {
virLibDomainError(VIR_ERR_OVERFLOW, _("input too large: %d * %d"),
maxinfo, maplen);
return -1;
}
- if (seclabel == NULL) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(seclabel, error);
conn = domain->conn;
switch (type) {
case VIR_DOMAIN_METADATA_TITLE:
if (metadata && strchr(metadata, '\n')) {
- virLibDomainError(VIR_ERR_INVALID_ARG, "%s",
- _("Domain title can't contain newlines"));
- goto error;
+ virReportInvalidArg(metadata,
+ _("metadata title in %s can't contain newlines"),
+ __FUNCTION__);
+ goto error;
}
/* fallthrough */
case VIR_DOMAIN_METADATA_DESCRIPTION:
- if (uri || key) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNullArgGoto(uri, error);
+ virCheckNullArgGoto(key, error);
break;
case VIR_DOMAIN_METADATA_ELEMENT:
- if (!uri || !key) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(uri, error);
+ virCheckNonNullArgGoto(key, error);
break;
default:
/* For future expansion */
if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
(flags & VIR_DOMAIN_AFFECT_CONFIG)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(flags,
+ _("flags 'affect live' and 'affect config' in %s are mutually exclusive"),
+ __FUNCTION__);
goto error;
}
switch (type) {
case VIR_DOMAIN_METADATA_TITLE:
case VIR_DOMAIN_METADATA_DESCRIPTION:
- if (uri) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNullArgGoto(uri, error);
break;
case VIR_DOMAIN_METADATA_ELEMENT:
- if (!uri) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(uri, error);
break;
default:
/* For future expansion */
return -1;
}
- if (secmodel == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(secmodel, error);
if (conn->driver->nodeGetSecurityModel) {
int ret;
return -1;
}
- if (xml == NULL) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xml, error);
if (domain->conn->flags & VIR_CONNECT_RO) {
virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
return -1;
}
- if (xml == NULL) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xml, error);
if (domain->conn->flags & VIR_CONNECT_RO) {
virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
return -1;
}
- if (xml == NULL) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xml, error);
if (domain->conn->flags & VIR_CONNECT_RO) {
virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
return -1;
}
- if (xml == NULL) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xml, error);
if (domain->conn->flags & VIR_CONNECT_RO) {
virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
return -1;
}
- if (xml == NULL) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xml, error);
if (domain->conn->flags & VIR_CONNECT_RO) {
virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
return -1;
}
- if ((freeMems == NULL) || (maxCells <= 0) || (startCell < 0)) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(freeMems, error);
+ virCheckPositiveArgGoto(maxCells, error);
+ virCheckNonNegativeArgGoto(startCell, error);
if (conn->driver->nodeGetCellsFreeMemory) {
int ret;
return -1;
}
- if ((names == NULL) || (maxnames < 0)) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(names, error);
+ virCheckNonNegativeArgGoto(maxnames, error);
if (conn->networkDriver && conn->networkDriver->listNetworks) {
int ret;
return -1;
}
- if ((names == NULL) || (maxnames < 0)) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(names, error);
+ virCheckNonNegativeArgGoto(maxnames, error);
if (conn->networkDriver && conn->networkDriver->listDefinedNetworks) {
int ret;
virDispatchError(NULL);
return NULL;
}
- if (name == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(name, error);
if (conn->networkDriver && conn->networkDriver->networkLookupByName) {
virNetworkPtr ret;
virDispatchError(NULL);
return NULL;
}
- if (uuid == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+
+ virCheckNonNullArgGoto(uuid, error);
if (conn->networkDriver && conn->networkDriver->networkLookupByUUID){
virNetworkPtr ret;
virDispatchError(NULL);
return NULL;
}
- if (uuidstr == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+
+ virCheckNonNullArgGoto(uuidstr, error);
if (virUUIDParse(uuidstr, uuid) < 0) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(uuidstr,
+ _("uuidstr in %s must be a valid UUID"),
+ __FUNCTION__);
goto error;
}
virDispatchError(NULL);
return NULL;
}
- if (xmlDesc == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xmlDesc, error);
+
if (conn->flags & VIR_CONNECT_RO) {
virLibConnError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
virLibConnError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if (xml == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xml, error);
if (conn->networkDriver && conn->networkDriver->networkDefineXML) {
virNetworkPtr ret;
virDispatchError(NULL);
return -1;
}
- if (uuid == NULL) {
- virLibNetworkError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(uuid, error);
memcpy(uuid, &network->uuid[0], VIR_UUID_BUFLEN);
virDispatchError(NULL);
return -1;
}
- if (buf == NULL) {
- virLibNetworkError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(buf, error);
if (virNetworkGetUUID(network, &uuid[0]))
goto error;
virDispatchError(NULL);
return -1;
}
- if (!autostart) {
- virLibNetworkError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(autostart, error);
conn = network->conn;
return -1;
}
- if ((names == NULL) || (maxnames < 0)) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(names, error);
+ virCheckNonNegativeArgGoto(maxnames, error);
if (conn->interfaceDriver && conn->interfaceDriver->listInterfaces) {
int ret;
return -1;
}
- if ((names == NULL) || (maxnames < 0)) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(names, error);
+ virCheckNonNegativeArgGoto(maxnames, error);
if (conn->interfaceDriver && conn->interfaceDriver->listDefinedInterfaces) {
int ret;
virDispatchError(NULL);
return NULL;
}
- if (name == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(name, error);
if (conn->interfaceDriver && conn->interfaceDriver->interfaceLookupByName) {
virInterfacePtr ret;
virDispatchError(NULL);
return NULL;
}
- if (macstr == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(macstr, error);
if (conn->interfaceDriver && conn->interfaceDriver->interfaceLookupByMACString) {
virInterfacePtr ret;
virLibConnError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if (xml == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xml, error);
if (conn->interfaceDriver && conn->interfaceDriver->interfaceDefineXML) {
virInterfacePtr ret;
return -1;
}
- if ((names == NULL) || (maxnames < 0)) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(names, error);
+ virCheckNonNegativeArgGoto(maxnames, error);
if (conn->storageDriver && conn->storageDriver->listPools) {
int ret;
return -1;
}
- if ((names == NULL) || (maxnames < 0)) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(names, error);
+ virCheckNonNegativeArgGoto(maxnames, error);
if (conn->storageDriver && conn->storageDriver->listDefinedPools) {
int ret;
virDispatchError(NULL);
return NULL;
}
- if (type == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(type, error);
if (conn->flags & VIR_CONNECT_RO) {
virLibConnError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
virDispatchError(NULL);
return NULL;
}
- if (name == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(name, error);
if (conn->storageDriver && conn->storageDriver->poolLookupByName) {
virStoragePoolPtr ret;
virDispatchError(NULL);
return NULL;
}
- if (uuid == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(uuid, error);
if (conn->storageDriver && conn->storageDriver->poolLookupByUUID) {
virStoragePoolPtr ret;
virDispatchError(NULL);
return NULL;
}
- if (uuidstr == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(uuidstr, error);
if (virUUIDParse(uuidstr, uuid) < 0) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(uuidstr,
+ _("uuidstr in %s must be a valid UUID"),
+ __FUNCTION__);
goto error;
}
virDispatchError(NULL);
return NULL;
}
- if (xmlDesc == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xmlDesc, error);
+
if (conn->flags & VIR_CONNECT_RO) {
virLibConnError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
virLibConnError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if (xml == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xml, error);
if (conn->storageDriver && conn->storageDriver->poolDefineXML) {
virStoragePoolPtr ret;
virStoragePoolRef(virStoragePoolPtr pool)
{
if ((!VIR_IS_CONNECTED_STORAGE_POOL(pool))) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virLibConnError(VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__);
virDispatchError(NULL);
return -1;
}
virDispatchError(NULL);
return -1;
}
- if (uuid == NULL) {
- virLibStoragePoolError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(uuid, error);
memcpy(uuid, &pool->uuid[0], VIR_UUID_BUFLEN);
virDispatchError(NULL);
return -1;
}
- if (buf == NULL) {
- virLibStoragePoolError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(buf, error);
if (virStoragePoolGetUUID(pool, &uuid[0]))
goto error;
virDispatchError(NULL);
return -1;
}
- if (info == NULL) {
- virLibStoragePoolError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(info, error);
memset(info, 0, sizeof(virStoragePoolInfo));
virDispatchError(NULL);
return -1;
}
- if (!autostart) {
- virLibStoragePoolError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(autostart, error);
conn = pool->conn;
return -1;
}
- if ((names == NULL) || (maxnames < 0)) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(names, error);
+ virCheckNonNegativeArgGoto(maxnames, error);
if (pool->conn->storageDriver && pool->conn->storageDriver->poolListVolumes) {
int ret;
virDispatchError(NULL);
return NULL;
}
- if (name == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+
+ virCheckNonNullArgGoto(name, error);
if (pool->conn->storageDriver && pool->conn->storageDriver->volLookupByName) {
virStorageVolPtr ret;
virDispatchError(NULL);
return NULL;
}
- if (key == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+
+ virCheckNonNullArgGoto(key, error);
if (conn->storageDriver && conn->storageDriver->volLookupByKey) {
virStorageVolPtr ret;
virDispatchError(NULL);
return NULL;
}
- if (path == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(path, error);
if (conn->storageDriver && conn->storageDriver->volLookupByPath) {
virStorageVolPtr ret;
return NULL;
}
- if (xmldesc == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xmldesc, error);
if (pool->conn->flags & VIR_CONNECT_RO) {
virLibConnError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if (xmldesc == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xmldesc, error);
if (pool->conn->flags & VIR_CONNECT_RO ||
clonevol->conn->flags & VIR_CONNECT_RO) {
virStorageVolRef(virStorageVolPtr vol)
{
if ((!VIR_IS_CONNECTED_STORAGE_VOL(vol))) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virLibConnError(VIR_ERR_INVALID_STORAGE_VOL, __FUNCTION__);
virDispatchError(NULL);
return -1;
}
virDispatchError(NULL);
return -1;
}
- if (info == NULL) {
- virLibStorageVolError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(info, error);
memset(info, 0, sizeof(virStorageVolInfo));
/* Zero capacity is only valid with either delta or shrink. */
if (capacity == 0 && !((flags & VIR_STORAGE_VOL_RESIZE_DELTA) ||
(flags & VIR_STORAGE_VOL_RESIZE_SHRINK))) {
- virLibStorageVolError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(capacity,
+ _("capacity in %s cannot be zero without 'delta' or 'shrink' flags set"),
+ __FUNCTION__);
goto error;
}
virDispatchError(NULL);
return -1;
}
- if ((names == NULL) || (maxnames < 0)) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(names, error);
+ virCheckNonNegativeArgGoto(maxnames, error);
if (conn->deviceMonitor && conn->deviceMonitor->listDevices) {
int ret;
return NULL;
}
- if (name == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(name, error);
if (conn->deviceMonitor && conn->deviceMonitor->deviceLookupByName) {
virNodeDevicePtr ret;
return -1;
}
- if (names == NULL || maxnames < 0) {
- virLibNodeDeviceError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(names, error);
+ virCheckNonNegativeArgGoto(maxnames, error);
if (dev->conn->deviceMonitor && dev->conn->deviceMonitor->deviceListCaps) {
int ret;
virNodeDeviceRef(virNodeDevicePtr dev)
{
if ((!VIR_IS_CONNECTED_NODE_DEVICE(dev))) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virLibConnError(VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__);
virDispatchError(NULL);
return -1;
}
goto error;
}
- if (xmlDesc == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xmlDesc, error);
if (conn->deviceMonitor &&
conn->deviceMonitor->deviceCreateXML) {
virDispatchError(NULL);
return -1;
}
- if (cb == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(cb, error);
if ((conn->driver) && (conn->driver->domainEventRegister)) {
int ret;
virDispatchError(NULL);
return -1;
}
- if (cb == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(cb, error);
+
if ((conn->driver) && (conn->driver->domainEventDeregister)) {
int ret;
ret = conn->driver->domainEventDeregister (conn, cb);
virDispatchError(NULL);
return -1;
}
- if (uuids == NULL || maxuuids < 0) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(uuids, error);
+ virCheckNonNegativeArgGoto(maxuuids, error);
if (conn->secretDriver != NULL && conn->secretDriver->listSecrets != NULL) {
int ret;
virDispatchError(NULL);
return NULL;
}
- if (uuid == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(uuid, error);
if (conn->secretDriver &&
conn->secretDriver->lookupByUUID) {
virDispatchError(NULL);
return NULL;
}
- if (uuidstr == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(uuidstr, error);
if (virUUIDParse(uuidstr, uuid) < 0) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(uuidstr,
+ _("uuidstr in %s must be a valid UUID"),
+ __FUNCTION__);
goto error;
}
virDispatchError(NULL);
return NULL;
}
- if (usageID == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(usageID, error);
if (conn->secretDriver &&
conn->secretDriver->lookupByUsage) {
virLibConnError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if (xml == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xml, error);
if (conn->secretDriver != NULL && conn->secretDriver->defineXML != NULL) {
virSecretPtr ret;
virDispatchError(NULL);
return -1;
}
- if (uuid == NULL) {
- virLibSecretError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- virDispatchError(secret->conn);
- return -1;
- }
+ virCheckNonNullArgGoto(uuid, error);
memcpy(uuid, &secret->uuid[0], VIR_UUID_BUFLEN);
return 0;
+
+error:
+ virDispatchError(secret->conn);
+ return -1;
}
/**
virDispatchError(NULL);
return -1;
}
- if (buf == NULL) {
- virLibSecretError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(buf, error);
if (virSecretGetUUID(secret, &uuid[0]))
goto error;
virLibSecretError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if (value == NULL) {
- virLibSecretError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(value, error);
if (conn->secretDriver != NULL && conn->secretDriver->setValue != NULL) {
int ret;
virLibSecretError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
}
- if (value_size == NULL) {
- virLibSecretError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(value_size, error);
if (conn->secretDriver != NULL && conn->secretDriver->getValue != NULL) {
unsigned char *ret;
virStreamRef(virStreamPtr stream)
{
if ((!VIR_IS_CONNECTED_STREAM(stream))) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virLibConnError(VIR_ERR_INVALID_STREAM, __FUNCTION__);
virDispatchError(NULL);
return -1;
}
return -1;
}
- if (data == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(data, error);
if (stream->driver &&
stream->driver->streamSend) {
return -1;
}
- if (data == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(data, error);
if (stream->driver &&
stream->driver->streamRecv) {
return -1;
}
- if (handler == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto cleanup;
- }
+ virCheckNonNullArgGoto(handler, cleanup);
if (stream->flags & VIR_STREAM_NONBLOCK) {
virLibConnError(VIR_ERR_OPERATION_INVALID,
return -1;
}
- if (handler == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto cleanup;
- }
+ virCheckNonNullArgGoto(handler, cleanup);
if (stream->flags & VIR_STREAM_NONBLOCK) {
virLibConnError(VIR_ERR_OPERATION_INVALID,
return -1;
}
- if ((names == NULL) || (maxnames < 0)) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(names, error);
+ virCheckNonNegativeArgGoto(maxnames, error);
if (conn->nwfilterDriver && conn->nwfilterDriver->listNWFilters) {
int ret;
virDispatchError(NULL);
return NULL;
}
- if (name == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(name, error);
if (conn->nwfilterDriver && conn->nwfilterDriver->nwfilterLookupByName) {
virNWFilterPtr ret;
virDispatchError(NULL);
return NULL;
}
- if (uuid == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(uuid, error);
if (conn->nwfilterDriver && conn->nwfilterDriver->nwfilterLookupByUUID){
virNWFilterPtr ret;
virDispatchError(NULL);
return NULL;
}
- if (uuidstr == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(uuidstr, error);
if (virUUIDParse(uuidstr, uuid) < 0) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(uuidstr,
+ _("uuidstr in %s must be a valid UUID"),
+ __FUNCTION__);
goto error;
}
virDispatchError(NULL);
return -1;
}
- if (uuid == NULL) {
- virLibNWFilterError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(uuid, error);
memcpy(uuid, &nwfilter->uuid[0], VIR_UUID_BUFLEN);
virDispatchError(NULL);
return -1;
}
- if (buf == NULL) {
- virLibNWFilterError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(buf, error);
if (virNWFilterGetUUID(nwfilter, &uuid[0]))
goto error;
virDispatchError(NULL);
return NULL;
}
- if (xmlDesc == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xmlDesc, error);
+
if (conn->flags & VIR_CONNECT_RO) {
virLibConnError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
goto error;
virNWFilterRef(virNWFilterPtr nwfilter)
{
if ((!VIR_IS_CONNECTED_NWFILTER(nwfilter))) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virLibConnError(VIR_ERR_INVALID_NWFILTER, __FUNCTION__);
virDispatchError(NULL);
return -1;
}
virDispatchError(NULL);
return VIR_CPU_COMPARE_ERROR;
}
- if (xmlDesc == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xmlDesc, error);
if (conn->driver->cpuCompare) {
int ret;
virDispatchError(NULL);
return NULL;
}
- if (xmlCPUs == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xmlCPUs, error);
if (conn->driver->cpuBaseline) {
char *cpu;
virDispatchError(NULL);
return -1;
}
- if (info == NULL) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(info, error);
memset(info, 0, sizeof(virDomainJobInfo));
conn = domain->conn;
- if (!bandwidth) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(bandwidth, error);
if (conn->flags & VIR_CONNECT_RO) {
virLibDomainError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
virDispatchError(conn);
return -1;
}
- if (eventID < 0 || eventID >= VIR_DOMAIN_EVENT_ID_LAST || cb == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virCheckNonNullArgGoto(cb, error);
+ virCheckNonNegativeArgGoto(eventID, error);
+ if (eventID >= VIR_DOMAIN_EVENT_ID_LAST) {
+ virReportInvalidArg(eventID,
+ _("eventID in %s must be less than %d"),
+ __FUNCTION__, VIR_DOMAIN_EVENT_ID_LAST);
goto error;
}
virDispatchError(NULL);
return -1;
}
- if (callbackID < 0) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNegativeArgGoto(callbackID, error);
+
if ((conn->driver) && (conn->driver->domainEventDeregisterAny)) {
int ret;
ret = conn->driver->domainEventDeregisterAny(conn, callbackID);
}
if ((flags & VIR_DOMAIN_SAVE_RUNNING) && (flags & VIR_DOMAIN_SAVE_PAUSED)) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("running and paused flags are mutually exclusive"));
+ virReportInvalidArg(flags,
+ _("running and paused flags in %s are mutually exclusive"),
+ __FUNCTION__);
goto error;
}
conn = domain->conn;
- if (xmlDesc == NULL) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(xmlDesc, error);
if (conn->flags & VIR_CONNECT_RO) {
virLibConnError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
if ((flags & VIR_DOMAIN_SNAPSHOT_CREATE_CURRENT) &&
!(flags & VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE)) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("use of current flag requires redefine flag"));
+ virReportInvalidArg(flags,
+ _("use of 'current' flag in %s requires 'redefine' flag"),
+ __FUNCTION__);
goto error;
}
if ((flags & VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE) &&
(flags & VIR_DOMAIN_SNAPSHOT_CREATE_NO_METADATA)) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("redefine and no metadata flags are mutually exclusive"));
+ virReportInvalidArg(flags,
+ _("'redefine' and 'no metadata' flags in %s are mutually exclusive"),
+ __FUNCTION__);
goto error;
}
if ((flags & VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE) &&
(flags & VIR_DOMAIN_SNAPSHOT_CREATE_HALT)) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("redefine and halt flags are mutually exclusive"));
+ virReportInvalidArg(flags,
+ _("'redefine' and 'halt' flags in %s are mutually exclusive"),
+ __FUNCTION__);
goto error;
}
conn = domain->conn;
- if ((names == NULL) || (nameslen < 0)) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(names, error);
+ virCheckNonNegativeArgGoto(nameslen, error);
if (conn->driver->domainSnapshotListNames) {
int ret = conn->driver->domainSnapshotListNames(domain, names,
conn = snapshot->domain->conn;
- if ((names == NULL) || (nameslen < 0)) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(names, error);
+ virCheckNonNegativeArgGoto(nameslen, error);
if (conn->driver->domainSnapshotListChildrenNames) {
int ret = conn->driver->domainSnapshotListChildrenNames(snapshot,
conn = domain->conn;
- if (name == NULL) {
- virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(name, error);
if (conn->driver->domainSnapshotLookupByName) {
virDomainSnapshotPtr dom;
if ((flags & VIR_DOMAIN_SNAPSHOT_REVERT_RUNNING) &&
(flags & VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED)) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("running and paused flags are mutually exclusive"));
+ virReportInvalidArg(flags,
+ _("running and paused flags in %s are mutually exclusive"),
+ __FUNCTION__);
goto error;
}
if ((flags & VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN) &&
(flags & VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN_ONLY)) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("children and children_only flags are "
- "mutually exclusive"));
+ virReportInvalidArg(flags,
+ _("children and children_only flags in %s are "
+ "mutually exclusive"),
+ __FUNCTION__);
goto error;
}
goto error;
}
- if (!disk) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("disk is NULL"));
- goto error;
- }
+ virCheckNonNullArgGoto(disk, error);
if (conn->driver->domainBlockJobAbort) {
int ret;
}
conn = dom->conn;
- if (!disk) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("disk is NULL"));
- goto error;
- }
-
- if (!info) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("info is NULL"));
- goto error;
- }
+ virCheckNonNullArgGoto(disk, error);
+ virCheckNonNullArgGoto(info, error);
if (conn->driver->domainGetBlockJobInfo) {
int ret;
goto error;
}
- if (!disk) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("disk is NULL"));
- goto error;
- }
+ virCheckNonNullArgGoto(disk, error);
if (conn->driver->domainBlockJobSetSpeed) {
int ret;
goto error;
}
- if (!disk) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("disk is NULL"));
- goto error;
- }
+ virCheckNonNullArgGoto(disk, error);
if (conn->driver->domainBlockPull) {
int ret;
goto error;
}
- if (!disk) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("disk is NULL"));
- goto error;
- }
+ virCheckNonNullArgGoto(disk, error);
if (flags & VIR_DOMAIN_BLOCK_REBASE_COPY) {
- if (!base) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("base is required when starting a copy"));
- goto error;
- }
+ virCheckNonNullArgGoto(base, error);
} else if (flags & (VIR_DOMAIN_BLOCK_REBASE_SHALLOW |
VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT |
VIR_DOMAIN_BLOCK_REBASE_COPY_RAW)) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("use of flags requires a copy job"));
+ virReportInvalidArg(flags,
+ _("use of flags in %s requires a copy job"),
+ __FUNCTION__);
goto error;
}
return -1;
}
- if (fd < 0) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNegativeArgGoto(fd, error);
if (fstat(fd, &sb) < 0) {
virReportSystemError(errno,
}
if (!S_ISSOCK(sb.st_mode)) {
- virLibDomainError(VIR_ERR_INVALID_ARG,
- _("File descriptor %d must be a socket"), fd);
+ virReportInvalidArg(fd,
+ _("fd %d in %s must be a socket"),
+ fd, __FUNCTION__);
goto error;
}
goto error;
}
- if (!disk || (nparams <= 0) || (params == NULL)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
- }
+ virCheckNonNullArgGoto(disk, error);
+ virCheckPositiveArgGoto(nparams, error);
+ virCheckNonNullArgGoto(params, error);
if (virTypedParameterValidateSet(dom, params, nparams) < 0)
- return -1;
+ goto error;
conn = dom->conn;
return -1;
}
- if (nparams == NULL || *nparams < 0 ||
- ((params == NULL || disk == NULL) && *nparams != 0)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
+ virCheckNonNullArgGoto(nparams, error);
+ virCheckNonNegativeArgGoto(*nparams, error);
+ if (*nparams != 0) {
+ virCheckNonNullArgGoto(params, error);
+ virCheckNonNullArgGoto(disk, error);
}
if (VIR_DRV_SUPPORTS_FEATURE(dom->conn->driver, dom->conn,
/* At most one of these two flags should be set. */
if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
(flags & VIR_DOMAIN_AFFECT_CONFIG)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virReportInvalidArg(flags,
+ _("flags 'affect live' and 'affect config' in %s are mutually exclusive"),
+ __FUNCTION__);
goto error;
}
conn = dom->conn;
* ncpus must be non-zero unless params == NULL
* nparams * ncpus must not overflow (RPC may restrict it even more)
*/
- if (start_cpu < -1 ||
- (start_cpu == -1 && ncpus != 1) ||
- ((params == NULL) != (nparams == 0)) ||
- (ncpus == 0 && params != NULL)) {
- virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- goto error;
+ if (start_cpu == -1) {
+ if (ncpus != 1) {
+ virReportInvalidArg(start_cpu,
+ _("ncpus in %s must be 1 when start_cpu is -1"),
+ __FUNCTION__);
+ goto error;
+ }
+ } else {
+ virCheckNonNegativeArgGoto(start_cpu, error);
}
+ if (nparams)
+ virCheckNonNullArgGoto(params, error);
+ else
+ virCheckNullArgGoto(params, error);
+ if (ncpus == 0)
+ virCheckNullArgGoto(params, error);
+
if (nparams && ncpus > UINT_MAX / nparams) {
virLibDomainError(VIR_ERR_OVERFLOW, _("input too large: %u * %u"),
nparams, ncpus);