---
src/xen/block_stats.c | 16 +++++-----
src/xen/xen_driver.c | 9 +++---
src/xen/xen_hypervisor.c | 19 ++++--------
src/xen/xen_inotify.c | 15 +++-------
src/xen/xend_internal.c | 78 ++++++++++++------------------------------------
src/xen/xm_internal.c | 9 ++----
src/xen/xs_internal.c | 44 ++++++++++-----------------
7 files changed, 59 insertions(+), 131 deletions(-)
diff --git a/src/xen/block_stats.c b/src/xen/block_stats.c
index ded8d7f..5952971 100644
--- a/src/xen/block_stats.c
+++ b/src/xen/block_stats.c
@@ -292,14 +292,14 @@ xenLinuxDomainDeviceID(int domid, const char *path)
* /sys/devices/xen-backend/(vbd|tap)-{domid}-{devid}/statistics/{...}
*/
- if (strlen(path) >= 5 && STRPREFIX(path, "/dev/"))
- mod_path = strdup(path);
- else
- ignore_value(virAsprintf(&mod_path, "/dev/%s", path));
-
- if (!mod_path) {
- virReportOOMError();
- return -1;
+ if (strlen(path) >= 5 && STRPREFIX(path, "/dev/")) {
+ if (VIR_STRDUP(mod_path, path) < 0)
+ return -1;
+ } else {
+ if (virAsprintf(&mod_path, "/dev/%s", path) < 0) {
+ virReportOOMError();
+ return -1;
+ }
}
retval = -1;
diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c
index 6ad050c..f992ccd 100644
--- a/src/xen/xen_driver.c
+++ b/src/xen/xen_driver.c
@@ -443,10 +443,8 @@ xenUnifiedConnectOpen(virConnectPtr conn, virConnectAuthPtr auth,
unsigned int f
}
#endif
- if (!(priv->saveDir = strdup(XEN_SAVE_DIR))) {
- virReportOOMError();
+ if (VIR_STRDUP(priv->saveDir, XEN_SAVE_DIR) < 0)
goto fail;
- }
if (virFileMakePath(priv->saveDir) < 0) {
VIR_ERROR(_("Failed to create save dir '%s': %s"),
priv->saveDir,
@@ -2504,8 +2502,8 @@ xenUnifiedAddDomainInfo(xenUnifiedDomainInfoListPtr list,
if (VIR_ALLOC(info) < 0)
goto memory_error;
- if (!(info->name = strdup(name)))
- goto memory_error;
+ if (VIR_STRDUP(info->name, name) < 0)
+ goto error;
memcpy(info->uuid, uuid, VIR_UUID_BUFLEN);
info->id = id;
@@ -2521,6 +2519,7 @@ xenUnifiedAddDomainInfo(xenUnifiedDomainInfoListPtr list,
return 0;
memory_error:
virReportOOMError();
+error:
if (info)
VIR_FREE(info->name);
VIR_FREE(info);
diff --git a/src/xen/xen_hypervisor.c b/src/xen/xen_hypervisor.c
index e15f7f2..03ebc0e 100644
--- a/src/xen/xen_hypervisor.c
+++ b/src/xen/xen_hypervisor.c
@@ -1199,16 +1199,12 @@ xenHypervisorGetSchedulerType(virDomainPtr domain, int *nparams)
switch (op.u.getschedulerid.sched_id){
case XEN_SCHEDULER_SEDF:
- schedulertype = strdup("sedf");
- if (schedulertype == NULL)
- virReportOOMError();
+ ignore_value(VIR_STRDUP(schedulertype, "sedf"));
if (nparams)
*nparams = XEN_SCHED_SEDF_NPARAM;
break;
case XEN_SCHEDULER_CREDIT:
- schedulertype = strdup("credit");
- if (schedulertype == NULL)
- virReportOOMError();
+ ignore_value(VIR_STRDUP(schedulertype, "credit"));
if (nparams)
*nparams = XEN_SCHED_CRED_NPARAM;
break;
@@ -2894,14 +2890,9 @@ xenHypervisorDomainGetOSType(virDomainPtr dom)
return NULL;
}
- if (XEN_GETDOMAININFO_FLAGS(dominfo) & DOMFLAGS_HVM)
- ostype = strdup("hvm");
- else
- ostype = strdup("linux");
-
- if (ostype == NULL)
- virReportOOMError();
-
+ ignore_value(VIR_STRDUP(ostype,
+ XEN_GETDOMAININFO_FLAGS(dominfo) & DOMFLAGS_HVM ?
+ "hvm" : "linux"));
return ostype;
}
diff --git a/src/xen/xen_inotify.c b/src/xen/xen_inotify.c
index d83708c..fe9ce65 100644
--- a/src/xen/xen_inotify.c
+++ b/src/xen/xen_inotify.c
@@ -39,7 +39,7 @@
#include "virlog.h"
#include "viruuid.h"
#include "virfile.h"
-
+#include "virstring.h"
#include "xm_internal.h" /* for xenXMDomainConfigParse */
#define VIR_FROM_THIS VIR_FROM_XEN_INOTIFY
@@ -62,12 +62,9 @@ xenInotifyXenCacheLookup(virConnectPtr conn,
return -1;
}
- *name = strdup(entry->def->name);
memcpy(uuid, entry->def->uuid, VIR_UUID_BUFLEN);
-
- if (!*name) {
+ if (VIR_STRDUP(*name, entry->def->name) < 0) {
VIR_DEBUG("Error getting dom from def");
- virReportOOMError();
return -1;
}
return 0;
@@ -107,11 +104,8 @@ xenInotifyXendDomainsDirLookup(virConnectPtr conn,
list info */
for (i = 0 ; i < priv->configInfoList->count ; i++) {
if (!memcmp(rawuuid, priv->configInfoList->doms[i]->uuid,
VIR_UUID_BUFLEN)) {
- *name = strdup(priv->configInfoList->doms[i]->name);
- if (!*name) {
- virReportOOMError();
+ if (VIR_STRDUP(*name, priv->configInfoList->doms[i]->name) <
0)
return -1;
- }
memcpy(uuid, priv->configInfoList->doms[i]->uuid,
VIR_UUID_BUFLEN);
VIR_DEBUG("Found dom on list");
return 0;
@@ -122,8 +116,7 @@ xenInotifyXendDomainsDirLookup(virConnectPtr conn,
return -1;
}
- if (!(*name = strdup(dom->name))) {
- virReportOOMError();
+ if (VIR_STRDUP(*name, dom->name) < 0) {
virDomainFree(dom);
return -1;
}
diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c
index 97f44ab..78edba4 100644
--- a/src/xen/xend_internal.c
+++ b/src/xen/xend_internal.c
@@ -761,8 +761,7 @@ xenDaemonListDomainsOld(virConnectPtr xend)
_for_i = _for_i->u.s.cdr, node = _for_i->u.s.car) {
if (node->kind != SEXPR_VALUE)
continue;
- ret[i] = strdup(node->u.value);
- if (!ret[i])
+ if (VIR_STRDUP(ret[i], node->u.value) < 0)
goto no_memory;
i++;
}
@@ -887,13 +886,8 @@ xenDaemonDomainLookupByID(virConnectPtr xend,
"%s", _("domain information incomplete, missing
name"));
goto error;
}
- if (domname) {
- *domname = strdup(name);
- if (*domname == NULL) {
- virReportOOMError();
- goto error;
- }
- }
+ if (domname && VIR_STRDUP(*domname, name) < 0)
+ goto error;
if (sexpr_uuid(uuid, root, "domain/uuid") < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
@@ -1454,14 +1448,8 @@ xenDaemonDomainGetOSType(virDomainPtr domain)
if (root == NULL)
return NULL;
- if (sexpr_lookup(root, "domain/image/hvm")) {
- type = strdup("hvm");
- } else {
- type = strdup("linux");
- }
-
- if (type == NULL)
- virReportOOMError();
+ ignore_value(VIR_STRDUP(type,
+ sexpr_lookup(root, "domain/image/hvm") ?
"hvm" : "linux"));
sexpr_free(root);
@@ -2363,12 +2351,8 @@ xenDaemonLookupByUUID(virConnectPtr conn, const unsigned char
*uuid)
else
id = -1;
- if (domname) {
- name = strdup(domname);
-
- if (name == NULL)
- virReportOOMError();
- }
+ if (domname)
+ ignore_value(VIR_STRDUP(name, domname));
sexpr_free(root);
}
@@ -2532,12 +2516,9 @@ xenDaemonAttachDeviceFlags(virDomainPtr domain,
priv->xendConfigVersion, 1) < 0)
goto cleanup;
- if (dev->data.disk->device != VIR_DOMAIN_DISK_DEVICE_CDROM) {
- if (!(target = strdup(dev->data.disk->dst))) {
- virReportOOMError();
- goto cleanup;
- }
- }
+ if (dev->data.disk->device != VIR_DOMAIN_DISK_DEVICE_CDROM &&
+ VIR_STRDUP(target, dev->data.disk->dst) < 0)
+ goto cleanup;
break;
case VIR_DOMAIN_DEVICE_NET:
@@ -2551,10 +2532,8 @@ xenDaemonAttachDeviceFlags(virDomainPtr domain,
char macStr[VIR_MAC_STRING_BUFLEN];
virMacAddrFormat(&dev->data.net->mac, macStr);
- if (!(target = strdup(macStr))) {
- virReportOOMError();
+ if (VIR_STRDUP(target, macStr) < 0)
goto cleanup;
- }
break;
case VIR_DOMAIN_DEVICE_HOSTDEV:
@@ -2886,12 +2865,9 @@ xenDaemonDomainSetAutostart(virDomainPtr domain, int autostart)
/* Change the autostart value in place, then define the new sexpr */
VIR_FREE(autonode->u.s.car->u.value);
- autonode->u.s.car->u.value = (autostart ? strdup("start")
- : strdup("ignore"));
- if (!(autonode->u.s.car->u.value)) {
- virReportOOMError();
+ if (VIR_STRDUP(autonode->u.s.car->u.value,
+ autostart ? "start" : "ignore") < 0)
goto error;
- }
if (sexpr2string(root, &buffer) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
@@ -3050,9 +3026,7 @@ xenDaemonDomainMigratePerform(virDomainPtr domain,
virURIFree(uriptr);
return -1;
}
- hostname = strdup(uriptr->server);
- if (!hostname) {
- virReportOOMError();
+ if (VIR_STRDUP(hostname, uriptr->server) < 0) {
virURIFree(uriptr);
return -1;
}
@@ -3072,19 +3046,13 @@ xenDaemonDomainMigratePerform(virDomainPtr domain,
/* Get the hostname. */
n = p - uri; /* n = Length of hostname in bytes. */
- hostname = strdup(uri);
- if (!hostname) {
- virReportOOMError();
+ if (VIR_STRDUP(hostname, uri) < 0)
return -1;
- }
hostname[n] = '\0';
}
else { /* "hostname" (or IP address) */
- hostname = strdup(uri);
- if (!hostname) {
- virReportOOMError();
+ if (VIR_STRDUP(hostname, uri) < 0)
return -1;
- }
}
VIR_DEBUG("hostname = %s, port = %s", hostname, port);
@@ -3263,10 +3231,8 @@ xenDaemonListDefinedDomains(virConnectPtr conn,
if (node->kind != SEXPR_VALUE)
continue;
- if ((names[ret++] = strdup(node->u.value)) == NULL) {
- virReportOOMError();
+ if (VIR_STRDUP(names[ret++], node->u.value) < 0)
goto error;
- }
if (ret >= maxnames)
break;
@@ -3322,19 +3288,13 @@ xenDaemonGetSchedulerType(virDomainPtr domain, int *nparams)
goto error;
}
if (STREQ(ret, "credit")) {
- schedulertype = strdup("credit");
- if (schedulertype == NULL){
- virReportOOMError();
+ if (VIR_STRDUP(schedulertype, "credit") < 0)
goto error;
- }
if (nparams)
*nparams = XEN_SCHED_CRED_NPARAM;
} else if (STREQ(ret, "sedf")) {
- schedulertype = strdup("sedf");
- if (schedulertype == NULL){
- virReportOOMError();
+ if (VIR_STRDUP(schedulertype, "sedf") < 0)
goto error;
- }
if (nparams)
*nparams = XEN_SCHED_SEDF_NPARAM;
} else {
diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c
index 921c66a..b261e34 100644
--- a/src/xen/xm_internal.c
+++ b/src/xen/xm_internal.c
@@ -260,8 +260,7 @@ xenXMConfigCacheAddFile(virConnectPtr conn, const char *filename)
virReportOOMError();
return -1;
}
- if ((entry->filename = strdup(filename)) == NULL) {
- virReportOOMError();
+ if (VIR_STRDUP(entry->filename, filename) < 0) {
VIR_FREE(entry);
return -1;
}
@@ -1092,10 +1091,8 @@ xenXMDomainDefineXML(virConnectPtr conn, const char *xml)
goto error;
}
- if ((entry->filename = strdup(filename)) == NULL) {
- virReportOOMError();
+ if (VIR_STRDUP(entry->filename, filename) < 0)
goto error;
- }
entry->def = def;
if (virHashAddEntry(priv->configCache, filename, entry) < 0) {
@@ -1190,7 +1187,7 @@ xenXMListIterator(void *payload ATTRIBUTE_UNUSED, const void *name,
void *data)
dom = xenDaemonLookupByName(ctx->conn, name);
if (!dom) {
- if (!(ctx->names[ctx->count] = strdup(name)))
+ if (VIR_STRDUP(ctx->names[ctx->count], name) < 0)
ctx->oom = 1;
else
ctx->count++;
diff --git a/src/xen/xs_internal.c b/src/xen/xs_internal.c
index 5f0df63..776ddc6 100644
--- a/src/xen/xs_internal.c
+++ b/src/xen/xs_internal.c
@@ -50,6 +50,7 @@
#include "xen_driver.h"
#include "xs_internal.h"
#include "xen_hypervisor.h"
+#include "virstring.h"
#define VIR_FROM_THIS VIR_FROM_XEN
@@ -851,11 +852,7 @@ xenStoreDomainGetNetworkID(virConnectPtr conn, int id, const char
*mac)
VIR_FREE(val);
if (match) {
- ret = strdup(list[i]);
-
- if (ret == NULL)
- virReportOOMError();
-
+ ignore_value(VIR_STRDUP(ret, list[i]));
break;
}
}
@@ -904,10 +901,7 @@ xenStoreDomainGetDiskID(virConnectPtr conn, int id, const char *dev)
if ((devlen != len) || memcmp(val, dev, len)) {
VIR_FREE(val);
} else {
- ret = strdup(list[i]);
-
- if (ret == NULL)
- virReportOOMError();
+ ignore_value(VIR_STRDUP(ret, list[i]));
VIR_FREE(val);
VIR_FREE(list);
@@ -927,10 +921,7 @@ xenStoreDomainGetDiskID(virConnectPtr conn, int id, const char *dev)
if ((devlen != len) || memcmp(val, dev, len)) {
VIR_FREE(val);
} else {
- ret = strdup(list[i]);
-
- if (ret == NULL)
- virReportOOMError();
+ ignore_value(VIR_STRDUP(ret, list[i]));
VIR_FREE(val);
VIR_FREE(list);
@@ -982,7 +973,7 @@ xenStoreDomainGetPCIID(virConnectPtr conn, int id, const char *bdf)
VIR_FREE(val);
if (match) {
- ret = strdup(list[i]);
+ ignore_value(VIR_STRDUP(ret, list[i]));
break;
}
}
@@ -1088,22 +1079,22 @@ xenStoreAddWatch(virConnectPtr conn,
}
}
- if (VIR_ALLOC(watch) < 0)
- goto no_memory;
+ if (VIR_ALLOC(watch) < 0) {
+ virReportOOMError();
+ goto error;
+ }
- watch->path = strdup(path);
- watch->token = strdup(token);
- watch->cb = cb;
+ watch->cb = cb;
watch->opaque = opaque;
-
- if (watch->path == NULL || watch->token == NULL) {
- goto no_memory;
- }
+ if (VIR_STRDUP(watch->path, path) < 0 ||
+ VIR_STRDUP(watch->token, token) < 0)
+ goto error;
/* Make space on list */
n = list->count;
if (VIR_REALLOC_N(list->watches, n + 1) < 0) {
- goto no_memory;
+ virReportOOMError();
+ goto error;
}
list->watches[n] = watch;
@@ -1111,15 +1102,12 @@ xenStoreAddWatch(virConnectPtr conn,
return xs_watch(priv->xshandle, watch->path, watch->token);
- no_memory:
+ error:
if (watch) {
VIR_FREE(watch->path);
VIR_FREE(watch->token);
VIR_FREE(watch);
}
-
- virReportOOMError();
-
return -1;
}
--
1.8.1.5