mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 12:35:17 +00:00
Santize the reporting of VIR_ERR_INVALID_ERROR
To ensure consistent error reporting of invalid arguments, provide a number of predefined helper methods & macros. - An arg which must not be NULL: virCheckNonNullArgReturn(argname, retvalue) virCheckNonNullArgGoto(argname, label) - An arg which must be NULL virCheckNullArgGoto(argname, label) - An arg which must be positive (ie 1 or greater) virCheckPositiveArgGoto(argname, label) - An arg which must not be 0 virCheckNonZeroArgGoto(argname, label) - An arg which must be zero virCheckZeroArgGoto(argname, label) - An arg which must not be negative (ie 0 or greater) virCheckNonNegativeArgGoto(argname, label) * src/libvirt.c, src/libvirt-qemu.c, src/nodeinfo.c, src/datatypes.c: Update to use virCheckXXXX macros * po/POTFILES.in: Add libvirt-qemu.c and virterror_internal.h * src/internal.h: Define macros for checking invalid args * src/util/virterror_internal.h: Define macros for reporting invalid args Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
1d22ba953b
commit
d91f3ef497
@ -39,6 +39,7 @@ src/hyperv/hyperv_wmi.c
|
|||||||
src/interface/netcf_driver.c
|
src/interface/netcf_driver.c
|
||||||
src/internal.h
|
src/internal.h
|
||||||
src/libvirt.c
|
src/libvirt.c
|
||||||
|
src/libvirt-qemu.c
|
||||||
src/locking/lock_driver_sanlock.c
|
src/locking/lock_driver_sanlock.c
|
||||||
src/locking/lock_manager.c
|
src/locking/lock_manager.c
|
||||||
src/lxc/lxc_container.c
|
src/lxc/lxc_container.c
|
||||||
@ -146,6 +147,7 @@ src/util/virpidfile.c
|
|||||||
src/util/virrandom.c
|
src/util/virrandom.c
|
||||||
src/util/virsocketaddr.c
|
src/util/virsocketaddr.c
|
||||||
src/util/virterror.c
|
src/util/virterror.c
|
||||||
|
src/util/virterror_internal.h
|
||||||
src/util/virtime.c
|
src/util/virtime.c
|
||||||
src/util/virtypedparam.c
|
src/util/virtypedparam.c
|
||||||
src/util/xml.c
|
src/util/xml.c
|
||||||
|
119
src/datatypes.c
119
src/datatypes.c
@ -138,7 +138,7 @@ virUnrefConnect(virConnectPtr conn) {
|
|||||||
int refs;
|
int refs;
|
||||||
|
|
||||||
if ((!VIR_IS_CONNECT(conn))) {
|
if ((!VIR_IS_CONNECT(conn))) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("no connection"));
|
virLibConnError(VIR_ERR_INVALID_CONN, _("no connection"));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
virMutexLock(&conn->lock);
|
virMutexLock(&conn->lock);
|
||||||
@ -173,17 +173,12 @@ virGetDomain(virConnectPtr conn, const char *name, const unsigned char *uuid) {
|
|||||||
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
||||||
|
|
||||||
if (!VIR_IS_CONNECT(conn)) {
|
if (!VIR_IS_CONNECT(conn)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("no connection"));
|
virLibConnError(VIR_ERR_INVALID_CONN, _("no connection"));
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (name == NULL) {
|
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("missing name"));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (uuid == NULL) {
|
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("missing uuid"));
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
virCheckNonNullArgReturn(name, NULL);
|
||||||
|
virCheckNonNullArgReturn(uuid, NULL);
|
||||||
|
|
||||||
virMutexLock(&conn->lock);
|
virMutexLock(&conn->lock);
|
||||||
|
|
||||||
virUUIDFormat(uuid, uuidstr);
|
virUUIDFormat(uuid, uuidstr);
|
||||||
@ -269,7 +264,7 @@ virUnrefDomain(virDomainPtr domain) {
|
|||||||
int refs;
|
int refs;
|
||||||
|
|
||||||
if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
|
if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("bad domain or no connection"));
|
virLibConnError(VIR_ERR_INVALID_DOMAIN, _("bad domain or no connection"));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
virMutexLock(&domain->conn->lock);
|
virMutexLock(&domain->conn->lock);
|
||||||
@ -305,17 +300,12 @@ virGetNetwork(virConnectPtr conn, const char *name, const unsigned char *uuid) {
|
|||||||
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
||||||
|
|
||||||
if (!VIR_IS_CONNECT(conn)) {
|
if (!VIR_IS_CONNECT(conn)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("no connection"));
|
virLibConnError(VIR_ERR_INVALID_CONN, _("no connection"));
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (name == NULL) {
|
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("missing name"));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (uuid == NULL) {
|
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("missing uuid"));
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
virCheckNonNullArgReturn(name, NULL);
|
||||||
|
virCheckNonNullArgReturn(uuid, NULL);
|
||||||
|
|
||||||
virMutexLock(&conn->lock);
|
virMutexLock(&conn->lock);
|
||||||
|
|
||||||
virUUIDFormat(uuid, uuidstr);
|
virUUIDFormat(uuid, uuidstr);
|
||||||
@ -399,7 +389,7 @@ virUnrefNetwork(virNetworkPtr network) {
|
|||||||
int refs;
|
int refs;
|
||||||
|
|
||||||
if (!VIR_IS_CONNECTED_NETWORK(network)) {
|
if (!VIR_IS_CONNECTED_NETWORK(network)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG,
|
virLibConnError(VIR_ERR_INVALID_NETWORK,
|
||||||
_("bad network or no connection"));
|
_("bad network or no connection"));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -437,13 +427,10 @@ virGetInterface(virConnectPtr conn, const char *name, const char *mac) {
|
|||||||
virInterfacePtr ret = NULL;
|
virInterfacePtr ret = NULL;
|
||||||
|
|
||||||
if (!VIR_IS_CONNECT(conn)) {
|
if (!VIR_IS_CONNECT(conn)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("no connection"));
|
virLibConnError(VIR_ERR_INVALID_CONN, _("no connection"));
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (name == NULL) {
|
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("missing name"));
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
virCheckNonNullArgReturn(name, NULL);
|
||||||
|
|
||||||
/* a NULL mac from caller is okay. Treat it as blank */
|
/* a NULL mac from caller is okay. Treat it as blank */
|
||||||
if (mac == NULL)
|
if (mac == NULL)
|
||||||
@ -535,7 +522,7 @@ virUnrefInterface(virInterfacePtr iface) {
|
|||||||
int refs;
|
int refs;
|
||||||
|
|
||||||
if (!VIR_IS_CONNECTED_INTERFACE(iface)) {
|
if (!VIR_IS_CONNECTED_INTERFACE(iface)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG,
|
virLibConnError(VIR_ERR_INVALID_INTERFACE,
|
||||||
_("bad interface or no connection"));
|
_("bad interface or no connection"));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -574,17 +561,12 @@ virGetStoragePool(virConnectPtr conn, const char *name,
|
|||||||
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
||||||
|
|
||||||
if (!VIR_IS_CONNECT(conn)) {
|
if (!VIR_IS_CONNECT(conn)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("no connection"));
|
virLibConnError(VIR_ERR_INVALID_CONN, _("no connection"));
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (name == NULL) {
|
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("missing name"));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (uuid == NULL) {
|
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("missing uuid"));
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
virCheckNonNullArgReturn(name, NULL);
|
||||||
|
virCheckNonNullArgReturn(uuid, NULL);
|
||||||
|
|
||||||
virMutexLock(&conn->lock);
|
virMutexLock(&conn->lock);
|
||||||
|
|
||||||
virUUIDFormat(uuid, uuidstr);
|
virUUIDFormat(uuid, uuidstr);
|
||||||
@ -669,7 +651,7 @@ virUnrefStoragePool(virStoragePoolPtr pool) {
|
|||||||
int refs;
|
int refs;
|
||||||
|
|
||||||
if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) {
|
if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG,
|
virLibConnError(VIR_ERR_INVALID_STORAGE_POOL,
|
||||||
_("bad storage pool or no connection"));
|
_("bad storage pool or no connection"));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -708,17 +690,12 @@ virGetStorageVol(virConnectPtr conn, const char *pool, const char *name,
|
|||||||
virStorageVolPtr ret = NULL;
|
virStorageVolPtr ret = NULL;
|
||||||
|
|
||||||
if (!VIR_IS_CONNECT(conn)) {
|
if (!VIR_IS_CONNECT(conn)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("no connection"));
|
virLibConnError(VIR_ERR_INVALID_CONN, _("no connection"));
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (name == NULL) {
|
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("missing name"));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (key == NULL) {
|
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("missing key"));
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
virCheckNonNullArgReturn(name, NULL);
|
||||||
|
virCheckNonNullArgReturn(key, NULL);
|
||||||
|
|
||||||
virMutexLock(&conn->lock);
|
virMutexLock(&conn->lock);
|
||||||
|
|
||||||
if (VIR_ALLOC(ret) < 0) {
|
if (VIR_ALLOC(ret) < 0) {
|
||||||
@ -813,7 +790,7 @@ virUnrefStorageVol(virStorageVolPtr vol) {
|
|||||||
int refs;
|
int refs;
|
||||||
|
|
||||||
if (!VIR_IS_CONNECTED_STORAGE_VOL(vol)) {
|
if (!VIR_IS_CONNECTED_STORAGE_VOL(vol)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG,
|
virLibConnError(VIR_ERR_INVALID_STORAGE_VOL,
|
||||||
_("bad storage volume or no connection"));
|
_("bad storage volume or no connection"));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -850,13 +827,11 @@ virGetNodeDevice(virConnectPtr conn, const char *name)
|
|||||||
virNodeDevicePtr ret = NULL;
|
virNodeDevicePtr ret = NULL;
|
||||||
|
|
||||||
if (!VIR_IS_CONNECT(conn)) {
|
if (!VIR_IS_CONNECT(conn)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("no connection"));
|
virLibConnError(VIR_ERR_INVALID_CONN, _("no connection"));
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (name == NULL) {
|
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("missing name"));
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
virCheckNonNullArgReturn(name, NULL);
|
||||||
|
|
||||||
virMutexLock(&conn->lock);
|
virMutexLock(&conn->lock);
|
||||||
|
|
||||||
if (VIR_ALLOC(ret) < 0) {
|
if (VIR_ALLOC(ret) < 0) {
|
||||||
@ -970,17 +945,12 @@ virGetSecret(virConnectPtr conn, const unsigned char *uuid,
|
|||||||
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
||||||
|
|
||||||
if (!VIR_IS_CONNECT(conn)) {
|
if (!VIR_IS_CONNECT(conn)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("no connection"));
|
virLibConnError(VIR_ERR_INVALID_CONN, _("no connection"));
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (uuid == NULL) {
|
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("missing uuid"));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (usageID == NULL) {
|
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("missing usageID"));
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
virCheckNonNullArgReturn(uuid, NULL);
|
||||||
|
virCheckNonNullArgReturn(usageID, NULL);
|
||||||
|
|
||||||
virMutexLock(&conn->lock);
|
virMutexLock(&conn->lock);
|
||||||
|
|
||||||
virUUIDFormat(uuid, uuidstr);
|
virUUIDFormat(uuid, uuidstr);
|
||||||
@ -1061,7 +1031,7 @@ virUnrefSecret(virSecretPtr secret) {
|
|||||||
int refs;
|
int refs;
|
||||||
|
|
||||||
if (!VIR_IS_CONNECTED_SECRET(secret)) {
|
if (!VIR_IS_CONNECTED_SECRET(secret)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("bad secret or no connection"));
|
virLibConnError(VIR_ERR_INVALID_SECRET, _("bad secret or no connection"));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
virMutexLock(&secret->conn->lock);
|
virMutexLock(&secret->conn->lock);
|
||||||
@ -1156,17 +1126,12 @@ virGetNWFilter(virConnectPtr conn, const char *name, const unsigned char *uuid)
|
|||||||
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
||||||
|
|
||||||
if (!VIR_IS_CONNECT(conn)) {
|
if (!VIR_IS_CONNECT(conn)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("no connection"));
|
virLibConnError(VIR_ERR_INVALID_CONN, _("no connection"));
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (name == NULL) {
|
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("missing name"));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (uuid == NULL) {
|
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("missing uuid"));
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
virCheckNonNullArgReturn(name, NULL);
|
||||||
|
virCheckNonNullArgReturn(uuid, NULL);
|
||||||
|
|
||||||
virMutexLock(&conn->lock);
|
virMutexLock(&conn->lock);
|
||||||
|
|
||||||
virUUIDFormat(uuid, uuidstr);
|
virUUIDFormat(uuid, uuidstr);
|
||||||
@ -1253,7 +1218,7 @@ virUnrefNWFilter(virNWFilterPtr nwfilter)
|
|||||||
int refs;
|
int refs;
|
||||||
|
|
||||||
if (!VIR_IS_CONNECTED_NWFILTER(nwfilter)) {
|
if (!VIR_IS_CONNECTED_NWFILTER(nwfilter)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG,
|
virLibConnError(VIR_ERR_INVALID_NWFILTER,
|
||||||
_("bad nwfilter or no connection"));
|
_("bad nwfilter or no connection"));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -1279,13 +1244,11 @@ virGetDomainSnapshot(virDomainPtr domain, const char *name)
|
|||||||
virDomainSnapshotPtr ret = NULL;
|
virDomainSnapshotPtr ret = NULL;
|
||||||
|
|
||||||
if (!VIR_IS_DOMAIN(domain)) {
|
if (!VIR_IS_DOMAIN(domain)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("bad domain"));
|
virLibConnError(VIR_ERR_INVALID_DOMAIN, _("bad domain"));
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (name == NULL) {
|
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("missing name"));
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
virCheckNonNullArgReturn(name, NULL);
|
||||||
|
|
||||||
virMutexLock(&domain->conn->lock);
|
virMutexLock(&domain->conn->lock);
|
||||||
|
|
||||||
if (VIR_ALLOC(ret) < 0) {
|
if (VIR_ALLOC(ret) < 0) {
|
||||||
@ -1344,7 +1307,7 @@ virUnrefDomainSnapshot(virDomainSnapshotPtr snapshot)
|
|||||||
int refs;
|
int refs;
|
||||||
|
|
||||||
if (!VIR_IS_DOMAIN_SNAPSHOT(snapshot)) {
|
if (!VIR_IS_DOMAIN_SNAPSHOT(snapshot)) {
|
||||||
virLibConnError(VIR_ERR_INVALID_ARG, _("not a snapshot"));
|
virLibConnError(VIR_ERR_INVALID_DOMAIN_SNAPSHOT, _("not a snapshot"));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,17 +232,64 @@
|
|||||||
do { \
|
do { \
|
||||||
unsigned long __unsuppflags = flags & ~(supported); \
|
unsigned long __unsuppflags = flags & ~(supported); \
|
||||||
if (__unsuppflags) { \
|
if (__unsuppflags) { \
|
||||||
virReportErrorHelper(VIR_FROM_THIS, \
|
virReportInvalidArg(flags, \
|
||||||
VIR_ERR_INVALID_ARG, \
|
_("unsupported flags (0x%lx) in function %s"), \
|
||||||
__FILE__, \
|
__unsuppflags, __FUNCTION__); \
|
||||||
__FUNCTION__, \
|
|
||||||
__LINE__, \
|
|
||||||
_("%s: unsupported flags (0x%lx)"), \
|
|
||||||
__FUNCTION__, __unsuppflags); \
|
|
||||||
return retval; \
|
return retval; \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
# define virCheckNonNullArgReturn(argname, retval) \
|
||||||
|
do { \
|
||||||
|
if (argname == NULL) { \
|
||||||
|
virReportInvalidNullArg(argname); \
|
||||||
|
return retval; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
# define virCheckNullArgGoto(argname, label) \
|
||||||
|
do { \
|
||||||
|
if (argname == NULL) { \
|
||||||
|
virReportInvalidNullArg(argname); \
|
||||||
|
goto label; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
# define virCheckNonNullArgGoto(argname, label) \
|
||||||
|
do { \
|
||||||
|
if (argname == NULL) { \
|
||||||
|
virReportInvalidNonNullArg(argname); \
|
||||||
|
goto label; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
# define virCheckPositiveArgGoto(argname, label) \
|
||||||
|
do { \
|
||||||
|
if (argname <= 0) { \
|
||||||
|
virReportInvalidPositiveArg(argname); \
|
||||||
|
goto label; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
# define virCheckNonZeroArgGoto(argname, label) \
|
||||||
|
do { \
|
||||||
|
if (argname == 0) { \
|
||||||
|
virReportInvalidNonZeroArg(argname); \
|
||||||
|
goto label; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
# define virCheckZeroArgGoto(argname, label) \
|
||||||
|
do { \
|
||||||
|
if (argname != 0) { \
|
||||||
|
virReportInvalidNonZeroArg(argname); \
|
||||||
|
goto label; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
# define virCheckNonNegativeArgGoto(argname, label) \
|
||||||
|
do { \
|
||||||
|
if (argname < 0) { \
|
||||||
|
virReportInvalidNonNegativeArg(argname); \
|
||||||
|
goto label; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
|
||||||
/* divide value by size, rounding up */
|
/* divide value by size, rounding up */
|
||||||
# define VIR_DIV_UP(value, size) (((value) + (size) - 1) / (size))
|
# define VIR_DIV_UP(value, size) (((value) + (size) - 1) / (size))
|
||||||
|
|
||||||
|
@ -28,6 +28,8 @@
|
|||||||
#include "datatypes.h"
|
#include "datatypes.h"
|
||||||
#include "libvirt/libvirt-qemu.h"
|
#include "libvirt/libvirt-qemu.h"
|
||||||
|
|
||||||
|
#define VIR_FROM_THIS VIR_FROM_NONE
|
||||||
|
|
||||||
#define virLibConnError(conn, error, info) \
|
#define virLibConnError(conn, error, info) \
|
||||||
virReportErrorHelper(VIR_FROM_NONE, error, NULL, __FUNCTION__, \
|
virReportErrorHelper(VIR_FROM_NONE, error, NULL, __FUNCTION__, \
|
||||||
__LINE__, info)
|
__LINE__, info)
|
||||||
@ -87,10 +89,7 @@ virDomainQemuMonitorCommand(virDomainPtr domain, const char *cmd,
|
|||||||
|
|
||||||
conn = domain->conn;
|
conn = domain->conn;
|
||||||
|
|
||||||
if (result == NULL) {
|
virCheckNonNullArgGoto(result, error);
|
||||||
virLibDomainError(domain, VIR_ERR_INVALID_ARG, __FUNCTION__);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (conn->flags & VIR_CONNECT_RO) {
|
if (conn->flags & VIR_CONNECT_RO) {
|
||||||
virLibDomainError(domain, VIR_ERR_OPERATION_DENIED, __FUNCTION__);
|
virLibDomainError(domain, VIR_ERR_OPERATION_DENIED, __FUNCTION__);
|
||||||
@ -159,8 +158,11 @@ virDomainQemuAttach(virConnectPtr conn,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pid != pid_value || pid <= 1) {
|
virCheckPositiveArgGoto(pid_value, error);
|
||||||
virLibDomainError(domain, VIR_ERR_INVALID_ARG, __FUNCTION__);
|
if (pid != pid_value) {
|
||||||
|
virReportInvalidArg(pid_value,
|
||||||
|
_("pid_value in %s is too large"),
|
||||||
|
__FUNCTION__);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
1168
src/libvirt.c
1168
src/libvirt.c
File diff suppressed because it is too large
Load Diff
@ -451,8 +451,9 @@ int linuxNodeGetCPUStats(FILE *procstat,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((*nparams) != LINUX_NB_CPU_STATS) {
|
if ((*nparams) != LINUX_NB_CPU_STATS) {
|
||||||
nodeReportError(VIR_ERR_INVALID_ARG,
|
virReportInvalidArg(*nparams,
|
||||||
"%s", _("Invalid parameter count"));
|
_("nparams in %s must be equal to %d"),
|
||||||
|
__FUNCTION__, LINUX_NB_CPU_STATS);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -526,7 +527,9 @@ int linuxNodeGetCPUStats(FILE *procstat,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nodeReportError(VIR_ERR_INVALID_ARG, "%s", _("Invalid cpu number"));
|
virReportInvalidArg(cpuNum,
|
||||||
|
_("Invalid cpuNum in %s"),
|
||||||
|
__FUNCTION__);
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
return ret;
|
return ret;
|
||||||
@ -569,8 +572,9 @@ int linuxNodeGetMemoryStats(FILE *meminfo,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((*nparams) != nr_param) {
|
if ((*nparams) != nr_param) {
|
||||||
nodeReportError(VIR_ERR_INVALID_ARG,
|
virReportInvalidArg(nparams,
|
||||||
"%s", _("Invalid stats count"));
|
_("nparams in %s must be %d"),
|
||||||
|
__FUNCTION__, nr_param);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -779,8 +783,9 @@ int nodeGetMemoryStats(virConnectPtr conn ATTRIBUTE_UNUSED,
|
|||||||
|
|
||||||
# if HAVE_NUMACTL
|
# if HAVE_NUMACTL
|
||||||
if (cellNum > numa_max_node()) {
|
if (cellNum > numa_max_node()) {
|
||||||
nodeReportError(VIR_ERR_INVALID_ARG, "%s",
|
virReportInvalidArg(cellNum,
|
||||||
_("Invalid cell number"));
|
_("cellNum in %s must be less than or equal to %d"),
|
||||||
|
__FUNCTION__, numa_max_node());
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
|
@ -68,6 +68,83 @@ void virReportSystemErrorFull(int domcode,
|
|||||||
__FILE__, __FUNCTION__, __LINE__, \
|
__FILE__, __FUNCTION__, __LINE__, \
|
||||||
(fmt), __VA_ARGS__)
|
(fmt), __VA_ARGS__)
|
||||||
|
|
||||||
|
# define virReportInvalidNullArg(argname) \
|
||||||
|
virRaiseErrorFull(__FILE__, __FUNCTION__, __LINE__, \
|
||||||
|
VIR_FROM_THIS, \
|
||||||
|
VIR_ERR_INVALID_ARG, \
|
||||||
|
VIR_ERR_ERROR, \
|
||||||
|
__FUNCTION__, \
|
||||||
|
#argname, \
|
||||||
|
NULL, \
|
||||||
|
0, 0, \
|
||||||
|
_("%s in %s must be NULL"), \
|
||||||
|
#argname, __FUNCTION__)
|
||||||
|
# define virReportInvalidNonNullArg(argname) \
|
||||||
|
virRaiseErrorFull(__FILE__, __FUNCTION__, __LINE__, \
|
||||||
|
VIR_FROM_THIS, \
|
||||||
|
VIR_ERR_INVALID_ARG, \
|
||||||
|
VIR_ERR_ERROR, \
|
||||||
|
__FUNCTION__, \
|
||||||
|
#argname, \
|
||||||
|
NULL, \
|
||||||
|
0, 0, \
|
||||||
|
_("%s in %s must not be NULL"), \
|
||||||
|
#argname, __FUNCTION__)
|
||||||
|
# define virReportInvalidPositiveArg(argname) \
|
||||||
|
virRaiseErrorFull(__FILE__, __FUNCTION__, __LINE__, \
|
||||||
|
VIR_FROM_THIS, \
|
||||||
|
VIR_ERR_INVALID_ARG, \
|
||||||
|
VIR_ERR_ERROR, \
|
||||||
|
__FUNCTION__, \
|
||||||
|
#argname, \
|
||||||
|
NULL, \
|
||||||
|
0, 0, \
|
||||||
|
_("%s in %s must greater than zero"), \
|
||||||
|
#argname, __FUNCTION__)
|
||||||
|
# define virReportInvalidNonZeroArg(argname) \
|
||||||
|
virRaiseErrorFull(__FILE__, __FUNCTION__, __LINE__, \
|
||||||
|
VIR_FROM_THIS, \
|
||||||
|
VIR_ERR_INVALID_ARG, \
|
||||||
|
VIR_ERR_ERROR, \
|
||||||
|
__FUNCTION__, \
|
||||||
|
#argname, \
|
||||||
|
NULL, \
|
||||||
|
0, 0, \
|
||||||
|
_("%s in %s must not be zero"), \
|
||||||
|
#argname, __FUNCTION__)
|
||||||
|
# define virReportInvalidZeroArg(argname) \
|
||||||
|
virRaiseErrorFull(__FILE__, __FUNCTION__, __LINE__, \
|
||||||
|
VIR_FROM_THIS, \
|
||||||
|
VIR_ERR_INVALID_ARG, \
|
||||||
|
VIR_ERR_ERROR, \
|
||||||
|
__FUNCTION__, \
|
||||||
|
#argname, \
|
||||||
|
NULL, \
|
||||||
|
0, 0, \
|
||||||
|
_("%s in %s must be zero"), \
|
||||||
|
#argname, __FUNCTION__)
|
||||||
|
# define virReportInvalidNonNegativeArg(argname) \
|
||||||
|
virRaiseErrorFull(__FILE__, __FUNCTION__, __LINE__, \
|
||||||
|
VIR_FROM_THIS, \
|
||||||
|
VIR_ERR_INVALID_ARG, \
|
||||||
|
VIR_ERR_ERROR, \
|
||||||
|
__FUNCTION__, \
|
||||||
|
#argname, \
|
||||||
|
NULL, \
|
||||||
|
0, 0, \
|
||||||
|
_("%s in %s must be zero or greater"), \
|
||||||
|
#argname, __FUNCTION__)
|
||||||
|
# define virReportInvalidArg(argname, fmt, ...) \
|
||||||
|
virRaiseErrorFull(__FILE__, __FUNCTION__, __LINE__, \
|
||||||
|
VIR_FROM_THIS, \
|
||||||
|
VIR_ERR_INVALID_ARG, \
|
||||||
|
VIR_ERR_ERROR, \
|
||||||
|
__FUNCTION__, \
|
||||||
|
#argname, \
|
||||||
|
NULL, \
|
||||||
|
0, 0, \
|
||||||
|
(fmt), __VA_ARGS__)
|
||||||
|
|
||||||
void virReportOOMErrorFull(int domcode,
|
void virReportOOMErrorFull(int domcode,
|
||||||
const char *filename,
|
const char *filename,
|
||||||
const char *funcname,
|
const char *funcname,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user