On Wed, 2020-11-18 at 16:47 -0600, Ryan Gahagan wrote: > From: Barrett Schonefeld <bschoney@xxxxxxxxxx> > > 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@xxxxxxxxxx> > --- > 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; > } > I believe you can remove "cleanup" and "ret" as well. More instances below. > 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; Why not "return -errno;"? More instances below. You also might want to split the patch up, e.g. go function by function, to create self-contained changes. Cheers, Tim > } > } > > @@ -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); > } > > /**