mirror of https://gitee.com/openkylin/libvirt.git
Adapt to VIR_STRDUP and VIR_STRNDUP in src/util/*
This commit is contained in:
parent
eb8e5e8774
commit
f48ba88b35
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
typedef struct
|
||||
{
|
||||
char *rule;
|
||||
const char **argv;
|
||||
char **argv;
|
||||
int command_idx;
|
||||
} ebtRule;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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:
|
||||
* // -> //
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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++;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue