---
src/util/virauth.c | 17 +--
src/util/virauthconfig.c | 8 +-
src/util/virbitmap.c | 9 +-
src/util/vircgroup.c | 37 ++---
src/util/vircommand.c | 33 ++---
src/util/virconf.c | 34 ++---
src/util/virdnsmasq.c | 22 +--
src/util/virebtables.c | 34 ++---
src/util/virebtables.h | 2 +-
src/util/virerror.c | 19 +--
src/util/virfile.c | 28 ++--
src/util/virhash.c | 5 +-
src/util/viridentity.c | 14 +-
src/util/virinitctl.c | 4 +-
src/util/viriptables.c | 4 +-
src/util/virjson.c | 18 ++-
src/util/virkeyfile.c | 13 +-
src/util/virlockspace.c | 25 ++--
src/util/virlog.c | 27 ++--
src/util/virnetdevmacvlan.c | 16 +--
src/util/virnetdevtap.c | 11 +-
src/util/virnetdevvportprofile.c | 4 +-
src/util/virobject.c | 16 ++-
src/util/virpci.c | 13 +-
src/util/virscsi.c | 6 +-
src/util/virsexpr.c | 37 ++---
src/util/virsocketaddr.c | 9 +-
src/util/virstoragefile.c | 18 +--
src/util/virstring.c | 17 +--
src/util/virsysinfo.c | 293 +++++++++++++++------------------------
src/util/virtypedparam.c | 14 +-
src/util/viruri.c | 58 ++++----
src/util/virutil.c | 57 +++-----
src/util/virxml.c | 5 +-
34 files changed, 357 insertions(+), 570 deletions(-)
diff --git a/src/util/virauth.c b/src/util/virauth.c
index fdcefe1..e4bc11a 100644
--- a/src/util/virauth.c
+++ b/src/util/virauth.c
@@ -51,8 +51,8 @@ int virAuthGetConfigFilePath(virConnectPtr conn,
if (authenv) {
VIR_DEBUG("Using path from env '%s'", authenv);
- if (!(*path = strdup(authenv)))
- goto no_memory;
+ if (VIR_STRDUP(*path, authenv) < 0)
+ goto cleanup;
return 0;
}
@@ -62,8 +62,8 @@ 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)))
- goto no_memory;
+ if (VIR_STRDUP(*path, conn->uri->params[i].value) < 0)
+ goto cleanup;
return 0;
}
}
@@ -81,8 +81,8 @@ int virAuthGetConfigFilePath(virConnectPtr conn,
VIR_FREE(*path);
- if (!(*path = strdup(SYSCONFDIR "/libvirt/auth.conf")))
- goto no_memory;
+ if (VIR_STRDUP(*path, SYSCONFDIR "/libvirt/auth.conf") < 0)
+ goto cleanup;
VIR_DEBUG("Checking for readability of '%s'", *path);
if (access(*path, R_OK) == 0)
@@ -136,11 +136,8 @@ virAuthGetCredential(virConnectPtr conn,
&tmp) < 0)
goto cleanup;
- if (tmp &&
- !(*value = strdup(tmp))) {
- virReportOOMError();
+ if (VIR_STRDUP(*value, tmp) < 0)
goto cleanup;
- }
ret = 0;
diff --git a/src/util/virauthconfig.c b/src/util/virauthconfig.c
index 4259cb3..c9f6046 100644
--- a/src/util/virauthconfig.c
+++ b/src/util/virauthconfig.c
@@ -47,10 +47,8 @@ virAuthConfigPtr virAuthConfigNew(const char *path)
goto error;
}
- if (!(auth->path = strdup(path))) {
- virReportOOMError();
+ if (VIR_STRDUP(auth->path, path) < 0)
goto error;
- }
if (!(auth->keyfile = virKeyFileNew()))
goto error;
@@ -77,10 +75,8 @@ virAuthConfigPtr virAuthConfigNewData(const char *path,
goto error;
}
- if (!(auth->path = strdup(path))) {
- virReportOOMError();
+ if (VIR_STRDUP(auth->path, path) < 0)
goto error;
- }
if (!(auth->keyfile = virKeyFileNew()))
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 07ea2c3..101d28c 100644
--- a/src/util/vircgroup.c
+++ b/src/util/vircgroup.c
@@ -116,19 +116,13 @@ 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 (VIR_STRDUP(group->controllers[i].linkPoint,
+ parent->controllers[i].linkPoint) < 0)
+ return -ENOMEM;
}
return 0;
}
@@ -177,7 +171,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 +233,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 +815,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;
}
@@ -1027,8 +1021,8 @@ static int virCgroupAddTaskStrController(virCgroupPtr group,
int rc = 0;
char *endp;
- if (!(str = strdup(pidstr)))
- return -1;
+ if (VIR_STRDUP(str, pidstr) < 0)
+ return -ENOMEM;
cur = str;
while (*cur != '\0') {
@@ -1266,7 +1260,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;
}
@@ -2555,13 +2549,8 @@ static char *virCgroupIdentifyRoot(virCgroupPtr group)
return NULL;
}
- tmp[0] = '\0';
- ret = strdup(group->controllers[i].mountPoint);
- tmp[0] = '/';
- if (!ret) {
- virReportOOMError();
- return NULL;
- }
+ ignore_value(VIR_STRNDUP(ret, group->controllers[i].mountPoint,
+ tmp - group->controllers[i].mountPoint));
return ret;
}
diff --git a/src/util/vircommand.c b/src/util/vircommand.c
index f6f27d9..246e146 100644
--- a/src/util/vircommand.c
+++ b/src/util/vircommand.c
@@ -946,9 +946,8 @@ 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 +1048,7 @@ virCommandSetSELinuxLabel(virCommandPtr cmd,
#if defined(WITH_SECDRIVER_SELINUX)
VIR_FREE(cmd->seLinuxLabel);
- if (label && !(cmd->seLinuxLabel = strdup(label)))
+ if (VIR_STRDUP(cmd->seLinuxLabel, label) < 0)
cmd->has_error = ENOMEM;
#endif
return;
@@ -1074,7 +1073,7 @@ virCommandSetAppArmorProfile(virCommandPtr cmd,
#if defined(WITH_SECDRIVER_APPARMOR)
VIR_FREE(cmd->appArmorProfile);
- if (profile && !(cmd->appArmorProfile = strdup(profile)))
+ if (VIR_STRDUP(cmd->appArmorProfile, profile) < 0)
cmd->has_error = ENOMEM;
#endif
return;
@@ -1205,7 +1204,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 +1308,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,11 +1349,11 @@ 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]) {
- cmd->has_error = ENOMEM;
- return;
+ if (VIR_STRDUP(cmd->args[cmd->nargs], "") < 0) {
+ cmd->has_error = ENOMEM;
+ return;
+ }
}
cmd->nargs++;
}
@@ -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..c578bf4 100644
--- a/src/util/virconf.c
+++ b/src/util/virconf.c
@@ -23,7 +23,6 @@
#include <config.h>
#include <string.h>
-
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
@@ -38,6 +37,7 @@
#include "virlog.h"
#include "viralloc.h"
#include "virfile.h"
+#include "virstring.h"
#define VIR_FROM_THIS VIR_FROM_CONF
@@ -397,11 +397,8 @@ virConfParseString(virConfParserCtxtPtr ctxt)
virConfError(ctxt, VIR_ERR_CONF_SYNTAX, _("unterminated string"));
return NULL;
}
- ret = strndup(base, ctxt->cur - base);
- if (ret == NULL) {
- virReportOOMError();
+ if (VIR_STRNDUP(ret, base, ctxt->cur - base) < 0)
return NULL;
- }
NEXT;
} else if ((ctxt->cur + 6 < ctxt->end) &&
(STRPREFIX(ctxt->cur, "\"\"\""))) {
@@ -421,11 +418,8 @@ virConfParseString(virConfParserCtxtPtr ctxt)
virConfError(ctxt, VIR_ERR_CONF_SYNTAX, _("unterminated string"));
return NULL;
}
- ret = strndup(base, ctxt->cur - base);
- if (ret == NULL) {
- virReportOOMError();
+ if (VIR_STRNDUP(ret, base, ctxt->cur - base) < 0)
return NULL;
- }
ctxt->cur += 3;
} else if (CUR == '"') {
NEXT;
@@ -436,11 +430,8 @@ virConfParseString(virConfParserCtxtPtr ctxt)
virConfError(ctxt, VIR_ERR_CONF_SYNTAX, _("unterminated string"));
return NULL;
}
- ret = strndup(base, ctxt->cur - base);
- if (ret == NULL) {
- virReportOOMError();
+ if (VIR_STRNDUP(ret, base, ctxt->cur - base) < 0)
return NULL;
- }
NEXT;
}
return ret;
@@ -577,11 +568,8 @@ virConfParseName(virConfParserCtxtPtr ctxt)
((ctxt->conf->flags & VIR_CONF_FLAG_VMX_FORMAT) &&
((CUR == ':') || (CUR == '.') || (CUR == '-')))))
NEXT;
- ret = strndup(base, ctxt->cur - base);
- if (ret == NULL) {
- virReportOOMError();
+ if (VIR_STRNDUP(ret, base, ctxt->cur - base) < 0)
return NULL;
- }
return ret;
}
@@ -604,11 +592,8 @@ 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) {
- virReportOOMError();
+ if (VIR_STRNDUP(comm, base, ctxt->cur - base) < 0)
return -1;
- }
virConfAddEntry(ctxt->conf, NULL, NULL, comm);
return 0;
}
@@ -680,9 +665,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) {
- virReportOOMError();
+ if (VIR_STRNDUP(comm, base, ctxt->cur - base) < 0) {
VIR_FREE(name);
virConfFreeValue(value);
return -1;
@@ -905,8 +888,7 @@ virConfSetValue(virConfPtr conf,
return -1;
}
cur->comment = NULL;
- if (!(cur->name = strdup(setting))) {
- virReportOOMError();
+ if (VIR_STRDUP(cur->name, setting) < 0) {
virConfFreeValue(value);
VIR_FREE(cur);
return -1;
diff --git a/src/util/virdnsmasq.c b/src/util/virdnsmasq.c
index 36f31d2..d37ee3e 100644
--- a/src/util/virdnsmasq.c
+++ b/src/util/virdnsmasq.c
@@ -118,8 +118,8 @@ addnhostsAdd(dnsmasqAddnHostsfile *addnhostsfile,
if (VIR_ALLOC(addnhostsfile->hosts[idx].hostnames) < 0)
goto alloc_error;
- if (!(addnhostsfile->hosts[idx].ip = strdup(ipstr)))
- goto alloc_error;
+ if (VIR_STRDUP(addnhostsfile->hosts[idx].ip, ipstr) < 0)
+ goto error;
addnhostsfile->hosts[idx].nhostnames = 0;
addnhostsfile->nhosts++;
@@ -128,9 +128,9 @@ addnhostsAdd(dnsmasqAddnHostsfile *addnhostsfile,
if (VIR_REALLOC_N(addnhostsfile->hosts[idx].hostnames,
addnhostsfile->hosts[idx].nhostnames + 1) < 0)
goto alloc_error;
- if
(!(addnhostsfile->hosts[idx].hostnames[addnhostsfile->hosts[idx].nhostnames]
- = strdup(name)))
- goto alloc_error;
+ if
(VIR_STRDUP(addnhostsfile->hosts[idx].hostnames[addnhostsfile->hosts[idx].nhostnames],
+ name) < 0)
+ goto error;
VIR_FREE(ipstr);
@@ -140,6 +140,7 @@ addnhostsAdd(dnsmasqAddnHostsfile *addnhostsfile,
alloc_error:
virReportOOMError();
+ error:
VIR_FREE(ipstr);
return -1;
}
@@ -470,10 +471,8 @@ dnsmasqContextNew(const char *network_name,
return NULL;
}
- if (!(ctx->config_dir = strdup(config_dir))) {
- virReportOOMError();
+ if (VIR_STRDUP(ctx->config_dir, config_dir) < 0)
goto error;
- }
if (!(ctx->hostsfile = hostsfileNew(network_name, config_dir)))
goto error;
@@ -797,14 +796,15 @@ dnsmasqCapsNewEmpty(const char *binaryPath)
return NULL;
if (!(caps = virObjectNew(dnsmasqCapsClass)))
return NULL;
- if (!(caps->flags = virBitmapNew(DNSMASQ_CAPS_LAST)))
+ if (!(caps->flags = virBitmapNew(DNSMASQ_CAPS_LAST))) {
+ virReportOOMError();
goto error;
- if (!(caps->binaryPath = strdup(binaryPath ? binaryPath : DNSMASQ)))
+ }
+ if (VIR_STRDUP(caps->binaryPath, binaryPath ? binaryPath : DNSMASQ) < 0)
goto error;
return caps;
error:
- virReportOOMError();
virObjectUnref(caps);
return NULL;
}
diff --git a/src/util/virebtables.c b/src/util/virebtables.c
index 3834ea8..9c95d57 100644
--- a/src/util/virebtables.c
+++ b/src/util/virebtables.c
@@ -52,6 +52,8 @@
#include "virstring.h"
#include "virutil.h"
+#define VIR_FROM_THIS VIR_FROM_NONE
+
#if HAVE_FIREWALLD
static char *firewall_cmd_path = NULL;
@@ -114,7 +116,7 @@ ebtRuleFree(ebtRule *rule)
static int
ebtRulesAppend(ebtRules *rules,
char *rule,
- const char **argv,
+ char **argv,
int command_idx)
{
if (VIR_REALLOC_N(rules->rules, rules->nrules+1) < 0) {
@@ -187,10 +189,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;
@@ -208,7 +210,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;
@@ -237,36 +239,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;
}
@@ -274,16 +276,16 @@ ebtablesAddRemoveRule(ebtRules *rules, int action, const char *arg,
...)
va_end(args);
- if (!(rule = virArgvToString(&argv[command_idx])))
+ if (!(rule = virArgvToString((const char **) &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 **)argv, NULL) < 0) {
retval = errno;
goto error;
}
diff --git a/src/util/virebtables.h b/src/util/virebtables.h
index 671d9dc..3dfe32b 100644
--- a/src/util/virebtables.h
+++ b/src/util/virebtables.h
@@ -31,7 +31,7 @@
typedef struct
{
char *rule;
- const char **argv;
+ char **argv;
int command_idx;
} ebtRule;
diff --git a/src/util/virerror.c b/src/util/virerror.c
index 4e1dc9a..1706630 100644
--- a/src/util/virerror.c
+++ b/src/util/virerror.c
@@ -164,7 +164,8 @@ 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 +185,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;
@@ -667,7 +668,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);
@@ -687,11 +688,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/virfile.c b/src/util/virfile.c
index 4637919..a05e9ea 100644
--- a/src/util/virfile.c
+++ b/src/util/virfile.c
@@ -1059,7 +1059,7 @@ virFileFindMountPoint(const char *type)
while (getmntent_r(f, &mb, mntbuf, sizeof(mntbuf))) {
if (STREQ(mb.mnt_type, type)) {
- ret = strdup(mb.mnt_dir);
+ ignore_value(VIR_STRDUP(ret, mb.mnt_dir));
goto cleanup;
}
}
@@ -1299,11 +1299,8 @@ virFileResolveLinkHelper(const char *linkpath,
if (lstat(linkpath, &st) < 0)
return -1;
- if (!S_ISLNK(st.st_mode)) {
- if (!(*resultpath = strdup(linkpath)))
- return -1;
- return 0;
- }
+ if (!S_ISLNK(st.st_mode))
+ return VIR_STRDUP(*resultpath, linkpath) < 0 ? -1 : 0 ;
}
*resultpath = canonicalize_file_name(linkpath);
@@ -1377,10 +1374,10 @@ virFindFileInPath(const char *file)
* copy of that path, after validating that it is executable
*/
if (IS_ABSOLUTE_FILE_NAME(file)) {
+ char *ret = NULL;
if (virFileIsExecutable(file))
- return strdup(file);
- else
- return NULL;
+ ignore_value(VIR_STRDUP(ret, file));
+ return ret;
}
/* If we are passed an anchored path (containing a /), then there
@@ -1395,7 +1392,7 @@ virFindFileInPath(const char *file)
/* copy PATH env so we can tweak it */
path = getenv("PATH");
- if (path == NULL || (path = strdup(path)) == NULL)
+ if (VIR_STRDUP(path, path) <= 0)
return NULL;
/* for each path segment, append the file to search for and test for
@@ -2047,8 +2044,10 @@ virFileMakePathWithMode(const char *path,
int ret = -1;
char *tmp;
- if ((tmp = strdup(path)) == NULL)
+ if (VIR_STRDUP(tmp, path) < 0) {
+ errno = ENOMEM;
goto cleanup;
+ }
ret = virFileMakePathHelper(tmp, mode);
@@ -2257,7 +2256,7 @@ 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);
@@ -2282,11 +2281,8 @@ virFileSanitizePath(const char *path)
char *cleanpath;
int idx = 0;
- cleanpath = strdup(path);
- if (!cleanpath) {
- virReportOOMError();
+ if (VIR_STRDUP(cleanpath, path) < 0)
return NULL;
- }
/* Need to sanitize:
* // -> //
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 840485a..10334da 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,11 @@ virIdentityPtr virIdentityGetSystem(void)
_("Unable to lookup SELinux process context"));
goto cleanup;
}
- seccontext = strdup(con);
+ if (VIR_STRDUP(seccontext, con) < 0) {
+ freecon(con);
+ goto cleanup;
+ }
freecon(con);
- if (!seccontext) {
- virReportOOMError();
- goto cleanup;
- }
#endif
if (!(ret = virIdentityNew()))
@@ -246,10 +246,8 @@ int virIdentitySetAttr(virIdentityPtr ident,
goto cleanup;
}
- if (!(ident->attrs[attr] = strdup(value))) {
- virReportOOMError();
+ if (VIR_STRDUP(ident->attrs[attr], value) < 0)
goto cleanup;
- }
ret = 0;
diff --git a/src/util/virinitctl.c b/src/util/virinitctl.c
index 59db057..b980952 100644
--- a/src/util/virinitctl.c
+++ b/src/util/virinitctl.c
@@ -137,10 +137,8 @@ int virInitctlSetRunLevel(virInitctlRunLevel level,
return -1;
}
} else {
- if (!(path = strdup(VIR_INITCTL_FIFO))) {
- virReportOOMError();
+ if (VIR_STRDUP(path, VIR_INITCTL_FIFO) < 0)
return -1;
- }
}
if ((fd = open(path, O_WRONLY|O_NONBLOCK|O_CLOEXEC|O_NOCTTY)) < 0) {
diff --git a/src/util/viriptables.c b/src/util/viriptables.c
index b0fe2b0..16fbe9c 100644
--- a/src/util/viriptables.c
+++ b/src/util/viriptables.c
@@ -119,10 +119,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 9410b66..6b632c6 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,
@@ -783,10 +783,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);
@@ -840,8 +840,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;
}
@@ -1126,8 +1125,7 @@ char *virJSONValueToString(virJSONValuePtr object,
goto cleanup;
}
- if (!(ret = strdup((const char *)str)))
- virReportOOMError();
+ ignore_value(VIR_STRDUP(ret, (const char *)str));
cleanup:
yajl_gen_free(g);
diff --git a/src/util/virkeyfile.c b/src/util/virkeyfile.c
index 1732d0c..b6220bc 100644
--- a/src/util/virkeyfile.c
+++ b/src/util/virkeyfile.c
@@ -33,6 +33,7 @@
#include "virhash.h"
#include "virkeyfile.h"
#include "virerror.h"
+#include "virstring.h"
#define VIR_FROM_THIS VIR_FROM_CONF
@@ -122,10 +123,8 @@ static int virKeyFileParseGroup(virKeyFileParserCtxtPtr ctxt)
return -1;
}
- if (!(ctxt->groupname = strndup(name, ctxt->cur - name))) {
- virReportOOMError();
+ if (VIR_STRNDUP(ctxt->groupname, name, ctxt->cur - name) < 0)
return -1;
- }
NEXT;
@@ -168,10 +167,8 @@ static int virKeyFileParseValue(virKeyFileParserCtxtPtr ctxt)
return -1;
}
- if (!(key = strndup(keystart, ctxt->cur - keystart))) {
- virReportOOMError();
+ if (VIR_STRNDUP(key, keystart, ctxt->cur - keystart) < 0)
return -1;
- }
NEXT;
valuestart = ctxt->cur;
@@ -184,10 +181,8 @@ static int virKeyFileParseValue(virKeyFileParserCtxtPtr ctxt)
len = ctxt->cur - valuestart;
if (IS_EOF && !IS_EOL(CUR))
len++;
- if (!(value = strndup(valuestart, len))) {
- virReportOOMError();
+ if (VIR_STRNDUP(value, valuestart, len) < 0)
goto cleanup;
- }
if (virHashAddEntry(ctxt->group, key, value) < 0) {
VIR_FREE(value);
diff --git a/src/util/virlockspace.c b/src/util/virlockspace.c
index 620a460..b7a1c35 100644
--- a/src/util/virlockspace.c
+++ b/src/util/virlockspace.c
@@ -70,10 +70,8 @@ static char *virLockSpaceGetResourcePath(virLockSpacePtr lockspace,
return NULL;
}
} else {
- if (!(ret = strdup(resname))) {
- virReportOOMError();
+ if (VIR_STRDUP(ret, resname) < 0)
return NULL;
- }
}
return ret;
@@ -132,8 +130,8 @@ virLockSpaceResourceNew(virLockSpacePtr lockspace,
res->fd = -1;
res->flags = flags;
- if (!(res->name = strdup(resname)))
- goto no_memory;
+ if (VIR_STRDUP(res->name, resname) < 0)
+ goto error;
if (!(res->path = virLockSpaceGetResourcePath(lockspace, resname)))
goto no_memory;
@@ -262,9 +260,8 @@ virLockSpacePtr virLockSpaceNew(const char *directory)
return NULL;
}
- if (directory &&
- !(lockspace->dir = strdup(directory)))
- goto no_memory;
+ if (VIR_STRDUP(lockspace->dir, directory) < 0)
+ goto error;
if (!(lockspace->resources = virHashCreate(VIR_LOCKSPACE_TABLE_SIZE,
virLockSpaceResourceDataFree)))
@@ -290,8 +287,6 @@ virLockSpacePtr virLockSpaceNew(const char *directory)
return lockspace;
-no_memory:
- virReportOOMError();
error:
virLockSpaceFree(lockspace);
return NULL;
@@ -324,10 +319,8 @@ virLockSpacePtr virLockSpaceNewPostExecRestart(virJSONValuePtr
object)
if (virJSONValueObjectHasKey(object, "directory")) {
const char *dir = virJSONValueObjectGetString(object, "directory");
- if (!(lockspace->dir = strdup(dir))) {
- virReportOOMError();
+ if (VIR_STRDUP(lockspace->dir, dir) < 0)
goto error;
- }
}
if (!(resources = virJSONValueObjectGet(object, "resources"))) {
@@ -362,8 +355,7 @@ virLockSpacePtr virLockSpaceNewPostExecRestart(virJSONValuePtr
object)
virLockSpaceResourceFree(res);
goto error;
}
- if (!(res->name = strdup(tmp))) {
- virReportOOMError();
+ if (VIR_STRDUP(res->name, tmp) < 0) {
virLockSpaceResourceFree(res);
goto error;
}
@@ -374,8 +366,7 @@ virLockSpacePtr virLockSpaceNewPostExecRestart(virJSONValuePtr
object)
virLockSpaceResourceFree(res);
goto error;
}
- if (!(res->path = strdup(tmp))) {
- virReportOOMError();
+ if (VIR_STRDUP(res->path, tmp) < 0) {
virLockSpaceResourceFree(res);
goto error;
}
diff --git a/src/util/virlog.c b/src/util/virlog.c
index 62ff838..d939d71 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_QUIET(mdup, match) < 0) {
i = -1;
goto cleanup;
}
@@ -574,6 +573,8 @@ virLogDefineFilter(const char *match,
virLogNbFilters++;
cleanup:
virLogUnlock();
+ if (i < 0)
+ virReportOOMError();
return i;
}
@@ -664,13 +665,9 @@ virLogDefineOutput(virLogOutputFunc f,
if (f == NULL)
return -1;
- if (dest == VIR_LOG_TO_SYSLOG || dest == VIR_LOG_TO_FILE) {
- if (name == NULL)
- return -1;
- ndup = strdup(name);
- if (ndup == NULL)
- return -1;
- }
+ if ((dest == VIR_LOG_TO_SYSLOG || dest == VIR_LOG_TO_FILE) &&
+ VIR_STRDUP(ndup, name) <= 0)
+ return -1;
virLogLock();
if (VIR_REALLOC_N(virLogOutputs, virLogNbOutputs + 1)) {
@@ -1047,8 +1044,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 +1325,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 +1341,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 +1418,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 5316520..a72b68c 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,14 +765,14 @@ virNetDevMacVLanVPortProfileRegisterCallback(const char *ifname,
if (virtPortProfile && virNetlinkEventServiceIsRunning(NETLINK_ROUTE)) {
if (VIR_ALLOC(calld) < 0)
goto memory_error;
- if ((calld->cr_ifname = strdup(ifname)) == NULL)
- goto memory_error;
+ if (VIR_STRDUP(calld->cr_ifname, ifname) < 0)
+ goto 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)
- goto memory_error;
+ if (VIR_STRDUP(calld->linkdev, linkdev) < 0)
+ goto error;
memcpy(calld->vmuuid, vmuuid, sizeof(calld->vmuuid));
calld->vmOp = vmOp;
@@ -924,16 +925,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))) {
- virReportOOMError();
+ if (VIR_STRDUP(*res_ifname, cr_ifname) < 0)
goto disassociate_exit;
- }
rc = 0;
}
diff --git a/src/util/virnetdevtap.c b/src/util/virnetdevtap.c
index 75599db..10566a1 100644
--- a/src/util/virnetdevtap.c
+++ b/src/util/virnetdevtap.c
@@ -64,12 +64,7 @@ virNetDevTapGetName(int tapfd ATTRIBUTE_UNUSED, char **ifname
ATTRIBUTE_UNUSED)
return -1;
}
- *ifname = strdup(ifr.ifr_name);
- if (*ifname == NULL) {
- virReportOOMError();
- return -1;
- }
- return 0;
+ return VIR_STRDUP(*ifname, ifr.ifr_name) < 0 ? -1 : 0;
#else
return -1;
#endif
@@ -204,10 +199,8 @@ int virNetDevTapCreate(char **ifname,
}
VIR_FREE(*ifname);
- if (!(*ifname = strdup(ifr.ifr_name))) {
- virReportOOMError();
+ if (VIR_STRDUP(*ifname, ifr.ifr_name) < 0)
goto cleanup;
- }
if (tapfd)
*tapfd = fd;
else
diff --git a/src/util/virnetdevvportprofile.c b/src/util/virnetdevvportprofile.c
index 883aa46..c337fb3 100644
--- a/src/util/virnetdevvportprofile.c
+++ b/src/util/virnetdevvportprofile.c
@@ -1034,9 +1034,7 @@ virNetDevVPortProfileOp8021Qbh(const char *ifname,
goto cleanup;
}
} else {
- physfndev = strdup(ifname);
- if (!physfndev) {
- virReportOOMError();
+ if (VIR_STRDUP(physfndev, ifname) < 0) {
rc = -1;
goto cleanup;
}
diff --git a/src/util/virobject.c b/src/util/virobject.c
index 93e37e4..72a5248 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;
@@ -131,21 +132,22 @@ virClassPtr virClassNew(virClassPtr parent,
return NULL;
}
- if (VIR_ALLOC(klass) < 0)
- goto no_memory;
+ if (VIR_ALLOC(klass) < 0) {
+ virReportOOMError();
+ goto error;
+ }
klass->parent = parent;
- if (!(klass->name = strdup(name)))
- goto no_memory;
+ if (VIR_STRDUP(klass->name, name) < 0)
+ goto error;
klass->magic = virAtomicIntInc(&magicCounter);
klass->objectSize = objectSize;
klass->dispose = dispose;
return klass;
-no_memory:
+error:
VIR_FREE(klass);
- virReportOOMError();
return NULL;
}
diff --git a/src/util/virpci.c b/src/util/virpci.c
index 5865613..cdc33c9 100644
--- a/src/util/virpci.c
+++ b/src/util/virpci.c
@@ -947,10 +947,8 @@ virPCIDeviceUnbindFromStub(virPCIDevicePtr dev)
goto cleanup;
}
/* drvdir = "/sys/bus/pci/drivers/${drivername}" */
- if (!(driver = strdup(last_component(drvdir)))) {
- virReportOOMError();
+ if (VIR_STRDUP(driver, last_component(drvdir)) < 0)
goto cleanup;
- }
if (!dev->unbind_from_stub)
goto remove_slot;
@@ -1392,10 +1390,8 @@ virPCIGetAddrString(unsigned int domain,
dev = virPCIDeviceNew(domain, bus, slot, function);
if (dev != NULL) {
- if ((*pciConfigAddr = strdup(dev->name)) == NULL) {
- virReportOOMError();
+ if (VIR_STRDUP(*pciConfigAddr, dev->name) < 0)
goto cleanup;
- }
ret = 0;
}
@@ -2268,10 +2264,7 @@ virPCIGetNetName(char *device_link_sysfs_path, char **netname)
continue;
/* Assume a single directory entry */
- *netname = strdup(entry->d_name);
- if (!*netname)
- virReportOOMError();
- else
+ if (VIR_STRDUP(*netname, entry->d_name) > 0)
ret = 0;
break;
}
diff --git a/src/util/virscsi.c b/src/util/virscsi.c
index bdd06fd..4870307 100644
--- a/src/util/virscsi.c
+++ b/src/util/virscsi.c
@@ -177,10 +177,8 @@ virSCSIDeviceGetDevName(const char *adapter,
if (entry->d_name[0] == '.')
continue;
- if (!(name = strdup(entry->d_name))) {
- virReportOOMError();
- goto cleanup;
- }
+ ignore_value(VIR_STRDUP(name, entry->d_name));
+ break;
}
cleanup:
diff --git a/src/util/virsexpr.c b/src/util/virsexpr.c
index 23b6781..fea1928 100644
--- a/src/util/virsexpr.c
+++ b/src/util/virsexpr.c
@@ -119,16 +119,10 @@ 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) {
+ 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,11 +319,8 @@ _string2sexpr(const char *buffer, size_t * end)
ptr++;
}
- ret->u.value = strndup(start, ptr - start);
- if (ret->u.value == NULL) {
- virReportOOMError();
+ if (VIR_STRNDUP(ret->u.value, start, ptr - start) < 0)
goto error;
- }
if (*ptr == '\'')
ptr++;
@@ -341,11 +332,8 @@ _string2sexpr(const char *buffer, size_t * end)
ptr++;
}
- ret->u.value = strndup(start, ptr - start);
- if (ret->u.value == NULL) {
- virReportOOMError();
+ if (VIR_STRNDUP(ret->u.value, start, ptr - start) < 0)
goto error;
- }
}
ret->kind = SEXPR_VALUE;
@@ -403,12 +391,8 @@ sexpr_lookup_key(const struct sexpr *sexpr, const char *node)
if ((node == NULL) || (sexpr == NULL))
return NULL;
- buffer = strdup(node);
-
- if (buffer == NULL) {
- virReportOOMError();
+ if (VIR_STRDUP(buffer, node) < 0)
return NULL;
- }
ptr = buffer;
token = strsep(&ptr, "/");
@@ -527,13 +511,10 @@ 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))
- return -1;
- } else {
- *dst = NULL;
- }
+ if (val && *val)
+ return VIR_STRDUP(*dst, val) < 0 ? -1 : 0;
+
+ *dst = NULL;
return 0;
}
diff --git a/src/util/virsocketaddr.c b/src/util/virsocketaddr.c
index d6a0d93..1a6714e 100644
--- a/src/util/virsocketaddr.c
+++ b/src/util/virsocketaddr.c
@@ -272,8 +272,8 @@ virSocketAddrFormatFull(virSocketAddrPtr addr,
separator ? separator : ":") < 0)
goto no_memory;
} else {
- if (!(addrstr = strdup("127.0.0.1")))
- goto no_memory;
+ if (VIR_STRDUP(addrstr, "127.0.0.1") < 0)
+ goto error;
}
return addrstr;
}
@@ -293,14 +293,15 @@ virSocketAddrFormatFull(virSocketAddrPtr addr,
if (virAsprintf(&addrstr, "%s%s%s", host, separator, port) == -1)
goto no_memory;
} else {
- if (!(addrstr = strdup(host)))
- goto no_memory;
+ if (VIR_STRDUP(addrstr, host) < 0)
+ goto error;
}
return addrstr;
no_memory:
virReportOOMError();
+error:
return NULL;
}
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 0c43397..9ef9dd4 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -228,11 +228,8 @@ cowGetBackingStore(char **res,
return BACKING_STORE_OK;
}
- *res = strndup((const char*)buf + 4+4, COW_FILENAME_MAXLEN);
- if (*res == NULL) {
- virReportOOMError();
+ if (VIR_STRNDUP(*res, (const char*)buf + 4 + 4, COW_FILENAME_MAXLEN) < 0)
return BACKING_STORE_ERROR;
- }
return BACKING_STORE_OK;
}
@@ -440,11 +437,8 @@ vmdk4GetBackingStore(char **res,
goto cleanup;
}
*end = '\0';
- *res = strdup(start);
- if (*res == NULL) {
- virReportOOMError();
+ if (VIR_STRDUP(*res, start) < 0)
goto cleanup;
- }
ret = BACKING_STORE_OK;
@@ -775,9 +769,7 @@ virStorageFileGetMetadataInternal(const char *path,
meta->backingStoreIsFile = false;
if (backing != NULL) {
- meta->backingStore = strdup(backing);
- if (meta->backingStore == NULL) {
- virReportOOMError();
+ if (VIR_STRDUP(meta->backingStore, backing) < 0) {
VIR_FREE(backing);
goto cleanup;
}
@@ -1096,10 +1088,8 @@ int virStorageFileIsSharedFSType(const char *path,
struct statfs sb;
int statfs_ret;
- if ((dirpath = strdup(path)) == NULL) {
- virReportOOMError();
+ if (VIR_STRDUP(dirpath, path) < 0)
return -1;
- }
do {
diff --git a/src/util/virstring.c b/src/util/virstring.c
index 1640d8c..1dd66e4 100644
--- a/src/util/virstring.c
+++ b/src/util/virstring.c
@@ -85,8 +85,8 @@ char **virStringSplit(const char *string,
if (VIR_RESIZE_N(tokens, maxtokens, ntokens, 1) < 0)
goto no_memory;
- if (!(tokens[ntokens] = strndup(remainder, len)))
- goto no_memory;
+ if (VIR_STRNDUP(tokens[ntokens], remainder, len) < 0)
+ goto error;
ntokens++;
remainder = tmp + delimlen;
tmp = strstr(remainder, delim);
@@ -96,8 +96,8 @@ char **virStringSplit(const char *string,
if (VIR_RESIZE_N(tokens, maxtokens, ntokens, 1) < 0)
goto no_memory;
- if (!(tokens[ntokens] = strdup(remainder)))
- goto no_memory;
+ if (VIR_STRDUP(tokens[ntokens], remainder) < 0)
+ goto error;
ntokens++;
}
@@ -109,6 +109,7 @@ char **virStringSplit(const char *string,
no_memory:
virReportOOMError();
+error:
for (i = 0 ; i < ntokens ; i++)
VIR_FREE(tokens[i]);
VIR_FREE(tokens);
@@ -144,12 +145,8 @@ char *virStringJoin(const char **strings,
return NULL;
}
ret = virBufferContentAndReset(&buf);
- if (!ret) {
- if (!(ret = strdup(""))) {
- virReportOOMError();
- return NULL;
- }
- }
+ if (!ret)
+ ignore_value(VIR_STRDUP(ret, ""));
return ret;
}
diff --git a/src/util/virsysinfo.c b/src/util/virsysinfo.c
index 686cd49..4868a5f 100644
--- a/src/util/virsysinfo.c
+++ b/src/util/virsysinfo.c
@@ -145,32 +145,26 @@ 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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->system_family, cur, eol - cur) < 0)
+ return -1;
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->system_serial, cur, eol - cur) < 0)
+ return -1;
}
if ((cur = strstr(base, "machine")) != NULL) {
cur = strchr(cur, ':') + 1;
eol = strchr(cur, '\n');
virSkipSpaces(&cur);
- if (eol && ((ret->system_version = strndup(cur, eol - cur))
- == NULL))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->system_version, cur, eol - cur) < 0)
+ return -1;
}
return 0;
-
-no_memory:
- return -1;
}
static int
@@ -186,43 +180,37 @@ virSysinfoParseProcessor(const char *base, virSysinfoDefPtr ret)
cur = strchr(base, ':') + 1;
if (VIR_EXPAND_N(ret->processor, ret->nprocessor, 1) < 0) {
- goto no_memory;
+ return -1;
}
processor = &ret->processor[ret->nprocessor - 1];
virSkipSpaces(&cur);
- if (eol &&
- ((processor->processor_socket_destination = strndup
- (cur, eol - cur)) == NULL))
- goto no_memory;
+ if (eol && VIR_STRNDUP(processor->processor_socket_destination,
+ cur, eol - cur) < 0)
+ return -1;
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(processor->processor_type,
+ cur, eol - cur) < 0)
+ return -1;
}
if ((cur = strstr(base, "revision")) != NULL) {
cur = strchr(cur, ':') + 1;
eol = strchr(cur, '\n');
virSkipSpaces(&cur);
- if (eol &&
- ((processor->processor_version = strndup(cur, eol - cur))
- == NULL))
- goto no_memory;
+ if (eol && VIR_STRNDUP(processor->processor_version,
+ cur, eol - cur) < 0)
+ return -1;
}
base = cur;
}
return 0;
-
-no_memory:
- return -1;
}
/* virSysinfoRead for PowerPC
@@ -271,32 +259,26 @@ 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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->system_family, cur, eol - cur) < 0)
+ return -1;
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->system_serial, cur, eol - cur) < 0)
+ return -1;
}
if ((cur = strstr(base, "machine")) != NULL) {
cur = strchr(cur, ':') + 1;
eol = strchr(cur, '\n');
virSkipSpaces(&cur);
- if (eol && ((ret->system_version = strndup(cur, eol - cur))
- == NULL))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->system_version, cur, eol - cur) < 0)
+ return -1;
}
return 0;
-
-no_memory:
- return -1;
}
static int
@@ -314,10 +296,8 @@ 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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(processor_type, cur, eol - cur) < 0)
+ goto error;
base = cur;
while ((tmp_base = strstr(base, "processor")) != NULL) {
@@ -326,19 +306,20 @@ virSysinfoParseProcessor(const char *base, virSysinfoDefPtr ret)
cur = strchr(base, ':') + 1;
if (VIR_EXPAND_N(ret->processor, ret->nprocessor, 1) < 0) {
- goto no_memory;
+ virReportOOMError();
+ goto error;
}
processor = &ret->processor[ret->nprocessor - 1];
virSkipSpaces(&cur);
if (eol &&
- ((processor->processor_socket_destination = strndup
- (cur, eol - cur)) == NULL))
- goto no_memory;
+ VIR_STRNDUP(processor->processor_socket_destination,
+ cur, eol - cur) < 0)
+ goto error;
if (processor_type &&
- !(processor->processor_type = strdup(processor_type)))
- goto no_memory;
+ VIR_STRDUP(processor->processor_type, processor_type) < 0)
+ goto error;
base = cur;
}
@@ -346,7 +327,7 @@ virSysinfoParseProcessor(const char *base, virSysinfoDefPtr ret)
VIR_FREE(processor_type);
return 0;
-no_memory:
+error:
VIR_FREE(processor_type);
return -1;
}
@@ -409,15 +390,11 @@ virSysinfoParseDelimited(const char *base, const char *name, char
**value,
start += 1;
end = strchrnul(start, delim2);
virSkipSpaces(&start);
- if (!((*value) = strndup(start, end - start))) {
- virReportOOMError();
- goto error;
- }
+ if (VIR_STRNDUP(*value, start, end - start) < 0)
+ return NULL;
virTrimSpaces(*value, NULL);
return end;
}
-
-error:
return NULL;
}
@@ -463,7 +440,8 @@ 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)
+ goto cleanup;
if (!virSysinfoParseDelimited(procline, "version",
&processor->processor_version,
'=', ',') ||
@@ -557,32 +535,29 @@ 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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->bios_vendor, cur, eol - cur) < 0)
+ return -1;
}
if ((cur = strstr(base, "Version: ")) != NULL) {
cur += 9;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->bios_version = strndup(cur, eol - cur)) == NULL))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->bios_version, cur, eol - cur) < 0)
+ return -1;
}
if ((cur = strstr(base, "Release Date: ")) != NULL) {
cur += 14;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->bios_date = strndup(cur, eol - cur)) == NULL))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->bios_date, cur, eol - cur) < 0)
+ return -1;
}
if ((cur = strstr(base, "BIOS Revision: ")) != NULL) {
cur += 15;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->bios_release = strndup(cur, eol - cur)) == NULL))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->bios_release, cur, eol - cur) < 0)
+ return -1;
}
return 0;
-
-no_memory:
- return -1;
}
static int
@@ -597,51 +572,47 @@ 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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->system_manufacturer, cur, eol - cur) <
0)
+ return -1;
}
if ((cur = strstr(base, "Product Name: ")) != NULL) {
cur += 14;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->system_product = strndup(cur, eol - cur)) ==
NULL))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->system_product, cur, eol - cur) < 0)
+ return -1;
}
if ((cur = strstr(base, "Version: ")) != NULL) {
cur += 9;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->system_version = strndup(cur, eol - cur)) ==
NULL))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->system_version, cur, eol - cur) < 0)
+ return -1;
}
if ((cur = strstr(base, "Serial Number: ")) != NULL) {
cur += 15;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->system_serial = strndup(cur, eol - cur)) ==
NULL))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->system_serial, cur, eol - cur) < 0)
+ return -1;
}
if ((cur = strstr(base, "UUID: ")) != NULL) {
cur += 6;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->system_uuid = strndup(cur, eol - cur)) == NULL))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->system_uuid, cur, eol - cur) < 0)
+ return -1;
}
if ((cur = strstr(base, "SKU Number: ")) != NULL) {
cur += 12;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->system_sku = strndup(cur, eol - cur)) == NULL))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->system_sku, cur, eol - cur) < 0)
+ return -1;
}
if ((cur = strstr(base, "Family: ")) != NULL) {
cur += 8;
eol = strchr(cur, '\n');
- if ((eol) && ((ret->system_family = strndup(cur, eol - cur)) ==
NULL))
- goto no_memory;
+ if (eol && VIR_STRNDUP(ret->system_family, cur, eol - cur) < 0)
+ return -1;
}
return 0;
-
-no_memory:
- return -1;
}
static int
@@ -655,117 +626,100 @@ virSysinfoParseProcessor(const char *base, virSysinfoDefPtr ret)
base = tmp_base;
eol = NULL;
- if (VIR_EXPAND_N(ret->processor, ret->nprocessor, 1) < 0) {
- goto no_memory;
- }
+ if (VIR_EXPAND_N(ret->processor, ret->nprocessor, 1) < 0)
+ return -1;
processor = &ret->processor[ret->nprocessor - 1];
if ((cur = strstr(base, "Socket Designation: ")) != NULL) {
cur += 20;
eol = strchr(cur, '\n');
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((processor->processor_socket_destination
- = strndup(cur, eol - cur)) == NULL))
- goto no_memory;
+ if (eol && VIR_STRNDUP(processor->processor_socket_destination,
+ cur, eol - cur) < 0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(processor->processor_type, cur, eol - cur)
< 0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(processor->processor_family, cur, eol -
cur) < 0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(processor->processor_manufacturer,
+ cur, eol - cur) < 0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(processor->processor_signature,
+ cur, eol - cur) < 0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(processor->processor_version,
+ cur, eol - cur) < 0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(processor->processor_external_clock,
+ cur, eol - cur) < 0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(processor->processor_max_speed,
+ cur, eol - cur) < 0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(processor->processor_status, cur, eol -
cur) < 0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(processor->processor_serial_number,
+ cur, eol - cur) < 0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(processor->processor_part_number,
+ cur, eol - cur) < 0)
+ return -1;
}
base += strlen("Processor Information");
}
return 0;
-
-no_memory:
- return -1;
}
static int
@@ -779,9 +733,8 @@ virSysinfoParseMemory(const char *base, virSysinfoDefPtr ret)
base = tmp_base;
eol = NULL;
- if (VIR_EXPAND_N(ret->memory, ret->nmemory, 1) < 0) {
- goto no_memory;
- }
+ if (VIR_EXPAND_N(ret->memory, ret->nmemory, 1) < 0)
+ return -1;
memory = &ret->memory[ret->nmemory - 1];
if ((cur = strstr(base, "Size: ")) != NULL) {
@@ -791,87 +744,74 @@ virSysinfoParseMemory(const char *base, virSysinfoDefPtr ret)
goto next;
virSkipSpacesBackwards(cur, &eol);
- if ((eol) &&
- ((memory->memory_size = strndup(cur, eol - cur)) == NULL))
- goto no_memory;
+ if (eol && VIR_STRNDUP(memory->memory_size, cur, eol - cur) <
0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(memory->memory_form_factor,
+ cur, eol - cur) < 0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(memory->memory_locator,cur, eol - cur) <
0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(memory->memory_bank_locator,
+ cur, eol - cur) < 0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(memory->memory_type, cur, eol - cur) <
0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(memory->memory_type_detail, cur, eol - cur)
< 0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(memory->memory_speed, cur, eol - cur) <
0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(memory->memory_manufacturer, cur, eol -
cur) < 0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(memory->memory_serial_number,
+ cur, eol - cur) < 0)
+ return -1;
}
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))
- goto no_memory;
+ if (eol && VIR_STRNDUP(memory->memory_part_number, cur, eol - cur)
< 0)
+ return -1;
}
next:
@@ -879,9 +819,6 @@ virSysinfoParseMemory(const char *base, virSysinfoDefPtr ret)
}
return 0;
-
-no_memory:
- return -1;
}
virSysinfoDefPtr
diff --git a/src/util/virtypedparam.c b/src/util/virtypedparam.c
index a9f8a33..bf374a6 100644
--- a/src/util/virtypedparam.c
+++ b/src/util/virtypedparam.c
@@ -150,12 +150,8 @@ 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) {
- virReportOOMError();
+ if (!param->value.s && VIR_STRDUP(param->value.s, "")
< 0)
goto cleanup;
- }
break;
default:
virReportError(VIR_ERR_INTERNAL_ERROR,
@@ -248,10 +244,8 @@ virTypedParameterAssignFromStr(virTypedParameterPtr param, const char
*name,
}
break;
case VIR_TYPED_PARAM_STRING:
- if (!(param->value.s = strdup(val))) {
- virReportOOMError();
+ if (VIR_STRDUP(param->value.s, val) < 0)
goto cleanup;
- }
break;
default:
virReportError(VIR_ERR_INTERNAL_ERROR,
@@ -913,10 +907,8 @@ virTypedParamsAddString(virTypedParameterPtr *params,
}
*maxparams = max;
- if (value && !(str = strdup(value))) {
- virReportOOMError();
+ if (VIR_STRDUP(str, value) < 0)
goto error;
- }
if (virTypedParameterAssign(*params + n, name,
VIR_TYPED_PARAM_STRING, str) < 0) {
diff --git a/src/util/viruri.c b/src/util/viruri.c
index 2a75425..c0ee472 100644
--- a/src/util/viruri.c
+++ b/src/util/viruri.c
@@ -37,13 +37,13 @@ virURIParamAppend(virURIPtr uri,
char *pname = NULL;
char *pvalue = NULL;
- if (!(pname = strdup(name)))
- goto no_memory;
- if (!(pvalue = strdup(value)))
- goto no_memory;
+ if (VIR_STRDUP(pname, name) < 0 || VIR_STRDUP(pvalue, value) < 0)
+ goto error;
- if (VIR_RESIZE_N(uri->params, uri->paramsAlloc, uri->paramsCount, 1) <
0)
- goto no_memory;
+ if (VIR_RESIZE_N(uri->params, uri->paramsAlloc, uri->paramsCount, 1) < 0)
{
+ virReportOOMError();
+ goto error;
+ }
uri->params[uri->paramsCount].name = pname;
uri->params[uri->paramsCount].value = pvalue;
@@ -52,10 +52,9 @@ virURIParamAppend(virURIPtr uri,
return 0;
-no_memory:
+error:
VIR_FREE(pname);
VIR_FREE(pvalue);
- virReportOOMError();
return -1;
}
@@ -167,34 +166,29 @@ virURIParse(const char *uri)
return NULL;
}
- if (VIR_ALLOC(ret) < 0)
- goto no_memory;
+ if (VIR_ALLOC(ret) < 0) {
+ virReportOOMError();
+ goto error;
+ }
- if (xmluri->scheme &&
- !(ret->scheme = strdup(xmluri->scheme)))
- goto no_memory;
- if (xmluri->server &&
- !(ret->server = strdup(xmluri->server)))
- goto no_memory;
+ if (VIR_STRDUP(ret->scheme, xmluri->scheme) < 0)
+ goto error;
+ if (VIR_STRDUP(ret->server, xmluri->server) < 0)
+ goto error;
ret->port = xmluri->port;
- if (xmluri->path &&
- !(ret->path = strdup(xmluri->path)))
- goto no_memory;
+ if (VIR_STRDUP(ret->path, xmluri->path) < 0)
+ goto error;
#ifdef HAVE_XMLURI_QUERY_RAW
- if (xmluri->query_raw &&
- !(ret->query = strdup(xmluri->query_raw)))
- goto no_memory;
+ if (VIR_STRDUP(ret->query, xmluri->query_raw) < 0)
+ goto error;
#else
- if (xmluri->query &&
- !(ret->query = strdup(xmluri->query)))
- goto no_memory;
+ if (VIR_STRDUP(ret->query, xmluri->query) < 0)
+ goto error;
#endif
- if (xmluri->fragment &&
- !(ret->fragment = strdup(xmluri->fragment)))
- goto no_memory;
- if (xmluri->user &&
- !(ret->user = strdup(xmluri->user)))
- goto no_memory;
+ if (VIR_STRDUP(ret->fragment, xmluri->fragment) < 0)
+ goto error;
+ if (VIR_STRDUP(ret->user, xmluri->user) < 0)
+ goto error;
/* First check: does it even make sense to jump inside */
if (ret->server != NULL &&
@@ -220,8 +214,6 @@ virURIParse(const char *uri)
return ret;
-no_memory:
- virReportOOMError();
error:
xmlFreeURI(xmluri);
virURIFree(ret);
diff --git a/src/util/virutil.c b/src/util/virutil.c
index 7f4ecd6..29df561 100644
--- a/src/util/virutil.c
+++ b/src/util/virutil.c
@@ -609,8 +609,8 @@ char *virGetHostname(void)
* string as-is; it's up to callers to check whether "localhost"
* is allowed.
*/
- result = strdup(hostname);
- goto check_and_return;
+ ignore_value(VIR_STRDUP(result, hostname));
+ goto cleanup;
}
/* otherwise, it's a shortened, non-localhost, hostname. Attempt to
@@ -624,8 +624,8 @@ char *virGetHostname(void)
if (r != 0) {
VIR_WARN("getaddrinfo failed for '%s': %s",
hostname, gai_strerror(r));
- result = strdup(hostname);
- goto check_and_return;
+ ignore_value(VIR_STRDUP(result, hostname));
+ goto cleanup;
}
/* Tell static analyzers about getaddrinfo semantics. */
@@ -637,14 +637,14 @@ char *virGetHostname(void)
* localhost. Ignore the canonicalized name and just return the
* original hostname
*/
- result = strdup(hostname);
+ ignore_value(VIR_STRDUP(result, hostname));
else
/* Caller frees this string. */
- result = strdup(info->ai_canonname);
+ ignore_value(VIR_STRDUP(result, info->ai_canonname));
freeaddrinfo(info);
-check_and_return:
+cleanup:
if (result == NULL)
virReportOOMError();
return result;
@@ -698,15 +698,9 @@ 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);
-
+ ignore_value(VIR_STRDUP(ret, field == VIR_USER_ENT_DIRECTORY ?
+ pw->pw_dir : pw->pw_name));
VIR_FREE(strbuf);
- if (!ret)
- virReportOOMError();
-
return ret;
}
@@ -751,12 +745,8 @@ static char *virGetGroupEnt(gid_t gid)
return NULL;
}
- ret = strdup(gr->gr_name);
-
+ ignore_value(VIR_STRDUP(ret, gr->gr_name));
VIR_FREE(strbuf);
- if (!ret)
- virReportOOMError();
-
return ret;
}
@@ -1090,12 +1080,8 @@ virGetWin32SpecialFolder(int csidl, char **path)
*path = NULL;
if (SHGetSpecialFolderLocation(NULL, csidl, &pidl) == S_OK) {
- if (SHGetPathFromIDList(pidl, buf)) {
- if (!(*path = strdup(buf))) {
- virReportOOMError();
- ret = -1;
- }
- }
+ if (SHGetPathFromIDList(pidl, buf) && VIR_STRDUP(*path, buf) < 0)
+ ret = -1;
CoTaskMemFree(pidl);
}
return ret;
@@ -1125,12 +1111,7 @@ virGetWin32DirectoryRoot(char **path)
strcpy(windowsdir, "C:\\");
}
- if (!(*path = strdup(windowsdir))) {
- virReportOOMError();
- ret = -1;
- }
-
- return ret;
+ return VIR_STRDUP(*path, windowsdir) < 0 ? -1 : 0;
}
@@ -1163,12 +1144,8 @@ virGetUserDirectory(void)
/* USERPROFILE is probably the closest equivalent to $HOME? */
dir = getenv("USERPROFILE");
- if (dir) {
- if (!(ret = strdup(dir))) {
- virReportOOMError();
- return NULL;
- }
- }
+ if (VIR_STRDUP(ret, dir) < 0)
+ return NULL;
if (!ret &&
virGetWin32SpecialFolder(CSIDL_PROFILE, &ret) < 0)
@@ -1920,7 +1897,7 @@ virGetFCHostNameByWWN(const char *sysfs_prefix,
continue;
}
- ret = strdup(entry->d_name);
+ ignore_value(VIR_STRDUP(ret, entry->d_name));
break;
}
@@ -2006,7 +1983,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..f8c595e 100644
--- a/src/util/virxml.c
+++ b/src/util/virxml.c
@@ -87,11 +87,8 @@ virXPathString(const char *xpath,
xmlXPathFreeObject(obj);
return NULL;
}
- ret = strdup((char *) obj->stringval);
+ ignore_value(VIR_STRDUP(ret, (char *) obj->stringval));
xmlXPathFreeObject(obj);
- if (ret == NULL) {
- virReportOOMError();
- }
return ret;
}
--
1.8.2.1