---
src/util/virauth.c | 8 +-
src/util/virauthconfig.c | 4 +-
src/util/virbitmap.c | 9 ++-
src/util/vircgroup.c | 31 +++-----
src/util/vircommand.c | 29 +++----
src/util/virconf.c | 21 ++---
src/util/virdnsmasq.c | 4 +-
src/util/virebtables.c | 34 ++++----
src/util/virerror.c | 18 ++---
src/util/virhash.c | 5 +-
src/util/viridentity.c | 9 ++-
src/util/virinitctl.c | 2 +-
src/util/viriptables.c | 4 +-
src/util/virjson.c | 17 ++--
src/util/virkeyfile.c | 7 +-
src/util/virlockspace.c | 13 ++-
src/util/virlog.c | 18 ++---
src/util/virnetdevmacvlan.c | 9 ++-
src/util/virnetdevtap.c | 5 +-
src/util/virnetdevvportprofile.c | 3 +-
src/util/virobject.c | 5 +-
src/util/virpci.c | 5 +-
src/util/virsexpr.c | 25 ++----
src/util/virsocketaddr.c | 4 +-
src/util/virstoragefile.c | 11 +--
src/util/virstring.c | 6 +-
src/util/virsysinfo.c | 168 ++++++++++++++++-----------------------
src/util/virtypedparam.c | 8 +-
src/util/viruri.c | 18 ++---
src/util/virutil.c | 59 +++++++-------
src/util/virxml.c | 6 +-
31 files changed, 252 insertions(+), 313 deletions(-)
diff --git a/src/util/virauth.c b/src/util/virauth.c
index fdcefe1..fcd4d3a 100644
--- a/src/util/virauth.c
+++ b/src/util/virauth.c
@@ -51,7 +51,7 @@ int virAuthGetConfigFilePath(virConnectPtr conn,
if (authenv) {
VIR_DEBUG("Using path from env '%s'", authenv);
- if (!(*path = strdup(authenv)))
+ if (VIR_STRDUP(*path, authenv) < 0)
goto no_memory;
return 0;
}
@@ -62,7 +62,7 @@ int virAuthGetConfigFilePath(virConnectPtr conn,
conn->uri->params[i].value) {
VIR_DEBUG("Using path from URI '%s'",
conn->uri->params[i].value);
- if (!(*path = strdup(conn->uri->params[i].value)))
+ if (VIR_STRDUP(*path, conn->uri->params[i].value) < 0)
goto no_memory;
return 0;
}
@@ -81,7 +81,7 @@ int virAuthGetConfigFilePath(virConnectPtr conn,
VIR_FREE(*path);
- if (!(*path = strdup(SYSCONFDIR "/libvirt/auth.conf")))
+ if (VIR_STRDUP(*path, SYSCONFDIR "/libvirt/auth.conf") < 0)
goto no_memory;
VIR_DEBUG("Checking for readability of '%s'", *path);
@@ -137,7 +137,7 @@ virAuthGetCredential(virConnectPtr conn,
goto cleanup;
if (tmp &&
- !(*value = strdup(tmp))) {
+ VIR_STRDUP(*value, tmp) < 0) {
virReportOOMError();
goto cleanup;
}
diff --git a/src/util/virauthconfig.c b/src/util/virauthconfig.c
index 4259cb3..978be5d 100644
--- a/src/util/virauthconfig.c
+++ b/src/util/virauthconfig.c
@@ -47,7 +47,7 @@ virAuthConfigPtr virAuthConfigNew(const char *path)
goto error;
}
- if (!(auth->path = strdup(path))) {
+ if (VIR_STRDUP(auth->path, path) < 0) {
virReportOOMError();
goto error;
}
@@ -77,7 +77,7 @@ virAuthConfigPtr virAuthConfigNewData(const char *path,
goto error;
}
- if (!(auth->path = strdup(path))) {
+ if (VIR_STRDUP(auth->path, path) < 0) {
virReportOOMError();
goto error;
}
diff --git a/src/util/virbitmap.c b/src/util/virbitmap.c
index c81555a..cf6a099 100644
--- a/src/util/virbitmap.c
+++ b/src/util/virbitmap.c
@@ -37,6 +37,8 @@
#include "count-one-bits.h"
#include "virstring.h"
+#define VIR_FROM_THIS VIR_FROM_NONE
+
struct _virBitmap {
size_t max_bit;
size_t map_len;
@@ -226,8 +228,11 @@ char *virBitmapFormat(virBitmapPtr bitmap)
return NULL;
cur = virBitmapNextSetBit(bitmap, -1);
- if (cur < 0)
- return strdup("");
+ if (cur < 0) {
+ char *ret;
+ ignore_value(VIR_STRDUP(ret, ""));
+ return ret;
+ }
start = prev = cur;
while (prev >= 0) {
diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
index b05fc45..bf54b2a 100644
--- a/src/util/vircgroup.c
+++ b/src/util/vircgroup.c
@@ -116,19 +116,14 @@ static int virCgroupCopyMounts(virCgroupPtr group,
if (!parent->controllers[i].mountPoint)
continue;
- group->controllers[i].mountPoint =
- strdup(parent->controllers[i].mountPoint);
-
- if (!group->controllers[i].mountPoint)
+ if (VIR_STRDUP(group->controllers[i].mountPoint,
+ parent->controllers[i].mountPoint) < 0)
return -ENOMEM;
- if (parent->controllers[i].linkPoint) {
- group->controllers[i].linkPoint =
- strdup(parent->controllers[i].linkPoint);
-
- if (!group->controllers[i].linkPoint)
- return -ENOMEM;
- }
+ if (parent->controllers[i].linkPoint &&
+ VIR_STRDUP(group->controllers[i].linkPoint,
+ parent->controllers[i].linkPoint) < 0)
+ return -ENOMEM;
}
return 0;
}
@@ -177,7 +172,7 @@ static int virCgroupDetectMounts(virCgroupPtr group)
struct stat sb;
char *tmp2;
- if (!(group->controllers[i].mountPoint = strdup(entry.mnt_dir)))
+ if (VIR_STRDUP(group->controllers[i].mountPoint, entry.mnt_dir)
< 0)
goto no_memory;
tmp2 = strrchr(entry.mnt_dir, '/');
@@ -239,7 +234,7 @@ static int virCgroupCopyPlacement(virCgroupPtr group,
continue;
if (path[0] == '/') {
- if (!(group->controllers[i].placement = strdup(path)))
+ if (VIR_STRDUP(group->controllers[i].placement, path) < 0)
return -ENOMEM;
} else {
/*
@@ -821,7 +816,7 @@ static int virCgroupNew(const char *path,
}
if (path[0] == '/' || !parent) {
- if (!((*group)->path = strdup(path))) {
+ if (VIR_STRDUP((*group)->path, path) < 0) {
rc = -ENOMEM;
goto err;
}
@@ -1253,7 +1248,7 @@ int virCgroupNewPartition(const char *path,
if (STRNEQ(newpath, "/")) {
char *tmp;
- if (!(parentPath = strdup(newpath))) {
+ if (VIR_STRDUP(parentPath, newpath) < 0) {
rc = -ENOMEM;
goto cleanup;
}
@@ -2543,12 +2538,12 @@ static char *virCgroupIdentifyRoot(virCgroupPtr group)
}
tmp[0] = '\0';
- ret = strdup(group->controllers[i].mountPoint);
- tmp[0] = '/';
- if (!ret) {
+ if (VIR_STRDUP(ret, group->controllers[i].mountPoint) < 0) {
+ tmp[0] = '/';
virReportOOMError();
return NULL;
}
+ tmp[0] = '/';
return ret;
}
diff --git a/src/util/vircommand.c b/src/util/vircommand.c
index f6f27d9..460e25b 100644
--- a/src/util/vircommand.c
+++ b/src/util/vircommand.c
@@ -946,7 +946,7 @@ virCommandSetPidFile(virCommandPtr cmd, const char *pidfile)
return;
VIR_FREE(cmd->pidfile);
- if (!(cmd->pidfile = strdup(pidfile))) {
+ if (VIR_STRDUP(cmd->pidfile, pidfile) < 0) {
cmd->has_error = ENOMEM;
}
}
@@ -1049,7 +1049,7 @@ virCommandSetSELinuxLabel(virCommandPtr cmd,
#if defined(WITH_SECDRIVER_SELINUX)
VIR_FREE(cmd->seLinuxLabel);
- if (label && !(cmd->seLinuxLabel = strdup(label)))
+ if (label && VIR_STRDUP(cmd->seLinuxLabel, label) < 0)
cmd->has_error = ENOMEM;
#endif
return;
@@ -1074,7 +1074,7 @@ virCommandSetAppArmorProfile(virCommandPtr cmd,
#if defined(WITH_SECDRIVER_APPARMOR)
VIR_FREE(cmd->appArmorProfile);
- if (profile && !(cmd->appArmorProfile = strdup(profile)))
+ if (profile && VIR_STRDUP(cmd->appArmorProfile, profile) < 0)
cmd->has_error = ENOMEM;
#endif
return;
@@ -1205,7 +1205,7 @@ virCommandAddEnvString(virCommandPtr cmd, const char *str)
if (!cmd || cmd->has_error)
return;
- if (!(env = strdup(str))) {
+ if (VIR_STRDUP(env, str) < 0) {
cmd->has_error = ENOMEM;
return;
}
@@ -1309,7 +1309,7 @@ virCommandAddArg(virCommandPtr cmd, const char *val)
if (!cmd || cmd->has_error)
return;
- if (!(arg = strdup(val))) {
+ if (VIR_STRDUP(arg, val) < 0) {
cmd->has_error = ENOMEM;
return;
}
@@ -1350,9 +1350,8 @@ virCommandAddArgBuffer(virCommandPtr cmd, virBufferPtr buf)
}
cmd->args[cmd->nargs] = virBufferContentAndReset(buf);
- if (!cmd->args[cmd->nargs])
- cmd->args[cmd->nargs] = strdup("");
- if (!cmd->args[cmd->nargs]) {
+ if (!cmd->args[cmd->nargs] &&
+ VIR_STRDUP(cmd->args[cmd->nargs], "") < 0) {
cmd->has_error = ENOMEM;
return;
}
@@ -1440,8 +1439,9 @@ virCommandAddArgSet(virCommandPtr cmd, const char *const*vals)
narg = 0;
while (vals[narg] != NULL) {
- char *arg = strdup(vals[narg++]);
- if (!arg) {
+ char *arg;
+
+ if (VIR_STRDUP(arg, vals[narg++]) < 0) {
cmd->has_error = ENOMEM;
return;
}
@@ -1481,8 +1481,7 @@ virCommandAddArgList(virCommandPtr cmd, ...)
char *arg = va_arg(list, char *);
if (!arg)
break;
- arg = strdup(arg);
- if (!arg) {
+ if (VIR_STRDUP(arg, arg) < 0) {
cmd->has_error = ENOMEM;
va_end(list);
return;
@@ -1511,8 +1510,7 @@ virCommandSetWorkingDirectory(virCommandPtr cmd, const char *pwd)
cmd->has_error = -1;
VIR_DEBUG("cannot set directory twice");
} else {
- cmd->pwd = strdup(pwd);
- if (!cmd->pwd)
+ if (VIR_STRDUP(cmd->pwd, pwd) < 0)
cmd->has_error = ENOMEM;
}
}
@@ -1539,8 +1537,7 @@ virCommandSetInputBuffer(virCommandPtr cmd, const char *inbuf)
return;
}
- cmd->inbuf = strdup(inbuf);
- if (!cmd->inbuf)
+ if (VIR_STRDUP(cmd->inbuf, inbuf) < 0)
cmd->has_error = ENOMEM;
}
diff --git a/src/util/virconf.c b/src/util/virconf.c
index 16f074a..cd5f47c 100644
--- a/src/util/virconf.c
+++ b/src/util/virconf.c
@@ -38,6 +38,7 @@
#include "virlog.h"
#include "viralloc.h"
#include "virfile.h"
+#include "virstring.h"
#define VIR_FROM_THIS VIR_FROM_CONF
@@ -397,8 +398,7 @@ virConfParseString(virConfParserCtxtPtr ctxt)
virConfError(ctxt, VIR_ERR_CONF_SYNTAX, _("unterminated string"));
return NULL;
}
- ret = strndup(base, ctxt->cur - base);
- if (ret == NULL) {
+ if (VIR_STRNDUP(ret, base, ctxt->cur - base) < 0) {
virReportOOMError();
return NULL;
}
@@ -421,8 +421,7 @@ virConfParseString(virConfParserCtxtPtr ctxt)
virConfError(ctxt, VIR_ERR_CONF_SYNTAX, _("unterminated string"));
return NULL;
}
- ret = strndup(base, ctxt->cur - base);
- if (ret == NULL) {
+ if (VIR_STRNDUP(ret, base, ctxt->cur - base) < 0) {
virReportOOMError();
return NULL;
}
@@ -436,8 +435,7 @@ virConfParseString(virConfParserCtxtPtr ctxt)
virConfError(ctxt, VIR_ERR_CONF_SYNTAX, _("unterminated string"));
return NULL;
}
- ret = strndup(base, ctxt->cur - base);
- if (ret == NULL) {
+ if (VIR_STRNDUP(ret, base, ctxt->cur - base) < 0) {
virReportOOMError();
return NULL;
}
@@ -577,8 +575,7 @@ virConfParseName(virConfParserCtxtPtr ctxt)
((ctxt->conf->flags & VIR_CONF_FLAG_VMX_FORMAT) &&
((CUR == ':') || (CUR == '.') || (CUR == '-')))))
NEXT;
- ret = strndup(base, ctxt->cur - base);
- if (ret == NULL) {
+ if (VIR_STRNDUP(ret, base, ctxt->cur - base) < 0) {
virReportOOMError();
return NULL;
}
@@ -604,8 +601,7 @@ virConfParseComment(virConfParserCtxtPtr ctxt)
NEXT;
base = ctxt->cur;
while ((ctxt->cur < ctxt->end) && (!IS_EOL(CUR))) NEXT;
- comm = strndup(base, ctxt->cur - base);
- if (comm == NULL) {
+ if (VIR_STRNDUP(comm, base, ctxt->cur - base) < 0) {
virReportOOMError();
return -1;
}
@@ -680,8 +676,7 @@ virConfParseStatement(virConfParserCtxtPtr ctxt)
NEXT;
base = ctxt->cur;
while ((ctxt->cur < ctxt->end) && (!IS_EOL(CUR))) NEXT;
- comm = strndup(base, ctxt->cur - base);
- if (comm == NULL) {
+ if (VIR_STRNDUP(comm, base, ctxt->cur - base) < 0) {
virReportOOMError();
VIR_FREE(name);
virConfFreeValue(value);
@@ -905,7 +900,7 @@ virConfSetValue(virConfPtr conf,
return -1;
}
cur->comment = NULL;
- if (!(cur->name = strdup(setting))) {
+ if (VIR_STRDUP(cur->name, setting) < 0) {
virReportOOMError();
virConfFreeValue(value);
VIR_FREE(cur);
diff --git a/src/util/virdnsmasq.c b/src/util/virdnsmasq.c
index 4f05633..b162650 100644
--- a/src/util/virdnsmasq.c
+++ b/src/util/virdnsmasq.c
@@ -469,7 +469,7 @@ dnsmasqContextNew(const char *network_name,
return NULL;
}
- if (!(ctx->config_dir = strdup(config_dir))) {
+ if (VIR_STRDUP(ctx->config_dir, config_dir) < 0) {
virReportOOMError();
goto error;
}
@@ -798,7 +798,7 @@ dnsmasqCapsNewEmpty(const char *binaryPath)
return NULL;
if (!(caps->flags = virBitmapNew(DNSMASQ_CAPS_LAST)))
goto error;
- if (!(caps->binaryPath = strdup(binaryPath ? binaryPath : DNSMASQ)))
+ if (VIR_STRDUP(caps->binaryPath, binaryPath ? binaryPath : DNSMASQ) < 0)
goto error;
return caps;
diff --git a/src/util/virebtables.c b/src/util/virebtables.c
index 6bc6fed..13c462c 100644
--- a/src/util/virebtables.c
+++ b/src/util/virebtables.c
@@ -51,6 +51,8 @@
#include "virstring.h"
#include "virutil.h"
+#define VIR_FROM_THIS VIR_FROM_NONE
+
#if HAVE_FIREWALLD
static char *firewall_cmd_path = NULL;
@@ -186,10 +188,10 @@ ebtRulesNew(const char *table,
if (VIR_ALLOC(rules) < 0)
return NULL;
- if (!(rules->table = strdup(table)))
+ if (VIR_STRDUP(rules->table, table) < 0)
goto error;
- if (!(rules->chain = strdup(chain)))
+ if (VIR_STRDUP(rules->chain, chain) < 0)
goto error;
rules->rules = NULL;
@@ -207,7 +209,7 @@ ebtablesAddRemoveRule(ebtRules *rules, int action, const char *arg,
...)
{
va_list args;
int retval = ENOMEM;
- const char **argv;
+ char **argv;
char *rule = NULL;
const char *s;
int n, command_idx;
@@ -236,36 +238,36 @@ ebtablesAddRemoveRule(ebtRules *rules, int action, const char *arg,
...)
#if HAVE_FIREWALLD
if (firewall_cmd_path) {
- if (!(argv[n++] = strdup(firewall_cmd_path)))
+ if (VIR_STRDUP(argv[n++], firewall_cmd_path) < 0)
goto error;
- if (!(argv[n++] = strdup("--direct")))
+ if (VIR_STRDUP(argv[n++], "--direct") < 0)
goto error;
- if (!(argv[n++] = strdup("--passthrough")))
+ if (VIR_STRDUP(argv[n++], "--passthrough") < 0)
goto error;
- if (!(argv[n++] = strdup("eb")))
+ if (VIR_STRDUP(argv[n++], "eb") < 0)
goto error;
} else
#endif
- if (!(argv[n++] = strdup(EBTABLES_PATH)))
+ if (VIR_STRDUP(argv[n++], EBTABLES_PATH) < 0)
goto error;
command_idx = n;
if (action == ADD || action == REMOVE) {
- if (!(argv[n++] = strdup("--insert")))
+ if (VIR_STRDUP(argv[n++], "--insert") < 0)
goto error;
- if (!(argv[n++] = strdup(rules->chain)))
+ if (VIR_STRDUP(argv[n++], rules->chain) < 0)
goto error;
}
- if (!(argv[n++] = strdup(arg)))
+ if (VIR_STRDUP(argv[n++], arg) < 0)
goto error;
va_start(args, arg);
while ((s = va_arg(args, const char *))) {
- if (!(argv[n++] = strdup(s))) {
+ if (VIR_STRDUP(argv[n++], s) < 0) {
va_end(args);
goto error;
}
@@ -273,23 +275,23 @@ ebtablesAddRemoveRule(ebtRules *rules, int action, const char *arg,
...)
va_end(args);
- if (!(rule = virArgvToString(&argv[command_idx])))
+ if (!(rule = virArgvToString((const char * const *) &argv[command_idx])))
goto error;
if (action == REMOVE) {
VIR_FREE(argv[command_idx]);
- if (!(argv[command_idx] = strdup("--delete")))
+ if (VIR_STRDUP(argv[command_idx], "--delete") < 0)
goto error;
}
- if (virRun(argv, NULL) < 0) {
+ if (virRun((const char * const *) argv, NULL) < 0) {
retval = errno;
goto error;
}
if (action == ADD || action == CREATE || action == POLICY ||
action == INSERT) {
- retval = ebtRulesAppend(rules, rule, argv, command_idx);
+ retval = ebtRulesAppend(rules, rule, (const char **) argv, command_idx);
rule = NULL;
argv = NULL;
} else {
diff --git a/src/util/virerror.c b/src/util/virerror.c
index af4da8c..8761a72 100644
--- a/src/util/virerror.c
+++ b/src/util/virerror.c
@@ -164,7 +164,7 @@ virErrorGenericFailure(virErrorPtr err)
err->code = VIR_ERR_INTERNAL_ERROR;
err->domain = VIR_FROM_NONE;
err->level = VIR_ERR_ERROR;
- err->message = strdup(_("An error occurred, but the cause is
unknown"));
+ ignore_value(VIR_STRDUP_QUIET(err->message, _("An error occurred, but the
cause is unknown")));
}
@@ -184,13 +184,13 @@ virCopyError(virErrorPtr from,
to->code = from->code;
to->domain = from->domain;
to->level = from->level;
- if (from->message && !(to->message = strdup(from->message)))
+ if (from->message && VIR_STRDUP_QUIET(to->message, from->message)
< 0)
ret = -1;
- if (from->str1 && !(to->str1 = strdup(from->str1)))
+ if (from->str1 && VIR_STRDUP_QUIET(to->str1, from->str1) < 0)
ret = -1;
- if (from->str2 && !(to->str2 = strdup(from->str2)))
+ if (from->str2 && VIR_STRDUP_QUIET(to->str2, from->str2) < 0)
ret = -1;
- if (from->str3 && !(to->str3 = strdup(from->str3)))
+ if (from->str3 && VIR_STRDUP_QUIET(to->str3, from->str3) < 0)
ret = -1;
to->int1 = from->int1;
to->int2 = from->int2;
@@ -646,7 +646,7 @@ virRaiseErrorFull(const char *filename ATTRIBUTE_UNUSED,
* formats the message; drop message on OOM situations
*/
if (fmt == NULL) {
- str = strdup(_("No error message provided"));
+ ignore_value(VIR_STRDUP_QUIET(str, _("No error message provided")));
} else {
va_list ap;
va_start(ap, fmt);
@@ -666,11 +666,11 @@ virRaiseErrorFull(const char *filename ATTRIBUTE_UNUSED,
to->message = str;
to->level = level;
if (str1 != NULL)
- to->str1 = strdup(str1);
+ ignore_value(VIR_STRDUP_QUIET(to->str1, str1));
if (str2 != NULL)
- to->str2 = strdup(str2);
+ ignore_value(VIR_STRDUP_QUIET(to->str2, str2));
if (str3 != NULL)
- to->str3 = strdup(str3);
+ ignore_value(VIR_STRDUP_QUIET(to->str3, str3));
to->int1 = int1;
to->int2 = int2;
diff --git a/src/util/virhash.c b/src/util/virhash.c
index 2fe8751..bb708fc 100644
--- a/src/util/virhash.c
+++ b/src/util/virhash.c
@@ -30,6 +30,7 @@
#include "virlog.h"
#include "virhashcode.h"
#include "virrandom.h"
+#include "virstring.h"
#define VIR_FROM_THIS VIR_FROM_NONE
@@ -85,7 +86,9 @@ static bool virHashStrEqual(const void *namea, const void *nameb)
static void *virHashStrCopy(const void *name)
{
- return strdup(name);
+ char *ret;
+ ignore_value(VIR_STRDUP(ret, name));
+ return ret;
}
static void virHashStrFree(void *name)
diff --git a/src/util/viridentity.c b/src/util/viridentity.c
index c9efd3f..864c75a 100644
--- a/src/util/viridentity.c
+++ b/src/util/viridentity.c
@@ -34,6 +34,7 @@
#include "virobject.h"
#include "virthread.h"
#include "virutil.h"
+#include "virstring.h"
#define VIR_FROM_THIS VIR_FROM_IDENTITY
@@ -150,12 +151,12 @@ virIdentityPtr virIdentityGetSystem(void)
_("Unable to lookup SELinux process context"));
goto cleanup;
}
- seccontext = strdup(con);
- freecon(con);
- if (!seccontext) {
+ if (VIR_STRDUP(seccontext, con) < 0) {
+ freecon(con);
virReportOOMError();
goto cleanup;
}
+ freecon(con);
#endif
if (!(ret = virIdentityNew()))
@@ -246,7 +247,7 @@ int virIdentitySetAttr(virIdentityPtr ident,
goto cleanup;
}
- if (!(ident->attrs[attr] = strdup(value))) {
+ if (VIR_STRDUP(ident->attrs[attr], value) < 0) {
virReportOOMError();
goto cleanup;
}
diff --git a/src/util/virinitctl.c b/src/util/virinitctl.c
index 3322454..b9a7fbf 100644
--- a/src/util/virinitctl.c
+++ b/src/util/virinitctl.c
@@ -133,7 +133,7 @@ int virInitctlSetRunLevel(virInitctlRunLevel level,
return -1;
}
} else {
- if (!(path = strdup(VIR_INITCTL_FIFO))) {
+ if (VIR_STRDUP(path, VIR_INITCTL_FIFO) < 0) {
virReportOOMError();
return -1;
}
diff --git a/src/util/viriptables.c b/src/util/viriptables.c
index 06a1356..88c3bcd 100644
--- a/src/util/viriptables.c
+++ b/src/util/viriptables.c
@@ -118,10 +118,10 @@ iptRulesNew(const char *table,
if (VIR_ALLOC(rules) < 0)
return NULL;
- if (!(rules->table = strdup(table)))
+ if (VIR_STRDUP(rules->table, table) < 0)
goto error;
- if (!(rules->chain = strdup(chain)))
+ if (VIR_STRDUP(rules->chain, chain) < 0)
goto error;
return rules;
diff --git a/src/util/virjson.c b/src/util/virjson.c
index 92138d3..995af90 100644
--- a/src/util/virjson.c
+++ b/src/util/virjson.c
@@ -107,7 +107,7 @@ virJSONValuePtr virJSONValueNewString(const char *data)
return NULL;
val->type = VIR_JSON_TYPE_STRING;
- if (!(val->data.string = strdup(data))) {
+ if (VIR_STRDUP(val->data.string, data) < 0) {
VIR_FREE(val);
return NULL;
}
@@ -126,7 +126,7 @@ virJSONValuePtr virJSONValueNewStringLen(const char *data, size_t
length)
return NULL;
val->type = VIR_JSON_TYPE_STRING;
- if (!(val->data.string = strndup(data, length))) {
+ if (VIR_STRNDUP(val->data.string, data, length) < 0) {
VIR_FREE(val);
return NULL;
}
@@ -142,7 +142,7 @@ static virJSONValuePtr virJSONValueNewNumber(const char *data)
return NULL;
val->type = VIR_JSON_TYPE_NUMBER;
- if (!(val->data.number = strdup(data))) {
+ if (VIR_STRDUP(val->data.number, data) < 0) {
VIR_FREE(val);
return NULL;
}
@@ -269,7 +269,7 @@ int virJSONValueObjectAppend(virJSONValuePtr object, const char *key,
virJSONVal
if (virJSONValueObjectHasKey(object, key))
return -1;
- if (!(newkey = strdup(key)))
+ if (VIR_STRDUP(newkey, key) < 0)
return -1;
if (VIR_REALLOC_N(object->data.object.pairs,
@@ -751,10 +751,10 @@ static int virJSONParserHandleNumber(void *ctx,
yajl_size_t l)
{
virJSONParserPtr parser = ctx;
- char *str = strndup(s, l);
+ char *str;
virJSONValuePtr value;
- if (!str)
+ if (VIR_STRNDUP(str, s, l) < 0)
return -1;
value = virJSONValueNewNumber(str);
VIR_FREE(str);
@@ -808,8 +808,7 @@ static int virJSONParserHandleMapKey(void *ctx,
state = &parser->state[parser->nstate-1];
if (state->key)
return 0;
- state->key = strndup((const char *)stringVal, stringLen);
- if (!state->key)
+ if (VIR_STRNDUP(state->key, (const char *)stringVal, stringLen) < 0)
return 0;
return 1;
}
@@ -1094,7 +1093,7 @@ char *virJSONValueToString(virJSONValuePtr object,
goto cleanup;
}
- if (!(ret = strdup((const char *)str)))
+ if (VIR_STRDUP(ret, (const char *)str) < 0)
virReportOOMError();
cleanup:
diff --git a/src/util/virkeyfile.c b/src/util/virkeyfile.c
index d77e95d..8bd930d 100644
--- a/src/util/virkeyfile.c
+++ b/src/util/virkeyfile.c
@@ -32,6 +32,7 @@
#include "virhash.h"
#include "virkeyfile.h"
#include "virerror.h"
+#include "virstring.h"
#define VIR_FROM_THIS VIR_FROM_CONF
@@ -121,7 +122,7 @@ static int virKeyFileParseGroup(virKeyFileParserCtxtPtr ctxt)
return -1;
}
- if (!(ctxt->groupname = strndup(name, ctxt->cur - name))) {
+ if (VIR_STRNDUP(ctxt->groupname, name, ctxt->cur - name) < 0) {
virReportOOMError();
return -1;
}
@@ -167,7 +168,7 @@ static int virKeyFileParseValue(virKeyFileParserCtxtPtr ctxt)
return -1;
}
- if (!(key = strndup(keystart, ctxt->cur - keystart))) {
+ if (VIR_STRNDUP(key, keystart, ctxt->cur - keystart) < 0) {
virReportOOMError();
return -1;
}
@@ -183,7 +184,7 @@ static int virKeyFileParseValue(virKeyFileParserCtxtPtr ctxt)
len = ctxt->cur - valuestart;
if (IS_EOF && !IS_EOL(CUR))
len++;
- if (!(value = strndup(valuestart, len))) {
+ if (VIR_STRNDUP(value, valuestart, len) < 0) {
virReportOOMError();
goto cleanup;
}
diff --git a/src/util/virlockspace.c b/src/util/virlockspace.c
index 620a460..38f5669 100644
--- a/src/util/virlockspace.c
+++ b/src/util/virlockspace.c
@@ -70,7 +70,7 @@ static char *virLockSpaceGetResourcePath(virLockSpacePtr lockspace,
return NULL;
}
} else {
- if (!(ret = strdup(resname))) {
+ if (VIR_STRDUP(ret, resname) < 0) {
virReportOOMError();
return NULL;
}
@@ -132,7 +132,7 @@ virLockSpaceResourceNew(virLockSpacePtr lockspace,
res->fd = -1;
res->flags = flags;
- if (!(res->name = strdup(resname)))
+ if (VIR_STRDUP(res->name, resname) < 0)
goto no_memory;
if (!(res->path = virLockSpaceGetResourcePath(lockspace, resname)))
@@ -262,8 +262,7 @@ virLockSpacePtr virLockSpaceNew(const char *directory)
return NULL;
}
- if (directory &&
- !(lockspace->dir = strdup(directory)))
+ if (directory && VIR_STRDUP(lockspace->dir, directory) < 0)
goto no_memory;
if (!(lockspace->resources = virHashCreate(VIR_LOCKSPACE_TABLE_SIZE,
@@ -324,7 +323,7 @@ virLockSpacePtr virLockSpaceNewPostExecRestart(virJSONValuePtr
object)
if (virJSONValueObjectHasKey(object, "directory")) {
const char *dir = virJSONValueObjectGetString(object, "directory");
- if (!(lockspace->dir = strdup(dir))) {
+ if (VIR_STRDUP(lockspace->dir, dir) < 0) {
virReportOOMError();
goto error;
}
@@ -362,7 +361,7 @@ virLockSpacePtr virLockSpaceNewPostExecRestart(virJSONValuePtr
object)
virLockSpaceResourceFree(res);
goto error;
}
- if (!(res->name = strdup(tmp))) {
+ if (VIR_STRDUP(res->name, tmp) < 0) {
virReportOOMError();
virLockSpaceResourceFree(res);
goto error;
@@ -374,7 +373,7 @@ virLockSpacePtr virLockSpaceNewPostExecRestart(virJSONValuePtr
object)
virLockSpaceResourceFree(res);
goto error;
}
- if (!(res->path = strdup(tmp))) {
+ if (VIR_STRDUP(res->path, tmp) < 0) {
virReportOOMError();
virLockSpaceResourceFree(res);
goto error;
diff --git a/src/util/virlog.c b/src/util/virlog.c
index bd47b38..921ffc5 100644
--- a/src/util/virlog.c
+++ b/src/util/virlog.c
@@ -557,8 +557,7 @@ virLogDefineFilter(const char *match,
}
}
- mdup = strdup(match);
- if (mdup == NULL) {
+ if (VIR_STRDUP(mdup, match) < 0) {
i = -1;
goto cleanup;
}
@@ -667,8 +666,7 @@ virLogDefineOutput(virLogOutputFunc f,
if (dest == VIR_LOG_TO_SYSLOG || dest == VIR_LOG_TO_FILE) {
if (name == NULL)
return -1;
- ndup = strdup(name);
- if (ndup == NULL)
+ if (VIR_STRDUP(ndup, name) < 0)
return -1;
}
@@ -1047,8 +1045,7 @@ virLogAddOutputToSyslog(virLogPriority priority,
* ident needs to be kept around on Solaris
*/
VIR_FREE(current_ident);
- current_ident = strdup(ident);
- if (current_ident == NULL)
+ if (VIR_STRDUP(current_ident, ident) < 0)
return -1;
openlog(current_ident, 0, 0);
@@ -1329,8 +1326,7 @@ virLogParseOutputs(const char *outputs)
if (str == cur)
goto cleanup;
#if HAVE_SYSLOG_H
- name = strndup(str, cur - str);
- if (name == NULL)
+ if (VIR_STRNDUP(name, str, cur - str) < 0)
goto cleanup;
if (virLogAddOutputToSyslog(prio, name) == 0)
count++;
@@ -1346,8 +1342,7 @@ virLogParseOutputs(const char *outputs)
cur++;
if (str == cur)
goto cleanup;
- name = strndup(str, cur - str);
- if (name == NULL)
+ if (VIR_STRNDUP(name, str, cur - str) < 0)
goto cleanup;
if (virFileAbsPath(name, &abspath) < 0) {
VIR_FREE(name);
@@ -1424,8 +1419,7 @@ virLogParseFilters(const char *filters)
cur++;
if (str == cur)
goto cleanup;
- name = strndup(str, cur - str);
- if (name == NULL)
+ if (VIR_STRNDUP(name, str, cur - str) < 0)
goto cleanup;
if (virLogDefineFilter(name, prio, flags) >= 0)
count++;
diff --git a/src/util/virnetdevmacvlan.c b/src/util/virnetdevmacvlan.c
index 0c4fcbd..7892937 100644
--- a/src/util/virnetdevmacvlan.c
+++ b/src/util/virnetdevmacvlan.c
@@ -31,6 +31,7 @@
#include "virmacaddr.h"
#include "virerror.h"
#include "virthread.h"
+#include "virstring.h"
#define VIR_FROM_THIS VIR_FROM_NET
@@ -764,13 +765,13 @@ virNetDevMacVLanVPortProfileRegisterCallback(const char *ifname,
if (virtPortProfile && virNetlinkEventServiceIsRunning(NETLINK_ROUTE)) {
if (VIR_ALLOC(calld) < 0)
goto memory_error;
- if ((calld->cr_ifname = strdup(ifname)) == NULL)
+ if (VIR_STRDUP(calld->cr_ifname, ifname) < 0)
goto memory_error;
if (VIR_ALLOC(calld->virtPortProfile) < 0)
goto memory_error;
memcpy(calld->virtPortProfile, virtPortProfile, sizeof(*virtPortProfile));
virMacAddrSet(&calld->macaddress, macaddress);
- if ((calld->linkdev = strdup(linkdev)) == NULL)
+ if (VIR_STRDUP(calld->linkdev, linkdev) < 0)
goto memory_error;
memcpy(calld->vmuuid, vmuuid, sizeof(calld->vmuuid));
@@ -927,13 +928,13 @@ create_name:
VIR_FORCE_CLOSE(rc); /* sets rc to -1 */
goto disassociate_exit;
}
- if (!(*res_ifname = strdup(cr_ifname))) {
+ if (VIR_STRDUP(*res_ifname, cr_ifname) < 0) {
VIR_FORCE_CLOSE(rc); /* sets rc to -1 */
virReportOOMError();
goto disassociate_exit;
}
} else {
- if (!(*res_ifname = strdup(cr_ifname))) {
+ if (VIR_STRDUP(*res_ifname, cr_ifname) < 0) {
virReportOOMError();
goto disassociate_exit;
}
diff --git a/src/util/virnetdevtap.c b/src/util/virnetdevtap.c
index 0cd2e31..bcf5c39 100644
--- a/src/util/virnetdevtap.c
+++ b/src/util/virnetdevtap.c
@@ -64,8 +64,7 @@ virNetDevTapGetName(int tapfd, char **ifname)
return -1;
}
- *ifname = strdup(ifr.ifr_name);
- if (*ifname == NULL) {
+ if (VIR_STRDUP(*ifname, ifr.ifr_name) < 0) {
virReportOOMError();
return -1;
}
@@ -204,7 +203,7 @@ int virNetDevTapCreate(char **ifname,
}
VIR_FREE(*ifname);
- if (!(*ifname = strdup(ifr.ifr_name))) {
+ if (VIR_STRDUP(*ifname, ifr.ifr_name) < 0) {
virReportOOMError();
goto cleanup;
}
diff --git a/src/util/virnetdevvportprofile.c b/src/util/virnetdevvportprofile.c
index 883aa46..ba48429 100644
--- a/src/util/virnetdevvportprofile.c
+++ b/src/util/virnetdevvportprofile.c
@@ -1034,8 +1034,7 @@ virNetDevVPortProfileOp8021Qbh(const char *ifname,
goto cleanup;
}
} else {
- physfndev = strdup(ifname);
- if (!physfndev) {
+ if (VIR_STRDUP(physfndev, ifname) < 0) {
virReportOOMError();
rc = -1;
goto cleanup;
diff --git a/src/util/virobject.c b/src/util/virobject.c
index 93e37e4..da5537b 100644
--- a/src/util/virobject.c
+++ b/src/util/virobject.c
@@ -28,6 +28,7 @@
#include "viratomic.h"
#include "virerror.h"
#include "virlog.h"
+#include "virstring.h"
#define VIR_FROM_THIS VIR_FROM_NONE
@@ -37,7 +38,7 @@ struct _virClass {
virClassPtr parent;
unsigned int magic;
- const char *name;
+ char *name;
size_t objectSize;
virObjectDisposeCallback dispose;
@@ -135,7 +136,7 @@ virClassPtr virClassNew(virClassPtr parent,
goto no_memory;
klass->parent = parent;
- if (!(klass->name = strdup(name)))
+ if (VIR_STRDUP(klass->name, name) < 0)
goto no_memory;
klass->magic = virAtomicIntInc(&magicCounter);
klass->objectSize = objectSize;
diff --git a/src/util/virpci.c b/src/util/virpci.c
index 6ed6a90..2160403 100644
--- a/src/util/virpci.c
+++ b/src/util/virpci.c
@@ -1364,7 +1364,7 @@ virPCIGetAddrString(unsigned int domain,
dev = virPCIDeviceNew(domain, bus, slot, function);
if (dev != NULL) {
- if ((*pciConfigAddr = strdup(dev->name)) == NULL) {
+ if (VIR_STRDUP(*pciConfigAddr, dev->name) < 0) {
virReportOOMError();
goto cleanup;
}
@@ -2240,8 +2240,7 @@ virPCIGetNetName(char *device_link_sysfs_path, char **netname)
continue;
/* Assume a single directory entry */
- *netname = strdup(entry->d_name);
- if (!*netname)
+ if (VIR_STRDUP(*netname, entry->d_name) < 0)
virReportOOMError();
else
ret = 0;
diff --git a/src/util/virsexpr.c b/src/util/virsexpr.c
index 23b6781..d621d8e 100644
--- a/src/util/virsexpr.c
+++ b/src/util/virsexpr.c
@@ -118,17 +118,11 @@ sexpr_string(const char *str, ssize_t len)
if (ret == NULL)
return ret;
- ret->kind = SEXPR_VALUE;
- if (len > 0) {
- ret->u.value = strndup(str, len);
- } else {
- ret->u.value = strdup(str);
- }
- if (ret->u.value == NULL) {
+ ret->kind = SEXPR_VALUE;
+ if ((len > 0 && VIR_STRNDUP(ret->u.value, str, len) < 0) ||
+ (len <= 0 && VIR_STRDUP(ret->u.value, str) < 0))
VIR_FREE(ret);
- return NULL;
- }
return ret;
}
@@ -325,8 +319,7 @@ _string2sexpr(const char *buffer, size_t * end)
ptr++;
}
- ret->u.value = strndup(start, ptr - start);
- if (ret->u.value == NULL) {
+ if (VIR_STRNDUP(ret->u.value, start, ptr - start) < 0) {
virReportOOMError();
goto error;
}
@@ -341,8 +334,7 @@ _string2sexpr(const char *buffer, size_t * end)
ptr++;
}
- ret->u.value = strndup(start, ptr - start);
- if (ret->u.value == NULL) {
+ if (VIR_STRNDUP(ret->u.value, start, ptr - start) < 0) {
virReportOOMError();
goto error;
}
@@ -403,9 +395,7 @@ sexpr_lookup_key(const struct sexpr *sexpr, const char *node)
if ((node == NULL) || (sexpr == NULL))
return NULL;
- buffer = strdup(node);
-
- if (buffer == NULL) {
+ if (VIR_STRDUP(buffer, node) < 0) {
virReportOOMError();
return NULL;
}
@@ -528,8 +518,7 @@ int sexpr_node_copy(const struct sexpr *sexpr, const char *node, char
**dst)
const char *val = sexpr_node(sexpr, node);
if (val && *val) {
- *dst = strdup(val);
- if (!(*dst))
+ if (VIR_STRDUP(*dst, val) < 0)
return -1;
} else {
*dst = NULL;
diff --git a/src/util/virsocketaddr.c b/src/util/virsocketaddr.c
index d6a0d93..4fac526 100644
--- a/src/util/virsocketaddr.c
+++ b/src/util/virsocketaddr.c
@@ -272,7 +272,7 @@ virSocketAddrFormatFull(virSocketAddrPtr addr,
separator ? separator : ":") < 0)
goto no_memory;
} else {
- if (!(addrstr = strdup("127.0.0.1")))
+ if (VIR_STRDUP(addrstr, "127.0.0.1") < 0)
goto no_memory;
}
return addrstr;
@@ -293,7 +293,7 @@ virSocketAddrFormatFull(virSocketAddrPtr addr,
if (virAsprintf(&addrstr, "%s%s%s", host, separator, port) == -1)
goto no_memory;
} else {
- if (!(addrstr = strdup(host)))
+ if (VIR_STRDUP(addrstr, host) < 0)
goto no_memory;
}
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index c7bb85a..04306c1 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -228,8 +228,7 @@ cowGetBackingStore(char **res,
return BACKING_STORE_OK;
}
- *res = strndup((const char*)buf + 4+4, COW_FILENAME_MAXLEN);
- if (*res == NULL) {
+ if (VIR_STRNDUP(*res, (const char*)buf + 4+4, COW_FILENAME_MAXLEN) < 0) {
virReportOOMError();
return BACKING_STORE_ERROR;
}
@@ -440,8 +439,7 @@ vmdk4GetBackingStore(char **res,
goto cleanup;
}
*end = '\0';
- *res = strdup(start);
- if (*res == NULL) {
+ if (VIR_STRDUP(*res, start) < 0) {
virReportOOMError();
goto cleanup;
}
@@ -775,8 +773,7 @@ virStorageFileGetMetadataInternal(const char *path,
meta->backingStoreIsFile = false;
if (backing != NULL) {
- meta->backingStore = strdup(backing);
- if (meta->backingStore == NULL) {
+ if (VIR_STRDUP(meta->backingStore, backing) < 0) {
virReportOOMError();
VIR_FREE(backing);
goto cleanup;
@@ -1096,7 +1093,7 @@ int virStorageFileIsSharedFSType(const char *path,
struct statfs sb;
int statfs_ret;
- if ((dirpath = strdup(path)) == NULL) {
+ if (VIR_STRDUP(dirpath, path) < 0) {
virReportOOMError();
return -1;
}
diff --git a/src/util/virstring.c b/src/util/virstring.c
index 4a55873..2f672bc 100644
--- a/src/util/virstring.c
+++ b/src/util/virstring.c
@@ -85,7 +85,7 @@ char **virStringSplit(const char *string,
if (VIR_RESIZE_N(tokens, maxtokens, ntokens, 1) < 0)
goto no_memory;
- if (!(tokens[ntokens] = strndup(remainder, len)))
+ if (VIR_STRNDUP(tokens[ntokens], remainder, len) < 0)
goto no_memory;
ntokens++;
remainder = tmp + delimlen;
@@ -96,7 +96,7 @@ char **virStringSplit(const char *string,
if (VIR_RESIZE_N(tokens, maxtokens, ntokens, 1) < 0)
goto no_memory;
- if (!(tokens[ntokens] = strdup(remainder)))
+ if (VIR_STRDUP(tokens[ntokens], remainder) < 0)
goto no_memory;
ntokens++;
}
@@ -145,7 +145,7 @@ char *virStringJoin(const char **strings,
}
ret = virBufferContentAndReset(&buf);
if (!ret) {
- if (!(ret = strdup(""))) {
+ if (VIR_STRDUP(ret, "") < 0) {
virReportOOMError();
return NULL;
}
diff --git a/src/util/virsysinfo.c b/src/util/virsysinfo.c
index 2efe634..2c6bbcf 100644
--- a/src/util/virsysinfo.c
+++ b/src/util/virsysinfo.c
@@ -144,16 +144,14 @@ virSysinfoParseSystem(const char *base, virSysinfoDefPtr ret)
cur = strchr(cur, ':') + 1;
eol = strchr(cur, '\n');
virSkipSpaces(&cur);
- if (eol &&
- ((ret->system_family = strndup(cur, eol - cur)) == NULL))
+ if (eol && VIR_STRNDUP(ret->system_family, cur, eol - cur) < 0)
goto no_memory;
if ((cur = strstr(base, "model")) != NULL) {
cur = strchr(cur, ':') + 1;
eol = strchr(cur, '\n');
virSkipSpaces(&cur);
- if (eol && ((ret->system_serial = strndup(cur, eol - cur))
- == NULL))
+ if (eol && VIR_STRNDUP(ret->system_serial, cur, eol - cur) < 0)
goto no_memory;
}
@@ -161,8 +159,7 @@ virSysinfoParseSystem(const char *base, virSysinfoDefPtr ret)
cur = strchr(cur, ':') + 1;
eol = strchr(cur, '\n');
virSkipSpaces(&cur);
- if (eol && ((ret->system_version = strndup(cur, eol - cur))
- == NULL))
+ if (eol && VIR_STRNDUP(ret->system_version, cur, eol - cur) < 0)
goto no_memory;
}
@@ -190,18 +187,14 @@ virSysinfoParseProcessor(const char *base, virSysinfoDefPtr ret)
processor = &ret->processor[ret->nprocessor - 1];
virSkipSpaces(&cur);
- if (eol &&
- ((processor->processor_socket_destination = strndup
- (cur, eol - cur)) == NULL))
+ if (eol && VIR_STRNDUP(processor->processor_socket_destination, cur,
eol - cur) < 0)
goto no_memory;
if ((cur = strstr(base, "cpu")) != NULL) {
cur = strchr(cur, ':') + 1;
eol = strchr(cur, '\n');
virSkipSpaces(&cur);
- if (eol &&
- ((processor->processor_type = strndup(cur, eol - cur))
- == NULL))
+ if (eol && VIR_STRNDUP(processor->processor_type, cur, eol - cur)
< 0)
goto no_memory;
}
@@ -209,9 +202,7 @@ virSysinfoParseProcessor(const char *base, virSysinfoDefPtr ret)
cur = strchr(cur, ':') + 1;
eol = strchr(cur, '\n');
virSkipSpaces(&cur);
- if (eol &&
- ((processor->processor_version = strndup(cur, eol - cur))
- == NULL))
+ if (eol && VIR_STRNDUP(processor->processor_version, cur, eol -
cur) < 0)
goto no_memory;
}
@@ -271,15 +262,14 @@ virSysinfoParseSystem(const char *base, virSysinfoDefPtr ret)
eol = strchr(cur, '\n');
virSkipSpaces(&cur);
if (eol &&
- ((ret->system_family = strndup(cur, eol - cur)) == NULL))
+ VIR_STRNDUP(ret->system_family, cur, eol - cur) < 0)
goto no_memory;
if ((cur = strstr(base, "model")) != NULL) {
cur = strchr(cur, ':') + 1;
eol = strchr(cur, '\n');
virSkipSpaces(&cur);
- if (eol && ((ret->system_serial = strndup(cur, eol - cur))
- == NULL))
+ if (eol && VIR_STRNDUP(ret->system_serial, cur, eol - cur) < 0)
goto no_memory;
}
@@ -287,8 +277,7 @@ virSysinfoParseSystem(const char *base, virSysinfoDefPtr ret)
cur = strchr(cur, ':') + 1;
eol = strchr(cur, '\n');
virSkipSpaces(&cur);
- if (eol && ((ret->system_version = strndup(cur, eol - cur))
- == NULL))
+ if (eol && VIR_STRNDUP(ret->system_version, cur, eol - cur) < 0)
goto no_memory;
}
@@ -313,9 +302,7 @@ virSysinfoParseProcessor(const char *base, virSysinfoDefPtr ret)
eol = strchr(base, '\n');
cur = strchr(base, ':') + 1;
virSkipSpaces(&cur);
- if (eol &&
- ((processor_type = strndup(cur, eol - cur))
- == NULL))
+ if (eol && VIR_STRNDUP(processor_type, cur, eol - cur) < 0)
goto no_memory;
base = cur;
@@ -331,12 +318,11 @@ virSysinfoParseProcessor(const char *base, virSysinfoDefPtr ret)
virSkipSpaces(&cur);
if (eol &&
- ((processor->processor_socket_destination = strndup
- (cur, eol - cur)) == NULL))
+ VIR_STRNDUP(processor->processor_socket_destination, (cur, eol - cur) <
0)
goto no_memory;
if (processor_type &&
- !(processor->processor_type = strdup(processor_type)))
+ VIR_STRNDUP(processor->processor_type, processor_type) < 0)
goto no_memory;
base = cur;
@@ -408,7 +394,7 @@ virSysinfoParseDelimited(const char *base, const char *name, char
**value,
start += 1;
end = strchrnul(start, delim2);
virSkipSpaces(&start);
- if (!((*value) = strndup(start, end - start))) {
+ if (VIR_STRNDUP((*value), start, end - start) < 0) {
virReportOOMError();
goto error;
}
@@ -462,7 +448,10 @@ virSysinfoParseProcessor(const char *base, virSysinfoDefPtr ret)
goto cleanup;
}
processor = &ret->processor[ret->nprocessor - 1];
- processor->processor_manufacturer = strdup(manufacturer);
+ if (VIR_STRDUP(processor->processor_manufacturer, manufacturer) < 0) {
+ virReportOOMError();
+ goto cleanup;
+ }
if (!virSysinfoParseDelimited(procline, "version",
&processor->processor_version,
'=', ',') ||
@@ -556,25 +545,25 @@ virSysinfoParseBIOS(const char *base, virSysinfoDefPtr ret)
if ((cur = strstr(base, "Vendor: ")) != NULL) {
cur += 8;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->bios_vendor = strndup(cur, eol - cur)) == NULL))
+ if (eol && VIR_STRNDUP(ret->bios_vendor, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Version: ")) != NULL) {
cur += 9;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->bios_version = strndup(cur, eol - cur)) == NULL))
+ if (eol && VIR_STRNDUP(ret->bios_version, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Release Date: ")) != NULL) {
cur += 14;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->bios_date = strndup(cur, eol - cur)) == NULL))
+ if (eol && VIR_STRNDUP(ret->bios_date, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "BIOS Revision: ")) != NULL) {
cur += 15;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->bios_release = strndup(cur, eol - cur)) == NULL))
+ if (eol && VIR_STRNDUP(ret->bios_release, cur, eol - cur) < 0)
goto no_memory;
}
@@ -596,44 +585,43 @@ virSysinfoParseSystem(const char *base, virSysinfoDefPtr ret)
if ((cur = strstr(base, "Manufacturer: ")) != NULL) {
cur += 14;
eol = strchr(cur, '\n');
- if ((eol) &&
- ((ret->system_manufacturer = strndup(cur, eol - cur)) == NULL))
+ if (eol && VIR_STRNDUP(ret->system_manufacturer, cur, eol - cur) <
0)
goto no_memory;
}
if ((cur = strstr(base, "Product Name: ")) != NULL) {
cur += 14;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->system_product = strndup(cur, eol - cur)) ==
NULL))
+ if (eol && VIR_STRNDUP(ret->system_product, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Version: ")) != NULL) {
cur += 9;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->system_version = strndup(cur, eol - cur)) ==
NULL))
+ if (eol && VIR_STRNDUP(ret->system_version, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Serial Number: ")) != NULL) {
cur += 15;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->system_serial = strndup(cur, eol - cur)) ==
NULL))
+ if (eol && VIR_STRNDUP(ret->system_serial, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "UUID: ")) != NULL) {
cur += 6;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->system_uuid = strndup(cur, eol - cur)) == NULL))
+ if (eol && VIR_STRNDUP(ret->system_uuid, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "SKU Number: ")) != NULL) {
cur += 12;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->system_sku = strndup(cur, eol - cur)) == NULL))
+ if (eol && VIR_STRNDUP(ret->system_sku, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Family: ")) != NULL) {
cur += 8;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->system_family = strndup(cur, eol - cur)) ==
NULL))
+ if (eol && VIR_STRNDUP(ret->system_family, cur, eol - cur) < 0)
goto no_memory;
}
@@ -663,98 +651,88 @@ virSysinfoParseProcessor(const char *base, virSysinfoDefPtr ret)
cur += 20;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((processor->processor_socket_destination
- = strndup(cur, eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(processor->processor_socket_destination, cur, eol - cur)
< 0)
goto no_memory;
}
if ((cur = strstr(base, "Type: ")) != NULL) {
cur += 6;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((processor->processor_type = strndup(cur, eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(processor->processor_type, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Family: ")) != NULL) {
cur += 8;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((processor->processor_family = strndup(cur,
- eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(processor->processor_family, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Manufacturer: ")) != NULL) {
cur += 14;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((processor->processor_manufacturer
- = strndup(cur, eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(processor->processor_manufacturer, cur, eol - cur) <
0)
goto no_memory;
}
if ((cur = strstr(base, "Signature: ")) != NULL) {
cur += 11;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((processor->processor_signature
- = strndup(cur, eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(processor->processor_signature, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Version: ")) != NULL) {
cur += 9;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((processor->processor_version = strndup(cur,
- eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(processor->processor_version, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "External Clock: ")) != NULL) {
cur += 16;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((processor->processor_external_clock
- = strndup(cur, eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(processor->processor_external_clock, cur, eol - cur) <
0)
goto no_memory;
}
if ((cur = strstr(base, "Max Speed: ")) != NULL) {
cur += 11;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((processor->processor_max_speed
- = strndup(cur, eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(processor->processor_max_speed, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Status: ")) != NULL) {
cur += 8;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((processor->processor_status = strndup(cur,
- eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(processor->processor_status, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Serial Number: ")) != NULL) {
cur += 15;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((processor->processor_serial_number
- = strndup(cur, eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(processor->processor_serial_number, cur, eol - cur) <
0)
goto no_memory;
}
if ((cur = strstr(base, "Part Number: ")) != NULL) {
cur += 13;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((processor->processor_part_number
- = strndup(cur, eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(processor->processor_part_number, cur, eol - cur) < 0)
goto no_memory;
}
@@ -790,86 +768,80 @@ virSysinfoParseMemory(const char *base, virSysinfoDefPtr ret)
goto next;
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((memory->memory_size = strndup(cur, eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(memory->memory_size, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Form Factor: ")) != NULL) {
cur += 13;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((memory->memory_form_factor = strndup(cur,
- eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(memory->memory_form_factor, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Locator: ")) != NULL) {
cur += 9;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((memory->memory_locator = strndup(cur, eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(memory->memory_locator, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Bank Locator: ")) != NULL) {
cur += 14;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((memory->memory_bank_locator = strndup(cur,
- eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(memory->memory_bank_locator, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Type: ")) != NULL) {
cur += 6;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((memory->memory_type = strndup(cur, eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(memory->memory_type, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Type Detail: ")) != NULL) {
cur += 13;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((memory->memory_type_detail = strndup(cur,
- eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(memory->memory_type_detail, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Speed: ")) != NULL) {
cur += 7;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((memory->memory_speed = strndup(cur, eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(memory->memory_speed, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Manufacturer: ")) != NULL) {
cur += 14;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((memory->memory_manufacturer = strndup(cur,
- eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(memory->memory_manufacturer, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Serial Number: ")) != NULL) {
cur += 15;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((memory->memory_serial_number = strndup(cur,
- eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(memory->memory_serial_number, cur, eol - cur) < 0)
goto no_memory;
}
if ((cur = strstr(base, "Part Number: ")) != NULL) {
cur += 13;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((memory->memory_part_number = strndup(cur,
- eol - cur)) == NULL))
+ if (eol &&
+ VIR_STRNDUP(memory->memory_part_number, cur, eol - cur) < 0)
goto no_memory;
}
diff --git a/src/util/virtypedparam.c b/src/util/virtypedparam.c
index a9f8a33..cc352ff 100644
--- a/src/util/virtypedparam.c
+++ b/src/util/virtypedparam.c
@@ -150,9 +150,7 @@ virTypedParameterAssign(virTypedParameterPtr param, const char *name,
break;
case VIR_TYPED_PARAM_STRING:
param->value.s = va_arg(ap, char *);
- if (!param->value.s)
- param->value.s = strdup("");
- if (!param->value.s) {
+ if (!param->value.s && VIR_STRDUP(param->value.s, "")
< 0) {
virReportOOMError();
goto cleanup;
}
@@ -248,7 +246,7 @@ virTypedParameterAssignFromStr(virTypedParameterPtr param, const char
*name,
}
break;
case VIR_TYPED_PARAM_STRING:
- if (!(param->value.s = strdup(val))) {
+ if (VIR_STRDUP(param->value.s, val) < 0) {
virReportOOMError();
goto cleanup;
}
@@ -913,7 +911,7 @@ virTypedParamsAddString(virTypedParameterPtr *params,
}
*maxparams = max;
- if (value && !(str = strdup(value))) {
+ if (value && VIR_STRDUP(str, value) < 0) {
virReportOOMError();
goto error;
}
diff --git a/src/util/viruri.c b/src/util/viruri.c
index 2a75425..ba46851 100644
--- a/src/util/viruri.c
+++ b/src/util/viruri.c
@@ -37,9 +37,9 @@ virURIParamAppend(virURIPtr uri,
char *pname = NULL;
char *pvalue = NULL;
- if (!(pname = strdup(name)))
+ if (VIR_STRDUP(pname, name) < 0)
goto no_memory;
- if (!(pvalue = strdup(value)))
+ if (VIR_STRDUP(pvalue, value) < 0)
goto no_memory;
if (VIR_RESIZE_N(uri->params, uri->paramsAlloc, uri->paramsCount, 1) <
0)
@@ -171,29 +171,29 @@ virURIParse(const char *uri)
goto no_memory;
if (xmluri->scheme &&
- !(ret->scheme = strdup(xmluri->scheme)))
+ VIR_STRDUP(ret->scheme, xmluri->scheme) < 0)
goto no_memory;
if (xmluri->server &&
- !(ret->server = strdup(xmluri->server)))
+ VIR_STRDUP(ret->server, xmluri->server) < 0)
goto no_memory;
ret->port = xmluri->port;
if (xmluri->path &&
- !(ret->path = strdup(xmluri->path)))
+ VIR_STRDUP(ret->path, xmluri->path) < 0)
goto no_memory;
#ifdef HAVE_XMLURI_QUERY_RAW
if (xmluri->query_raw &&
- !(ret->query = strdup(xmluri->query_raw)))
+ VIR_STRDUP(ret->query, xmluri->query_raw) < 0)
goto no_memory;
#else
if (xmluri->query &&
- !(ret->query = strdup(xmluri->query)))
+ VIR_STRDUP(ret->query, xmluri->query) < 0)
goto no_memory;
#endif
if (xmluri->fragment &&
- !(ret->fragment = strdup(xmluri->fragment)))
+ VIR_STRDUP(ret->fragment, xmluri->fragment) < 0)
goto no_memory;
if (xmluri->user &&
- !(ret->user = strdup(xmluri->user)))
+ VIR_STRDUP(ret->user, xmluri->user) < 0)
goto no_memory;
/* First check: does it even make sense to jump inside */
diff --git a/src/util/virutil.c b/src/util/virutil.c
index dc14c15..5b3c1f3 100644
--- a/src/util/virutil.c
+++ b/src/util/virutil.c
@@ -547,7 +547,7 @@ virFileResolveLinkHelper(const char *linkpath,
return -1;
if (!S_ISLNK(st.st_mode)) {
- if (!(*resultpath = strdup(linkpath)))
+ if (VIR_STRDUP(*resultpath, linkpath) < 0)
return -1;
return 0;
}
@@ -622,9 +622,10 @@ char *virFindFileInPath(const char *file)
* copy of that path, after validating that it is executable
*/
if (IS_ABSOLUTE_FILE_NAME(file)) {
- if (virFileIsExecutable(file))
- return strdup(file);
- else
+ if (virFileIsExecutable(file)) {
+ ignore_value(VIR_STRDUP(path, file));
+ return path;
+ } else
return NULL;
}
@@ -640,7 +641,7 @@ char *virFindFileInPath(const char *file)
/* copy PATH env so we can tweak it */
path = getenv("PATH");
- if (path == NULL || (path = strdup(path)) == NULL)
+ if (path == NULL || VIR_STRDUP(path, path) < 0)
return NULL;
/* for each path segment, append the file to search for and test for
@@ -1295,7 +1296,7 @@ virFileMakePathWithMode(const char *path,
int ret = -1;
char *tmp;
- if ((tmp = strdup(path)) == NULL)
+ if (VIR_STRDUP(tmp, path) < 0)
goto cleanup;
ret = virFileMakePathHelper(tmp, mode);
@@ -1502,7 +1503,7 @@ int virFileAbsPath(const char *path, char **abspath)
char *buf;
if (path[0] == '/') {
- if (!(*abspath = strdup(path)))
+ if (VIR_STRDUP(*abspath, path) < 0)
return -1;
} else {
buf = getcwd(NULL, 0);
@@ -1527,8 +1528,7 @@ virFileSanitizePath(const char *path)
char *cleanpath;
int idx = 0;
- cleanpath = strdup(path);
- if (!cleanpath) {
+ if (VIR_STRDUP(cleanpath, path) < 0) {
virReportOOMError();
return NULL;
}
@@ -1962,7 +1962,7 @@ char *virGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
* string as-is; it's up to callers to check whether "localhost"
* is allowed.
*/
- result = strdup(hostname);
+ r = VIR_STRDUP(result, hostname);
goto check_and_return;
}
@@ -1977,7 +1977,7 @@ char *virGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
if (r != 0) {
VIR_WARN("getaddrinfo failed for '%s': %s",
hostname, gai_strerror(r));
- result = strdup(hostname);
+ r = VIR_STRDUP(result, hostname);
goto check_and_return;
}
@@ -1990,15 +1990,15 @@ char *virGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
* localhost. Ignore the canonicalized name and just return the
* original hostname
*/
- result = strdup(hostname);
+ r = VIR_STRDUP(result, hostname);
else
/* Caller frees this string. */
- result = strdup(info->ai_canonname);
+ r = VIR_STRDUP(result, info->ai_canonname);
freeaddrinfo(info);
check_and_return:
- if (result == NULL)
+ if (r < 0)
virReportOOMError();
return result;
}
@@ -2051,14 +2051,10 @@ static char *virGetUserEnt(uid_t uid,
return NULL;
}
- if (field == VIR_USER_ENT_DIRECTORY)
- ret = strdup(pw->pw_dir);
- else
- ret = strdup(pw->pw_name);
-
- VIR_FREE(strbuf);
- if (!ret)
+ if (VIR_STRDUP(ret, field == VIR_USER_ENT_DIRECTORY ?
+ pw->pw_dir : pw->pw_name) < 0)
virReportOOMError();
+ VIR_FREE(strbuf);
return ret;
}
@@ -2104,12 +2100,10 @@ static char *virGetGroupEnt(gid_t gid)
return NULL;
}
- ret = strdup(gr->gr_name);
-
- VIR_FREE(strbuf);
- if (!ret)
+ if (VIR_STRDUP(ret, gr->gr_name) < 0)
virReportOOMError();
+ VIR_FREE(strbuf);
return ret;
}
@@ -2444,7 +2438,7 @@ virGetWin32SpecialFolder(int csidl, char **path)
if (SHGetSpecialFolderLocation(NULL, csidl, &pidl) == S_OK) {
if (SHGetPathFromIDList(pidl, buf)) {
- if (!(*path = strdup(buf))) {
+ if (VIR_STRDUP(*path, buf) < 0) {
virReportOOMError();
ret = -1;
}
@@ -2478,7 +2472,7 @@ virGetWin32DirectoryRoot(char **path)
strcpy(windowsdir, "C:\\");
}
- if (!(*path = strdup(windowsdir))) {
+ if (VIR_STRDUP(*path, windowsdir) < 0) {
virReportOOMError();
ret = -1;
}
@@ -2517,7 +2511,7 @@ virGetUserDirectory(void)
dir = getenv("USERPROFILE");
if (dir) {
- if (!(ret = strdup(dir))) {
+ if (VIR_STRDUP(ret, dir) < 0) {
virReportOOMError();
return NULL;
}
@@ -2809,7 +2803,8 @@ char *virFileFindMountPoint(const char *type)
while (getmntent_r(f, &mb, mntbuf, sizeof(mntbuf))) {
if (STREQ(mb.mnt_type, type)) {
- ret = strdup(mb.mnt_dir);
+ if (VIR_STRDUP(ret, mb.mnt_dir) < 0)
+ virReportOOMError();
goto cleanup;
}
}
@@ -3120,7 +3115,7 @@ virReadFCHost(const char *sysfs_prefix,
else
p = buf;
- if (!(*result = strndup(p, sizeof(buf)))) {
+ if (VIR_STRNDUP(*result, p, sizeof(buf)) < 0) {
virReportOOMError();
goto cleanup;
}
@@ -3347,7 +3342,7 @@ virGetFCHostNameByWWN(const char *sysfs_prefix,
continue;
}
- ret = strdup(entry->d_name);
+ ignore_value(VIR_STRDUP(ret, entry->d_name));
break;
}
@@ -3432,7 +3427,7 @@ virFindFCHostCapableVport(const char *sysfs_prefix)
if ((strlen(max_vports) >= strlen(vports)) ||
((strlen(max_vports) == strlen(vports)) &&
strcmp(max_vports, vports) > 0)) {
- ret = strdup(entry->d_name);
+ ignore_value(VIR_STRDUP(ret, entry->d_name));
goto cleanup;
}
diff --git a/src/util/virxml.c b/src/util/virxml.c
index 26120b6..0d8584d 100644
--- a/src/util/virxml.c
+++ b/src/util/virxml.c
@@ -87,11 +87,9 @@ virXPathString(const char *xpath,
xmlXPathFreeObject(obj);
return NULL;
}
- ret = strdup((char *) obj->stringval);
- xmlXPathFreeObject(obj);
- if (ret == NULL) {
+ if (VIR_STRDUP(ret, (char *) obj->stringval) < 0)
virReportOOMError();
- }
+ xmlXPathFreeObject(obj);
return ret;
}
--
1.8.1.5