Adapt to VIR_STRDUP and VIR_STRNDUP in src/util/*

This commit is contained in:
Michal Privoznik 2013-05-24 09:19:51 +02:00
parent eb8e5e8774
commit f48ba88b35
33 changed files with 343 additions and 542 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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) {

View File

@ -946,9 +946,8 @@ virCommandSetPidFile(virCommandPtr cmd, const char *pidfile)
return;
VIR_FREE(cmd->pidfile);
if (!(cmd->pidfile = strdup(pidfile))) {
if (VIR_STRDUP_QUIET(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_QUIET(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_QUIET(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_QUIET(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_QUIET(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_QUIET(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_QUIET(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_QUIET(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_QUIET(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_QUIET(cmd->inbuf, inbuf) < 0)
cmd->has_error = ENOMEM;
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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;
}

View File

@ -31,7 +31,7 @@
typedef struct
{
char *rule;
const char **argv;
char **argv;
int command_idx;
} ebtRule;

View File

@ -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 (VIR_STRDUP_QUIET(to->message, from->message) < 0)
ret = -1;
if (from->str1 && !(to->str1 = strdup(from->str1)))
if (VIR_STRDUP_QUIET(to->str1, from->str1) < 0)
ret = -1;
if (from->str2 && !(to->str2 = strdup(from->str2)))
if (VIR_STRDUP_QUIET(to->str2, from->str2) < 0)
ret = -1;
if (from->str3 && !(to->str3 = strdup(from->str3)))
if (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);
@ -686,12 +687,9 @@ virRaiseErrorFull(const char *filename ATTRIBUTE_UNUSED,
to->code = code;
to->message = str;
to->level = level;
if (str1 != NULL)
to->str1 = strdup(str1);
if (str2 != NULL)
to->str2 = strdup(str2);
if (str3 != NULL)
to->str3 = strdup(str3);
ignore_value(VIR_STRDUP_QUIET(to->str1, str1));
ignore_value(VIR_STRDUP_QUIET(to->str2, str2));
ignore_value(VIR_STRDUP_QUIET(to->str3, str3));
to->int1 = int1;
to->int2 = int2;

View File

@ -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_QUIET(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_QUIET(*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_QUIET(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_QUIET(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:
* // -> //

View File

@ -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)

View File

@ -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);
freecon(con);
if (!seccontext) {
virReportOOMError();
if (VIR_STRDUP(seccontext, con) < 0) {
freecon(con);
goto cleanup;
}
freecon(con);
#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;

View File

@ -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) {

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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;
}

View File

@ -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;
}
@ -665,10 +666,11 @@ virLogDefineOutput(virLogOutputFunc f,
return -1;
if (dest == VIR_LOG_TO_SYSLOG || dest == VIR_LOG_TO_FILE) {
if (name == NULL)
if (!name) {
virReportOOMError();
return -1;
ndup = strdup(name);
if (ndup == NULL)
}
if (VIR_STRDUP(ndup, name) < 0)
return -1;
}
@ -1047,8 +1049,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 +1330,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 +1346,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 +1423,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++;

View File

@ -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;
}

View File

@ -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
@ -213,7 +208,7 @@ int virNetDevTapCreate(char **ifname,
/* In case we are looping more than once, set other
* TAPs to have the same name */
VIR_FREE(*ifname);
if (ifr.ifr_name && VIR_STRDUP(*ifname, ifr.ifr_name) < 0)
if (VIR_STRDUP(*ifname, ifr.ifr_name) < 0)
goto cleanup;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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:

View File

@ -119,16 +119,9 @@ 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 (VIR_STRNDUP(ret->u.value, str, len > 0 ? len : strlen(str)) < 0)
VIR_FREE(ret);
return NULL;
}
return ret;
}
@ -325,11 +318,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 +331,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 +390,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 +510,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;
}

View File

@ -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;
}

View File

@ -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 {

View File

@ -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;
}

View File

@ -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

View File

@ -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) {

View File

@ -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);

View File

@ -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;
}

View File

@ -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;
}