From 82f992c7ff4ef59682f42c863fca242dd84208f9 Mon Sep 17 00:00:00 2001
From: Barrett Schonefeld <bschoney(a)utexas.edu>
Date: Mon, 9 Nov 2020 16:07:25 -0600
Subject: [PATCH] util: convert char pointers to use g_autofree
additional conversions to the GLib API in src/util per issue #11.
Related issue:
https://gitlab.com/libvirt/libvirt/-/issues/11
Signed-off-by: Barrett Schonefeld <bschoney(a)utexas.edu>
---
src/util/vircgroupv1.c | 3 +-
src/util/virdnsmasq.c | 43 ++++++++-------------
src/util/virfile.c | 9 ++---
src/util/virhostcpu.c | 4 +-
src/util/virlockspace.c | 6 +--
src/util/virlog.c | 12 ++----
src/util/virmacmap.c | 3 +-
src/util/virnetdevbandwidth.c | 48 ++++++++---------------
src/util/virresctrl.c | 25 ++++--------
src/util/virrotatingfile.c | 11 ++----
src/util/virscsihost.c | 25 +++++-------
src/util/virsecret.c | 14 +++----
src/util/virstorageencryption.c | 19 +++------
src/util/virstoragefilebackend.c | 4 +-
src/util/virsysinfo.c | 18 +++------
src/util/viruri.c | 7 +---
src/util/virutil.c | 66 +++++++++++---------------------
src/util/virvhba.c | 57 ++++++++++-----------------
src/util/virxml.c | 7 +---
19 files changed, 130 insertions(+), 251 deletions(-)
diff --git a/src/util/vircgroupv1.c b/src/util/vircgroupv1.c
index 731e9d61d4..984cd50409 100644
--- a/src/util/vircgroupv1.c
+++ b/src/util/vircgroupv1.c
@@ -1549,7 +1549,7 @@ virCgroupV1GetMemoryStat(virCgroupPtr group,
unsigned long long *unevictable)
{
int ret = -1;
- char *stat = NULL;
+ g_autofree char *stat = NULL;
char *line = NULL;
unsigned long long cacheVal = 0;
unsigned long long activeAnonVal = 0;
@@ -1614,7 +1614,6 @@ virCgroupV1GetMemoryStat(virCgroupPtr group,
ret = 0;
cleanup:
- VIR_FREE(stat);
return ret;
}
diff --git a/src/util/virdnsmasq.c b/src/util/virdnsmasq.c
index 9030f9218a..93bc4a129f 100644
--- a/src/util/virdnsmasq.c
+++ b/src/util/virdnsmasq.c
@@ -164,7 +164,7 @@ addnhostsWrite(const char *path,
dnsmasqAddnHost *hosts,
unsigned int nhosts)
{
- char *tmp;
+ g_autofree char *tmp = NULL;
FILE *f;
bool istmp = true;
size_t i, j;
@@ -180,7 +180,7 @@ addnhostsWrite(const char *path,
istmp = false;
if (!(f = fopen(path, "w"))) {
rc = -errno;
- goto cleanup;
+ return rc;
}
}
@@ -192,7 +192,7 @@ addnhostsWrite(const char *path,
if (istmp)
unlink(tmp);
- goto cleanup;
+ return rc;
}
for (j = 0; j < hosts[i].nhostnames; j++) {
@@ -203,7 +203,7 @@ addnhostsWrite(const char *path,
if (istmp)
unlink(tmp);
- goto cleanup;
+ return rc;
}
}
@@ -214,24 +214,21 @@ addnhostsWrite(const char *path,
if (istmp)
unlink(tmp);
- goto cleanup;
+ return rc;
}
}
if (VIR_FCLOSE(f) == EOF) {
rc = -errno;
- goto cleanup;
+ return rc;
}
if (istmp && rename(tmp, path) < 0) {
rc = -errno;
unlink(tmp);
- goto cleanup;
+ return rc;
}
- cleanup:
- VIR_FREE(tmp);
-
return rc;
}
@@ -364,7 +361,7 @@ hostsfileWrite(const char *path,
dnsmasqDhcpHost *hosts,
unsigned int nhosts)
{
- char *tmp;
+ g_autofree char *tmp = NULL;
FILE *f;
bool istmp = true;
size_t i;
@@ -380,7 +377,7 @@ hostsfileWrite(const char *path,
istmp = false;
if (!(f = fopen(path, "w"))) {
rc = -errno;
- goto cleanup;
+ return rc;
}
}
@@ -392,24 +389,21 @@ hostsfileWrite(const char *path,
if (istmp)
unlink(tmp);
- goto cleanup;
+ return rc;
}
}
if (VIR_FCLOSE(f) == EOF) {
rc = -errno;
- goto cleanup;
+ return rc;
}
if (istmp && rename(tmp, path) < 0) {
rc = -errno;
unlink(tmp);
- goto cleanup;
+ return rc;
}
- cleanup:
- VIR_FREE(tmp);
-
return rc;
}
@@ -686,15 +680,13 @@ static int
dnsmasqCapsSetFromFile(dnsmasqCapsPtr caps, const char *path)
{
int ret = -1;
- char *buf = NULL;
+ g_autofree char *buf = NULL;
if (virFileReadAll(path, 1024 * 1024, &buf) < 0)
- goto cleanup;
+ return ret;
ret = dnsmasqCapsSetFromBuffer(caps, buf);
- cleanup:
- VIR_FREE(buf);
return ret;
}
@@ -704,7 +696,9 @@ dnsmasqCapsRefreshInternal(dnsmasqCapsPtr caps, bool force)
int ret = -1;
struct stat sb;
virCommandPtr cmd = NULL;
- char *help = NULL, *version = NULL, *complete = NULL;
+ g_autofree char *help = NULL;
+ g_autofree char *version = NULL;
+ g_autofree char *complete = NULL;
if (!caps || caps->noRefresh)
return 0;
@@ -749,9 +743,6 @@ dnsmasqCapsRefreshInternal(dnsmasqCapsPtr caps, bool force)
cleanup:
virCommandFree(cmd);
- VIR_FREE(help);
- VIR_FREE(version);
- VIR_FREE(complete);
return ret;
}
diff --git a/src/util/virfile.c b/src/util/virfile.c
index f57272ca2f..38207f1948 100644
--- a/src/util/virfile.c
+++ b/src/util/virfile.c
@@ -3328,9 +3328,9 @@ virFileIsSharedFixFUSE(const char *path,
FILE *f = NULL;
struct mntent mb;
char mntbuf[1024];
- char *mntDir = NULL;
- char *mntType = NULL;
- char *canonPath = NULL;
+ g_autofree char *mntDir = NULL;
+ g_autofree char *mntType = NULL;
+ g_autofree char *canonPath = NULL;
size_t maxMatching = 0;
int ret = -1;
@@ -3381,9 +3381,6 @@ virFileIsSharedFixFUSE(const char *path,
ret = 0;
cleanup:
- VIR_FREE(canonPath);
- VIR_FREE(mntType);
- VIR_FREE(mntDir);
endmntent(f);
return ret;
}
diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c
index c531d65f86..4f6c3390ce 100644
--- a/src/util/virhostcpu.c
+++ b/src/util/virhostcpu.c
@@ -87,7 +87,7 @@ virHostCPUGetStatsFreeBSD(int cpuNum,
int *nparams)
{
const char *sysctl_name;
- long *cpu_times;
+ g_autofree long *cpu_times = NULL;
struct clockinfo clkinfo;
size_t i, j, cpu_times_size, clkinfo_size;
int cpu_times_num, offset, hz, stathz, ret = -1;
@@ -172,8 +172,6 @@ virHostCPUGetStatsFreeBSD(int cpuNum,
ret = 0;
cleanup:
- VIR_FREE(cpu_times);
-
return ret;
}
diff --git a/src/util/virlockspace.c b/src/util/virlockspace.c
index b90e13f506..71d5dfb83e 100644
--- a/src/util/virlockspace.c
+++ b/src/util/virlockspace.c
@@ -515,7 +515,7 @@ int virLockSpaceCreateResource(virLockSpacePtr lockspace,
const char *resname)
{
int ret = -1;
- char *respath = NULL;
+ g_autofree char *respath = NULL;
VIR_DEBUG("lockspace=%p resname=%s", lockspace, resname);
@@ -538,7 +538,6 @@ int virLockSpaceCreateResource(virLockSpacePtr lockspace,
cleanup:
virMutexUnlock(&lockspace->lock);
- VIR_FREE(respath);
return ret;
}
@@ -547,7 +546,7 @@ int virLockSpaceDeleteResource(virLockSpacePtr lockspace,
const char *resname)
{
int ret = -1;
- char *respath = NULL;
+ g_autofree char *respath = NULL;
VIR_DEBUG("lockspace=%p resname=%s", lockspace, resname);
@@ -575,7 +574,6 @@ int virLockSpaceDeleteResource(virLockSpacePtr lockspace,
cleanup:
virMutexUnlock(&lockspace->lock);
- VIR_FREE(respath);
return ret;
}
diff --git a/src/util/virlog.c b/src/util/virlog.c
index 6b7a4512e9..2bf606b8c5 100644
--- a/src/util/virlog.c
+++ b/src/util/virlog.c
@@ -505,8 +505,8 @@ virLogVMessage(virLogSourcePtr source,
va_list vargs)
{
static bool logInitMessageStderr = true;
- char *str = NULL;
- char *msg = NULL;
+ g_autofree char *str = NULL;
+ g_autofree char *msg = NULL;
char timestamp[VIR_TIME_STRING_BUFLEN];
size_t i;
int saved_errno = errno;
@@ -528,7 +528,8 @@ virLogVMessage(virLogSourcePtr source,
if (source->serial < virLogFiltersSerial)
virLogSourceUpdate(source);
if (priority < source->priority)
- goto cleanup;
+ errno = saved_errno;
+ return;
/*
* serialize the error message, add level and timestamp
@@ -601,11 +602,6 @@ virLogVMessage(virLogSourcePtr source,
str, msg, (void *) STDERR_FILENO);
}
virLogUnlock();
-
- cleanup:
- VIR_FREE(str);
- VIR_FREE(msg);
- errno = saved_errno;
}
diff --git a/src/util/virmacmap.c b/src/util/virmacmap.c
index f9047d0fb1..e68742de10 100644
--- a/src/util/virmacmap.c
+++ b/src/util/virmacmap.c
@@ -129,7 +129,7 @@ static int
virMacMapLoadFile(virMacMapPtr mgr,
const char *file)
{
- char *map_str = NULL;
+ g_autofree char *map_str = NULL;
virJSONValuePtr map = NULL;
int map_str_len = 0;
size_t i;
@@ -189,7 +189,6 @@ virMacMapLoadFile(virMacMapPtr mgr,
ret = 0;
cleanup:
- VIR_FREE(map_str);
virJSONValueFree(map);
return ret;
}
diff --git a/src/util/virnetdevbandwidth.c b/src/util/virnetdevbandwidth.c
index c8eb5cfc79..2ae03e8edc 100644
--- a/src/util/virnetdevbandwidth.c
+++ b/src/util/virnetdevbandwidth.c
@@ -102,7 +102,7 @@ virNetDevBandwidthManipulateFilter(const char *ifname,
bool create_new)
{
int ret = -1;
- char *filter_id = NULL;
+ g_autofree char *filter_id = NULL;
virCommandPtr cmd = NULL;
unsigned char ifmac[VIR_MAC_BUFLEN];
char *mac[2] = {NULL, NULL};
@@ -157,7 +157,6 @@ virNetDevBandwidthManipulateFilter(const char *ifname,
cleanup:
VIR_FREE(mac[1]);
VIR_FREE(mac[0]);
- VIR_FREE(filter_id);
virCommandFree(cmd);
return ret;
}
@@ -195,9 +194,9 @@ virNetDevBandwidthSet(const char *ifname,
int ret = -1;
virNetDevBandwidthRatePtr rx = NULL, tx = NULL; /* From domain POV */
virCommandPtr cmd = NULL;
- char *average = NULL;
- char *peak = NULL;
- char *burst = NULL;
+ g_autofree char *average = NULL;
+ g_autofree char *peak = NULL;
+ g_autofree char *burst = NULL;
if (!bandwidth) {
/* nothing to be enabled */
@@ -385,9 +384,6 @@ virNetDevBandwidthSet(const char *ifname,
cleanup:
virCommandFree(cmd);
- VIR_FREE(average);
- VIR_FREE(peak);
- VIR_FREE(burst);
return ret;
}
@@ -533,10 +529,10 @@ virNetDevBandwidthPlug(const char *brname,
{
int ret = -1;
virCommandPtr cmd = NULL;
- char *class_id = NULL;
- char *qdisc_id = NULL;
- char *floor = NULL;
- char *ceil = NULL;
+ g_autofree char *class_id = NULL;
+ g_autofree char *qdisc_id = NULL;
+ g_autofree char *floor = NULL;
+ g_autofree char *ceil = NULL;
char ifmacStr[VIR_MAC_STRING_BUFLEN];
if (id <= 2) {
@@ -586,10 +582,6 @@ virNetDevBandwidthPlug(const char *brname,
ret = 0;
cleanup:
- VIR_FREE(ceil);
- VIR_FREE(floor);
- VIR_FREE(qdisc_id);
- VIR_FREE(class_id);
virCommandFree(cmd);
return ret;
}
@@ -610,8 +602,8 @@ virNetDevBandwidthUnplug(const char *brname,
int ret = -1;
int cmd_ret = 0;
virCommandPtr cmd = NULL;
- char *class_id = NULL;
- char *qdisc_id = NULL;
+ g_autofree char *class_id = NULL;
+ g_autofree char *qdisc_id = NULL;
if (id <= 2) {
virReportError(VIR_ERR_INTERNAL_ERROR, _("Invalid class ID %d"), id);
@@ -645,8 +637,6 @@ virNetDevBandwidthUnplug(const char *brname,
ret = 0;
cleanup:
- VIR_FREE(qdisc_id);
- VIR_FREE(class_id);
virCommandFree(cmd);
return ret;
}
@@ -673,9 +663,9 @@ virNetDevBandwidthUpdateRate(const char *ifname,
{
int ret = -1;
virCommandPtr cmd = NULL;
- char *class_id = NULL;
- char *rate = NULL;
- char *ceil = NULL;
+ g_autofree char *class_id = NULL;
+ g_autofree char *rate = NULL;
+ g_autofree char *ceil = NULL;
class_id = g_strdup_printf("1:%x", id);
rate = g_strdup_printf("%llukbps", new_rate);
@@ -696,9 +686,6 @@ virNetDevBandwidthUpdateRate(const char *ifname,
cleanup:
virCommandFree(cmd);
- VIR_FREE(class_id);
- VIR_FREE(rate);
- VIR_FREE(ceil);
return ret;
}
@@ -725,16 +712,13 @@ virNetDevBandwidthUpdateFilter(const char *ifname,
unsigned int id)
{
int ret = -1;
- char *class_id = NULL;
+ g_autofree char *class_id = NULL;
class_id = g_strdup_printf("1:%x", id);
if (virNetDevBandwidthManipulateFilter(ifname, ifmac_ptr, id,
class_id, true, true) < 0)
- goto cleanup;
+ return ret;
- ret = 0;
- cleanup:
- VIR_FREE(class_id);
- return ret;
+ return 0;
}
diff --git a/src/util/virresctrl.c b/src/util/virresctrl.c
index d3087b98c1..1c2d175295 100644
--- a/src/util/virresctrl.c
+++ b/src/util/virresctrl.c
@@ -709,7 +709,7 @@ virResctrlGetMonitorInfo(virResctrlInfoPtr resctrl)
{
int ret = -1;
int rv = -1;
- char *featurestr = NULL;
+ g_autofree char *featurestr = NULL;
char **features = NULL;
size_t nfeatures = 0;
virResctrlInfoMongrpPtr info_monitor = NULL;
@@ -771,7 +771,6 @@ virResctrlGetMonitorInfo(virResctrlInfoPtr resctrl)
ret = 0;
cleanup:
- VIR_FREE(featurestr);
g_strfreev(features);
VIR_FREE(info_monitor);
return ret;
@@ -1736,7 +1735,7 @@ virResctrlAllocGetGroup(virResctrlInfoPtr resctrl,
const char *groupname,
virResctrlAllocPtr *alloc)
{
- char *schemata = NULL;
+ g_autofree char *schemata = NULL;
int rv = virFileReadValueString(&schemata,
SYSFS_RESCTRL_PATH "/%s/schemata",
groupname);
@@ -1753,11 +1752,9 @@ virResctrlAllocGetGroup(virResctrlInfoPtr resctrl,
if (virResctrlAllocParse(resctrl, *alloc, schemata) < 0)
goto error;
- VIR_FREE(schemata);
return 0;
error:
- VIR_FREE(schemata);
virObjectUnref(*alloc);
*alloc = NULL;
return -1;
@@ -2354,8 +2351,8 @@ virResctrlAllocCreate(virResctrlInfoPtr resctrl,
virResctrlAllocPtr alloc,
const char *machinename)
{
- char *schemata_path = NULL;
- char *alloc_str = NULL;
+ g_autofree char *schemata_path = NULL;
+ g_autofree char *alloc_str = NULL;
int ret = -1;
int lockfd = -1;
@@ -2403,8 +2400,6 @@ virResctrlAllocCreate(virResctrlInfoPtr resctrl,
ret = 0;
cleanup:
virResctrlUnlock(lockfd);
- VIR_FREE(alloc_str);
- VIR_FREE(schemata_path);
return ret;
}
@@ -2413,8 +2408,8 @@ static int
virResctrlAddPID(const char *path,
pid_t pid)
{
- char *tasks = NULL;
- char *pidstr = NULL;
+ g_autofree char *tasks = NULL;
+ g_autofree char *pidstr = NULL;
int ret = 0;
if (!path) {
@@ -2436,8 +2431,6 @@ virResctrlAddPID(const char *path,
ret = 0;
cleanup:
- VIR_FREE(tasks);
- VIR_FREE(pidstr);
return ret;
}
@@ -2657,8 +2650,8 @@ virResctrlMonitorGetStats(virResctrlMonitorPtr monitor,
size_t i = 0;
unsigned long long val = 0;
g_autoptr(DIR) dirp = NULL;
- char *datapath = NULL;
- char *filepath = NULL;
+ g_autofree char *datapath = NULL;
+ g_autofree char *filepath = NULL;
struct dirent *ent = NULL;
virResctrlMonitorStatsPtr stat = NULL;
@@ -2737,8 +2730,6 @@ virResctrlMonitorGetStats(virResctrlMonitorPtr monitor,
ret = 0;
cleanup:
- VIR_FREE(datapath);
- VIR_FREE(filepath);
virResctrlMonitorStatsFree(stat);
return ret;
}
diff --git a/src/util/virrotatingfile.c b/src/util/virrotatingfile.c
index 9f1ef17c3e..6fe5fa3154 100644
--- a/src/util/virrotatingfile.c
+++ b/src/util/virrotatingfile.c
@@ -362,8 +362,8 @@ static int
virRotatingFileWriterRollover(virRotatingFileWriterPtr file)
{
size_t i;
- char *nextpath = NULL;
- char *thispath = NULL;
+ g_autofree char *nextpath = NULL;
+ g_autofree char *thispath = NULL;
int ret = -1;
VIR_DEBUG("Rollover %s", file->basepath);
@@ -373,7 +373,7 @@ virRotatingFileWriterRollover(virRotatingFileWriterPtr file)
virReportSystemError(errno,
_("Unable to remove %s"),
file->basepath);
- goto cleanup;
+ return ret;
}
} else {
nextpath = g_strdup_printf("%s.%zu", file->basepath,
file->maxbackup - 1);
@@ -391,7 +391,7 @@ virRotatingFileWriterRollover(virRotatingFileWriterPtr file)
virReportSystemError(errno,
_("Unable to rename %s to %s"),
thispath, nextpath);
- goto cleanup;
+ return ret;
}
VIR_FREE(nextpath);
@@ -402,9 +402,6 @@ virRotatingFileWriterRollover(virRotatingFileWriterPtr file)
VIR_DEBUG("Rollover done %s", file->basepath);
ret = 0;
- cleanup:
- VIR_FREE(nextpath);
- VIR_FREE(thispath);
return ret;
}
diff --git a/src/util/virscsihost.c b/src/util/virscsihost.c
index 969cdd9f79..cad48b4059 100644
--- a/src/util/virscsihost.c
+++ b/src/util/virscsihost.c
@@ -95,12 +95,12 @@ virSCSIHostFindByPCI(const char *sysfs_prefix,
const char *prefix = sysfs_prefix ? sysfs_prefix : SYSFS_SCSI_HOST_PATH;
struct dirent *entry = NULL;
g_autoptr(DIR) dir = NULL;
- char *host_link = NULL;
- char *host_path = NULL;
+ g_autofree char *host_link = NULL;
+ g_autofree char *host_path = NULL;
char *p = NULL;
char *ret = NULL;
- char *buf = NULL;
- char *unique_path = NULL;
+ g_autofree char *buf = NULL;
+ g_autofree char *unique_path = NULL;
unsigned int read_unique_id;
if (virDirOpen(&dir, prefix) < 0)
@@ -113,7 +113,7 @@ virSCSIHostFindByPCI(const char *sysfs_prefix,
host_link = g_strdup_printf("%s/%s", prefix, entry->d_name);
if (virFileResolveLink(host_link, &host_path) < 0)
- goto cleanup;
+ return ret;
if (!strstr(host_path, parentaddr)) {
VIR_FREE(host_link);
@@ -131,13 +131,13 @@ virSCSIHostFindByPCI(const char *sysfs_prefix,
}
if (virFileReadAll(unique_path, 1024, &buf) < 0)
- goto cleanup;
+ return ret;
if ((p = strchr(buf, '\n')))
*p = '\0';
if (virStrToLong_ui(buf, NULL, 10, &read_unique_id) < 0)
- goto cleanup;
+ return ret;
VIR_FREE(buf);
@@ -150,11 +150,6 @@ virSCSIHostFindByPCI(const char *sysfs_prefix,
break;
}
- cleanup:
- VIR_FREE(unique_path);
- VIR_FREE(host_link);
- VIR_FREE(host_path);
- VIR_FREE(buf);
return ret;
}
@@ -226,7 +221,7 @@ virSCSIHostGetNameByParentaddr(unsigned int domain,
unsigned int unique_id)
{
char *name = NULL;
- char *parentaddr = NULL;
+ g_autofree char *parentaddr = NULL;
parentaddr = g_strdup_printf("%04x:%02x:%02x.%01x", domain, bus, slot,
function);
@@ -235,11 +230,9 @@ virSCSIHostGetNameByParentaddr(unsigned int domain,
_("Failed to find scsi_host using PCI '%s' "
"and unique_id='%u'"),
parentaddr, unique_id);
- goto cleanup;
+ return name;
}
- cleanup:
- VIR_FREE(parentaddr);
return name;
}
diff --git a/src/util/virsecret.c b/src/util/virsecret.c
index 54d6bbcb7c..67c9b68215 100644
--- a/src/util/virsecret.c
+++ b/src/util/virsecret.c
@@ -65,8 +65,8 @@ int
virSecretLookupParseSecret(xmlNodePtr secretnode,
virSecretLookupTypeDefPtr def)
{
- char *uuid;
- char *usage;
+ g_autofree char *uuid = NULL;
+ g_autofree char *usage = NULL;
int ret = -1;
uuid = virXMLPropString(secretnode, "uuid");
@@ -74,20 +74,20 @@ virSecretLookupParseSecret(xmlNodePtr secretnode,
if (uuid == NULL && usage == NULL) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("missing secret uuid or usage attribute"));
- goto cleanup;
+ return ret;
}
if (uuid && usage) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("either secret uuid or usage expected"));
- goto cleanup;
+ return ret;
}
if (uuid) {
if (virUUIDParse(uuid, def->u.uuid) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("invalid secret uuid '%s'"), uuid);
- goto cleanup;
+ return ret;
}
def->type = VIR_SECRET_LOOKUP_TYPE_UUID;
} else {
@@ -96,10 +96,6 @@ virSecretLookupParseSecret(xmlNodePtr secretnode,
def->type = VIR_SECRET_LOOKUP_TYPE_USAGE;
}
ret = 0;
-
- cleanup:
- VIR_FREE(uuid);
- VIR_FREE(usage);
return ret;
}
diff --git a/src/util/virstorageencryption.c b/src/util/virstorageencryption.c
index 399c6926bd..db886c1e76 100644
--- a/src/util/virstorageencryption.c
+++ b/src/util/virstorageencryption.c
@@ -142,7 +142,7 @@ virStorageEncryptionSecretParse(xmlXPathContextPtr ctxt,
{
VIR_XPATH_NODE_AUTORESTORE(ctxt)
virStorageEncryptionSecretPtr ret;
- char *type_str = NULL;
+ g_autofree char *type_str = NULL;
ret = g_new0(virStorageEncryptionSecret, 1);
@@ -164,12 +164,9 @@ virStorageEncryptionSecretParse(xmlXPathContextPtr ctxt,
if (virSecretLookupParseSecret(node, &ret->seclookupdef) < 0)
goto cleanup;
- VIR_FREE(type_str);
-
return ret;
cleanup:
- VIR_FREE(type_str);
virStorageEncryptionSecretFree(ret);
return NULL;
}
@@ -180,12 +177,12 @@ virStorageEncryptionInfoParseCipher(xmlNodePtr info_node,
virStorageEncryptionInfoDefPtr info)
{
int ret = -1;
- char *size_str = NULL;
+ g_autofree char *size_str = NULL;
if (!(info->cipher_name = virXMLPropString(info_node, "name"))) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("cipher info missing 'name' attribute"));
- goto cleanup;
+ return ret;
}
if ((size_str = virXMLPropString(info_node, "size")) &&
@@ -193,22 +190,19 @@ virStorageEncryptionInfoParseCipher(xmlNodePtr info_node,
virReportError(VIR_ERR_XML_ERROR,
_("cannot parse cipher size: '%s'"),
size_str);
- goto cleanup;
+ return ret;
}
if (!size_str) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("cipher info missing 'size' attribute"));
- goto cleanup;
+ return ret;
}
info->cipher_mode = virXMLPropString(info_node, "mode");
info->cipher_hash = virXMLPropString(info_node, "hash");
ret = 0;
-
- cleanup:
- VIR_FREE(size_str);
return ret;
}
@@ -237,7 +231,7 @@ virStorageEncryptionParseNode(xmlNodePtr node,
xmlNodePtr *nodes = NULL;
virStorageEncryptionPtr encdef = NULL;
virStorageEncryptionPtr ret = NULL;
- char *format_str = NULL;
+ g_autofree char *format_str = NULL;
int n;
size_t i;
@@ -297,7 +291,6 @@ virStorageEncryptionParseNode(xmlNodePtr node,
ret = g_steal_pointer(&encdef);
cleanup:
- VIR_FREE(format_str);
VIR_FREE(nodes);
virStorageEncryptionFree(encdef);
diff --git a/src/util/virstoragefilebackend.c b/src/util/virstoragefilebackend.c
index 2779b5c307..55c62b0212 100644
--- a/src/util/virstoragefilebackend.c
+++ b/src/util/virstoragefilebackend.c
@@ -51,7 +51,7 @@ virStorageFileLoadBackendModule(const char *name,
const char *regfunc,
bool forceload)
{
- char *modfile = NULL;
+ g_autofree char *modfile = NULL;
int ret;
if (!(modfile = virFileFindResourceFull(name,
@@ -64,8 +64,6 @@ virStorageFileLoadBackendModule(const char *name,
ret = virModuleLoad(modfile, regfunc, forceload);
- VIR_FREE(modfile);
-
return ret;
}
#endif /* WITH_STORAGE_DIR || WITH_STORAGE_FS || WITH_STORAGE_GLUSTER */
diff --git a/src/util/virsysinfo.c b/src/util/virsysinfo.c
index 217f842a37..45a950c85a 100644
--- a/src/util/virsysinfo.c
+++ b/src/util/virsysinfo.c
@@ -393,7 +393,7 @@ virSysinfoParseARMProcessor(const char *base,
virSysinfoDefPtr ret)
const char *cur;
char *eol, *tmp_base;
virSysinfoProcessorDefPtr processor;
- char *processor_type = NULL;
+ g_autofree char *processor_type = NULL;
if (!(tmp_base = strstr(base, "model name")) &&
!(tmp_base = strstr(base, "Processor")))
@@ -411,7 +411,7 @@ virSysinfoParseARMProcessor(const char *base,
virSysinfoDefPtr ret)
cur = strchr(base, ':') + 1;
if (VIR_EXPAND_N(ret->processor, ret->nprocessor, 1) < 0)
- goto error;
+ return -1;
processor = &ret->processor[ret->nprocessor - 1];
virSkipSpaces(&cur);
@@ -424,12 +424,7 @@ virSysinfoParseARMProcessor(const char *base,
virSysinfoDefPtr ret)
base = cur;
}
- VIR_FREE(processor_type);
return 0;
-
- error:
- VIR_FREE(processor_type);
- return -1;
}
/* virSysinfoRead for ARMv7
@@ -532,9 +527,9 @@ static int
virSysinfoParseS390Processor(const char *base, virSysinfoDefPtr ret)
{
const char *tmp_base;
- char *manufacturer = NULL;
- char *procline = NULL;
- char *ncpu = NULL;
+ g_autofree char *manufacturer = NULL;
+ g_autofree char *procline = NULL;
+ g_autofree char *ncpu = NULL;
int result = -1;
virSysinfoProcessorDefPtr processor;
@@ -593,9 +588,6 @@ virSysinfoParseS390Processor(const char *base,
virSysinfoDefPtr ret)
result = 0;
error:
- VIR_FREE(manufacturer);
- VIR_FREE(procline);
- VIR_FREE(ncpu);
return result;
}
diff --git a/src/util/viruri.c b/src/util/viruri.c
index 11753a0aef..d49821451e 100644
--- a/src/util/viruri.c
+++ b/src/util/viruri.c
@@ -209,7 +209,7 @@ char *
virURIFormat(virURIPtr uri)
{
xmlURI xmluri;
- char *tmpserver = NULL;
+ g_autofree char *tmpserver = NULL;
char *ret;
memset(&xmluri, 0, sizeof(xmluri));
@@ -241,12 +241,9 @@ virURIFormat(virURIPtr uri)
ret = (char *)xmlSaveUri(&xmluri);
if (!ret) {
virReportOOMError();
- goto cleanup;
+ return ret;
}
- cleanup:
- VIR_FREE(tmpserver);
-
return ret;
}
diff --git a/src/util/virutil.c b/src/util/virutil.c
index a0cd0f1bcd..a7c163ab94 100644
--- a/src/util/virutil.c
+++ b/src/util/virutil.c
@@ -598,7 +598,7 @@ char *virGetUserRuntimeDirectory(void)
static int
virGetUserEnt(uid_t uid, char **name, gid_t *group, char **dir, char
**shell, bool quiet)
{
- char *strbuf;
+ g_autofree char *strbuf = NULL;
struct passwd pwbuf;
struct passwd *pw = NULL;
long val = sysconf(_SC_GETPW_R_SIZE_MAX);
@@ -668,13 +668,12 @@ virGetUserEnt(uid_t uid, char **name, gid_t
*group, char **dir, char **shell, bo
if (shell)
VIR_FREE(*shell);
}
- VIR_FREE(strbuf);
return ret;
}
static char *virGetGroupEnt(gid_t gid)
{
- char *strbuf;
+ g_autofree char *strbuf = NULL;
char *ret;
struct group grbuf;
struct group *gr = NULL;
@@ -717,7 +716,6 @@ static char *virGetGroupEnt(gid_t gid)
}
ret = g_strdup(gr->gr_name);
- VIR_FREE(strbuf);
return ret;
}
@@ -759,7 +757,7 @@ char *virGetGroupName(gid_t gid)
static int
virGetUserIDByName(const char *name, uid_t *uid, bool missing_ok)
{
- char *strbuf = NULL;
+ g_autofree char *strbuf = NULL;
struct passwd pwbuf;
struct passwd *pw = NULL;
long val = sysconf(_SC_GETPW_R_SIZE_MAX);
@@ -775,7 +773,7 @@ virGetUserIDByName(const char *name, uid_t *uid,
bool missing_ok)
while ((rc = getpwnam_r(name, &pwbuf, strbuf, strbuflen, &pw)) == ERANGE) {
if (VIR_RESIZE_N(strbuf, strbuflen, strbuflen, strbuflen) < 0)
- goto cleanup;
+ return ret;
}
if (!pw) {
@@ -788,16 +786,13 @@ virGetUserIDByName(const char *name, uid_t *uid,
bool missing_ok)
}
ret = 1;
- goto cleanup;
+ return ret;
}
if (uid)
*uid = pw->pw_uid;
ret = 0;
- cleanup:
- VIR_FREE(strbuf);
-
return ret;
}
@@ -840,7 +835,7 @@ virGetUserID(const char *user, uid_t *uid)
static int
virGetGroupIDByName(const char *name, gid_t *gid, bool missing_ok)
{
- char *strbuf = NULL;
+ g_autofree char *strbuf = NULL;
struct group grbuf;
struct group *gr = NULL;
long val = sysconf(_SC_GETGR_R_SIZE_MAX);
@@ -856,7 +851,7 @@ virGetGroupIDByName(const char *name, gid_t *gid,
bool missing_ok)
while ((rc = getgrnam_r(name, &grbuf, strbuf, strbuflen, &gr)) == ERANGE) {
if (VIR_RESIZE_N(strbuf, strbuflen, strbuflen, strbuflen) < 0)
- goto cleanup;
+ return ret;
}
if (!gr) {
@@ -869,16 +864,13 @@ virGetGroupIDByName(const char *name, gid_t
*gid, bool missing_ok)
}
ret = 1;
- goto cleanup;
+ return ret;
}
if (gid)
*gid = gr->gr_gid;
ret = 0;
- cleanup:
- VIR_FREE(strbuf);
-
return ret;
}
@@ -949,7 +941,7 @@ int
virGetGroupList(uid_t uid, gid_t gid, gid_t **list)
{
int ret = 0;
- char *user = NULL;
+ g_autofree char *user = NULL;
gid_t primary;
*list = NULL;
@@ -987,19 +979,17 @@ virGetGroupList(uid_t uid, gid_t gid, gid_t **list)
for (i = 0; i < ret; i++) {
if ((*list)[i] == gid)
- goto cleanup;
+ return ret;
}
if (VIR_APPEND_ELEMENT(*list, i, gid) < 0) {
ret = -1;
VIR_FREE(*list);
- goto cleanup;
+ return ret;
} else {
ret = i;
}
}
- cleanup:
- VIR_FREE(user);
return ret;
}
@@ -1405,8 +1395,8 @@ virSetDeviceUnprivSGIO(const char *path,
const char *sysfs_dir,
int unpriv_sgio)
{
- char *sysfs_path = NULL;
- char *val = NULL;
+ g_autofree char *sysfs_path = NULL;
+ g_autofree char *val = NULL;
int ret = -1;
int rc;
@@ -1416,20 +1406,17 @@ virSetDeviceUnprivSGIO(const char *path,
if (!virFileExists(sysfs_path)) {
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
_("unpriv_sgio is not supported by this kernel"));
- goto cleanup;
+ return ret;
}
val = g_strdup_printf("%d", unpriv_sgio);
if ((rc = virFileWriteStr(sysfs_path, val, 0)) < 0) {
virReportSystemError(-rc, _("failed to set %s"), sysfs_path);
- goto cleanup;
+ return ret;
}
ret = 0;
- cleanup:
- VIR_FREE(sysfs_path);
- VIR_FREE(val);
return ret;
}
@@ -1438,8 +1425,8 @@ virGetDeviceUnprivSGIO(const char *path,
const char *sysfs_dir,
int *unpriv_sgio)
{
- char *sysfs_path = NULL;
- char *buf = NULL;
+ g_autofree char *sysfs_path = NULL;
+ g_autofree char *buf = NULL;
char *tmp = NULL;
int ret = -1;
@@ -1449,11 +1436,11 @@ virGetDeviceUnprivSGIO(const char *path,
if (!virFileExists(sysfs_path)) {
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
_("unpriv_sgio is not supported by this kernel"));
- goto cleanup;
+ return ret;
}
if (virFileReadAll(sysfs_path, 1024, &buf) < 0)
- goto cleanup;
+ return ret;
if ((tmp = strchr(buf, '\n')))
*tmp = '\0';
@@ -1461,13 +1448,10 @@ virGetDeviceUnprivSGIO(const char *path,
if (virStrToLong_i(buf, NULL, 10, unpriv_sgio) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("failed to parse value of %s"), sysfs_path);
- goto cleanup;
+ return ret;
}
ret = 0;
- cleanup:
- VIR_FREE(sysfs_path);
- VIR_FREE(buf);
return ret;
}
@@ -1488,7 +1472,7 @@ virParseOwnershipIds(const char *label, uid_t
*uidPtr, gid_t *gidPtr)
int rc = -1;
uid_t theuid;
gid_t thegid;
- char *tmp_label = NULL;
+ g_autofree char *tmp_label = NULL;
char *sep = NULL;
char *owner = NULL;
char *group = NULL;
@@ -1501,7 +1485,7 @@ virParseOwnershipIds(const char *label, uid_t
*uidPtr, gid_t *gidPtr)
virReportError(VIR_ERR_INVALID_ARG,
_("Failed to parse uid and gid from '%s'"),
label);
- goto cleanup;
+ return rc;
}
*sep = '\0';
owner = tmp_label;
@@ -1512,7 +1496,7 @@ virParseOwnershipIds(const char *label, uid_t
*uidPtr, gid_t *gidPtr)
*/
if (virGetUserID(owner, &theuid) < 0 ||
virGetGroupID(group, &thegid) < 0)
- goto cleanup;
+ return rc;
if (uidPtr)
*uidPtr = theuid;
@@ -1520,10 +1504,6 @@ virParseOwnershipIds(const char *label, uid_t
*uidPtr, gid_t *gidPtr)
*gidPtr = thegid;
rc = 0;
-
- cleanup:
- VIR_FREE(tmp_label);
-
return rc;
}
diff --git a/src/util/virvhba.c b/src/util/virvhba.c
index a4e88024d1..d8642ea041 100644
--- a/src/util/virvhba.c
+++ b/src/util/virvhba.c
@@ -49,7 +49,7 @@ bool
virVHBAPathExists(const char *sysfs_prefix,
int host)
{
- char *sysfs_path = NULL;
+ g_autofree char *sysfs_path = NULL;
bool ret = false;
sysfs_path = g_strdup_printf("%s/host%d",
@@ -58,7 +58,6 @@ virVHBAPathExists(const char *sysfs_prefix,
if (virFileExists(sysfs_path))
ret = true;
- VIR_FREE(sysfs_path);
return ret;
}
@@ -79,8 +78,8 @@ bool
virVHBAIsVportCapable(const char *sysfs_prefix,
int host)
{
- char *scsi_host_path = NULL;
- char *fc_host_path = NULL;
+ g_autofree char *scsi_host_path = NULL;
+ g_autofree char *fc_host_path = NULL;
bool ret = false;
fc_host_path = g_strdup_printf("%s/host%d/%s",
@@ -94,8 +93,6 @@ virVHBAIsVportCapable(const char *sysfs_prefix,
if (virFileExists(fc_host_path) || virFileExists(scsi_host_path))
ret = true;
- VIR_FREE(fc_host_path);
- VIR_FREE(scsi_host_path);
return ret;
}
@@ -115,19 +112,19 @@ virVHBAGetConfig(const char *sysfs_prefix,
int host,
const char *entry)
{
- char *sysfs_path = NULL;
+ g_autofree char *sysfs_path = NULL;
char *p = NULL;
- char *buf = NULL;
+ g_autofree char *buf = NULL;
char *result = NULL;
sysfs_path = g_strdup_printf("%s/host%d/%s",
sysfs_prefix ? sysfs_prefix :
SYSFS_FC_HOST_PATH, host, entry);
if (!virFileExists(sysfs_path))
- goto cleanup;
+ return result;
if (virFileReadAll(sysfs_path, 1024, &buf) < 0)
- goto cleanup;
+ return result;
if ((p = strchr(buf, '\n')))
*p = '\0';
@@ -139,9 +136,6 @@ virVHBAGetConfig(const char *sysfs_prefix,
result = g_strdup(p);
- cleanup:
- VIR_FREE(sysfs_path);
- VIR_FREE(buf);
return result;
}
@@ -160,8 +154,8 @@ virVHBAFindVportHost(const char *sysfs_prefix)
const char *prefix = sysfs_prefix ? sysfs_prefix : SYSFS_FC_HOST_PATH;
g_autoptr(DIR) dir = NULL;
struct dirent *entry = NULL;
- char *max_vports = NULL;
- char *vports = NULL;
+ g_autofree char *max_vports = NULL;
+ g_autofree char *vports = NULL;
char *state = NULL;
char *ret = NULL;
@@ -212,16 +206,13 @@ virVHBAFindVportHost(const char *sysfs_prefix)
((strlen(max_vports) == strlen(vports)) &&
strcmp(max_vports, vports) > 0)) {
ret = g_strdup(entry->d_name);
- goto cleanup;
+ return ret;
}
VIR_FREE(max_vports);
VIR_FREE(vports);
}
- cleanup:
- VIR_FREE(max_vports);
- VIR_FREE(vports);
return ret;
}
@@ -241,7 +232,8 @@ virVHBAManageVport(const int parent_host,
int operation)
{
int ret = -1;
- char *operation_path = NULL, *vport_name = NULL;
+ g_autofree char *operation_path = NULL;
+ g_autofree char *vport_name = NULL;
const char *operation_file = NULL;
switch (operation) {
@@ -254,7 +246,7 @@ virVHBAManageVport(const int parent_host,
default:
virReportError(VIR_ERR_OPERATION_INVALID,
_("Invalid vport operation (%d)"), operation);
- goto cleanup;
+ return ret;
}
operation_path = g_strdup_printf("%s/host%d/%s", SYSFS_FC_HOST_PATH,
@@ -270,7 +262,7 @@ virVHBAManageVport(const int parent_host,
_("vport operation '%s' is not supported "
"for host%d"),
operation_file, parent_host);
- goto cleanup;
+ return ret;
}
}
@@ -290,9 +282,6 @@ virVHBAManageVport(const int parent_host,
"vport create/delete failed"),
vport_name, operation_path);
- cleanup:
- VIR_FREE(vport_name);
- VIR_FREE(operation_path);
return ret;
}
@@ -315,8 +304,8 @@ vhbaReadCompareWWN(const char *prefix,
const char *f_name,
const char *wwn)
{
- char *path;
- char *buf = NULL;
+ g_autofree char *path = NULL;
+ g_autofree char *buf = NULL;
char *p;
int ret = -1;
@@ -324,11 +313,11 @@ vhbaReadCompareWWN(const char *prefix,
if (!virFileExists(path)) {
ret = 0;
- goto cleanup;
+ return ret;
}
if (virFileReadAll(path, 1024, &buf) < 0)
- goto cleanup;
+ return ret;
if ((p = strchr(buf, '\n')))
*p = '\0';
@@ -342,10 +331,6 @@ vhbaReadCompareWWN(const char *prefix,
else
ret = 1;
- cleanup:
- VIR_FREE(path);
- VIR_FREE(buf);
-
return ret;
}
@@ -407,7 +392,7 @@ virVHBAGetHostByFabricWWN(const char *sysfs_prefix,
const char *prefix = sysfs_prefix ? sysfs_prefix : SYSFS_FC_HOST_PATH;
struct dirent *entry = NULL;
g_autoptr(DIR) dir = NULL;
- char *vport_create_path = NULL;
+ g_autofree char *vport_create_path = NULL;
char *ret = NULL;
if (virDirOpen(&dir, prefix) < 0)
@@ -428,7 +413,7 @@ virVHBAGetHostByFabricWWN(const char *sysfs_prefix,
if ((rc = vhbaReadCompareWWN(prefix, entry->d_name,
"fabric_name", fabric_wwn)) < 0)
- goto cleanup;
+ return ret;
if (rc == 0)
continue;
@@ -437,8 +422,6 @@ virVHBAGetHostByFabricWWN(const char *sysfs_prefix,
break;
}
- cleanup:
- VIR_FREE(vport_create_path);
return ret;
}
diff --git a/src/util/virxml.c b/src/util/virxml.c
index a3b819d85c..7df50e4b4d 100644
--- a/src/util/virxml.c
+++ b/src/util/virxml.c
@@ -696,8 +696,8 @@ catchXMLError(void *ctx, const char *msg G_GNUC_UNUSED, ...)
unsigned int n, col; /* GCC warns if signed, because
compared with sizeof() */
int domcode = VIR_FROM_XML;
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
- char *contextstr = NULL;
- char *pointerstr = NULL;
+ g_autofree char *contextstr = NULL;
+ g_autofree char *pointerstr = NULL;
/* conditions for error printing */
@@ -763,9 +763,6 @@ catchXMLError(void *ctx, const char *msg G_GNUC_UNUSED, ...)
contextstr,
pointerstr);
}
-
- VIR_FREE(contextstr);
- VIR_FREE(pointerstr);
}
/**
--
GitLab