Prefer g_auto(GStrv) over g_strfreev()

There are a few cases where a string list is freed by an explicit
call of g_strfreev(), but the same result can be achieved by
g_atuo(GStrv).

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
This commit is contained in:
Michal Privoznik 2021-11-01 10:34:10 +01:00
parent ac35a9fca2
commit 7c2a4e84b7
27 changed files with 72 additions and 156 deletions

View File

@ -833,12 +833,11 @@ virBhyveProcessBuildDestroyCmd(struct _bhyveConn *driver G_GNUC_UNUSED,
static void
virAppendBootloaderArgs(virCommand *cmd, virDomainDef *def)
{
char **blargs;
g_auto(GStrv) blargs = NULL;
/* XXX: Handle quoted? */
blargs = g_strsplit(def->os.bootloaderArgs, " ", 0);
virCommandAddArgSet(cmd, (const char * const *)blargs);
g_strfreev(blargs);
}
static virCommand *

View File

@ -127,7 +127,7 @@ bhyveCommandLineToArgv(const char *nativeConfig,
const char *start;
const char *next;
char *line;
char **lines = NULL;
g_auto(GStrv) lines = NULL;
size_t i;
size_t line_count = 0;
size_t lines_alloc = 0;
@ -168,7 +168,7 @@ bhyveCommandLineToArgv(const char *nativeConfig,
for (i = 0; i < line_count; i++) {
size_t j;
char **arglist = NULL;
g_auto(GStrv) arglist = NULL;
size_t args_count = 0;
size_t args_alloc = 0;
@ -223,23 +223,17 @@ bhyveCommandLineToArgv(const char *nativeConfig,
if (!bhyve_argc)
goto error;
for (j = 0; j < args_count; j++)
_bhyve_argv[j] = arglist[j];
_bhyve_argv[j] = g_steal_pointer(&arglist[j]);
_bhyve_argv[j] = NULL;
*bhyve_argc = args_count-1;
VIR_FREE(arglist);
} else if (!_loader_argv) {
VIR_REALLOC_N(_loader_argv, args_count + 1);
if (!loader_argc)
goto error;
for (j = 0; j < args_count; j++)
_loader_argv[j] = arglist[j];
_loader_argv[j] = g_steal_pointer(&arglist[j]);
_loader_argv[j] = NULL;
*loader_argc = args_count-1;
VIR_FREE(arglist);
} else {
/* To prevent a use-after-free here, only free the argument list
* when it is definitely not going to be used */
g_strfreev(arglist);
}
}
@ -247,13 +241,11 @@ bhyveCommandLineToArgv(const char *nativeConfig,
if (!(*bhyve_argv = _bhyve_argv))
goto error;
g_strfreev(lines);
return 0;
error:
VIR_FREE(_loader_argv);
VIR_FREE(_bhyve_argv);
g_strfreev(lines);
return -1;
}
@ -944,9 +936,9 @@ bhyveParseCommandLineString(const char* nativeConfig,
{
virDomainDef *def = NULL;
int bhyve_argc = 0;
char **bhyve_argv = NULL;
g_auto(GStrv) bhyve_argv = NULL;
int loader_argc = 0;
char **loader_argv = NULL;
g_auto(GStrv) loader_argv = NULL;
if (!(def = virDomainDefNew(xmlopt)))
goto cleanup;
@ -982,8 +974,6 @@ bhyveParseCommandLineString(const char* nativeConfig,
}
cleanup:
g_strfreev(loader_argv);
g_strfreev(bhyve_argv);
return def;
error:
virDomainDefFree(def);

View File

@ -1887,8 +1887,7 @@ int
libxlDriverGetDom0MaxmemConf(libxlDriverConfig *cfg,
unsigned long long *maxmem)
{
char **cmd_tokens = NULL;
char **mem_tokens = NULL;
g_auto(GStrv) cmd_tokens = NULL;
size_t i;
size_t j;
libxl_physinfo physinfo;
@ -1899,6 +1898,8 @@ libxlDriverGetDom0MaxmemConf(libxlDriverConfig *cfg,
goto physmem;
for (i = 0; cmd_tokens[i] != NULL; i++) {
g_auto(GStrv) mem_tokens = NULL;
if (!STRPREFIX(cmd_tokens[i], "dom0_mem="))
continue;
@ -1934,8 +1935,6 @@ libxlDriverGetDom0MaxmemConf(libxlDriverConfig *cfg,
goto cleanup;
}
}
g_strfreev(mem_tokens);
mem_tokens = NULL;
}
physmem:
@ -1950,8 +1949,6 @@ libxlDriverGetDom0MaxmemConf(libxlDriverConfig *cfg,
ret = 0;
cleanup:
g_strfreev(cmd_tokens);
g_strfreev(mem_tokens);
return ret;
}

View File

@ -1045,7 +1045,7 @@ xenParseVifBridge(virDomainNetDef *net, const char *bridge)
/* 'bridge' string contains a bridge name and one or more vlan trunks */
size_t i;
size_t nvlans = 0;
char **vlanstr_list = g_strsplit(bridge, ":", 0);
g_auto(GStrv) vlanstr_list = g_strsplit(bridge, ":", 0);
if (!vlanstr_list)
return -1;
@ -1058,15 +1058,13 @@ xenParseVifBridge(virDomainNetDef *net, const char *bridge)
net->vlan.tag = g_new0(unsigned int, nvlans);
for (i = 1; i <= nvlans; i++) {
if (virStrToLong_ui(vlanstr_list[i], NULL, 10, &tag) < 0) {
g_strfreev(vlanstr_list);
if (virStrToLong_ui(vlanstr_list[i], NULL, 10, &tag) < 0)
return -1;
}
net->vlan.tag[i - 1] = tag;
}
net->vlan.nTags = nvlans;
net->vlan.trunk = true;
g_strfreev(vlanstr_list);
net->virtPortProfile = g_new0(virNetDevVPortProfile, 1);
net->virtPortProfile->virtPortType = VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH;
@ -1201,19 +1199,16 @@ xenParseVif(char *entry, const char *vif_typename)
goto cleanup;
}
if (ip) {
char **ip_list = g_strsplit(ip, " ", 0);
g_auto(GStrv) ip_list = g_strsplit(ip, " ", 0);
size_t i;
if (!ip_list)
goto cleanup;
for (i = 0; ip_list[i]; i++) {
if (virDomainNetAppendIPAddress(net, ip_list[i], 0, 0) < 0) {
g_strfreev(ip_list);
if (virDomainNetAppendIPAddress(net, ip_list[i], 0, 0) < 0)
goto cleanup;
}
}
g_strfreev(ip_list);
}
if (script && script[0])
@ -1579,7 +1574,7 @@ char *
xenMakeIPList(virNetDevIPInfo *guestIP)
{
size_t i;
char **address_array;
g_auto(GStrv) address_array = NULL;
char *ret = NULL;
address_array = g_new0(char *, guestIP->nips + 1);
@ -1592,7 +1587,6 @@ xenMakeIPList(virNetDevIPInfo *guestIP)
ret = g_strjoinv(" ", address_array);
cleanup:
g_strfreev(address_array);
return ret;
}

View File

@ -246,8 +246,7 @@ static int
xenParseXLCPUID(virConf *conf, virDomainDef *def)
{
g_autofree char *cpuid_str = NULL;
char **cpuid_pairs = NULL;
char **name_and_value = NULL;
g_auto(GStrv) cpuid_pairs = NULL;
size_t i;
int ret = -1;
int policy;
@ -283,7 +282,7 @@ xenParseXLCPUID(virConf *conf, virDomainDef *def)
}
for (i = 1; cpuid_pairs[i]; i++) {
name_and_value = g_strsplit(cpuid_pairs[i], "=", 2);
g_auto(GStrv) name_and_value = g_strsplit(cpuid_pairs[i], "=", 2);
if (!name_and_value)
goto cleanup;
if (!name_and_value[0] || !name_and_value[1]) {
@ -313,16 +312,11 @@ xenParseXLCPUID(virConf *conf, virDomainDef *def)
xenTranslateCPUFeature(name_and_value[0], true),
policy) < 0)
goto cleanup;
g_strfreev(name_and_value);
name_and_value = NULL;
}
ret = 0;
cleanup:
g_strfreev(name_and_value);
g_strfreev(cpuid_pairs);
return ret;
}
@ -406,7 +400,6 @@ xenParseXLVnuma(virConf *conf,
{
int ret = -1;
char *tmp = NULL;
char **token = NULL;
size_t vcpus = 0;
size_t nr_nodes = 0;
size_t vnodeCnt = 0;
@ -506,6 +499,7 @@ xenParseXLVnuma(virConf *conf,
vcpus += virBitmapCountBits(cpumask);
} else if (STRPREFIX(str, "vdistances")) {
g_auto(GStrv) token = NULL;
size_t i, ndistances;
unsigned int value;
@ -519,7 +513,6 @@ xenParseXLVnuma(virConf *conf,
VIR_FREE(tmp);
tmp = g_strdup(vtoken);
g_strfreev(token);
if (!(token = g_strsplit(tmp, ",", 0)))
goto cleanup;
@ -583,7 +576,6 @@ xenParseXLVnuma(virConf *conf,
cleanup:
if (ret)
VIR_FREE(cpu);
g_strfreev(token);
VIR_FREE(tmp);
return ret;
@ -1301,7 +1293,7 @@ xenFormatXLOS(virConf *conf, virDomainDef *def)
static int
xenFormatXLCPUID(virConf *conf, virDomainDef *def)
{
char **cpuid_pairs = NULL;
g_auto(GStrv) cpuid_pairs = NULL;
g_autofree char *cpuid_string = NULL;
size_t i, j;
int ret = -1;
@ -1359,7 +1351,6 @@ xenFormatXLCPUID(virConf *conf, virDomainDef *def)
ret = 0;
cleanup:
g_strfreev(cpuid_pairs);
return ret;
}

View File

@ -510,7 +510,7 @@ extern int pivot_root(const char * new_root, const char * put_old);
static int lxcContainerUnmountSubtree(const char *prefix,
bool isOldRootFS)
{
char **mounts = NULL;
g_auto(GStrv) mounts = NULL;
size_t nmounts = 0;
size_t i;
int saveErrno;
@ -555,8 +555,6 @@ static int lxcContainerUnmountSubtree(const char *prefix,
ret = 0;
cleanup:
g_strfreev(mounts);
return ret;
}

View File

@ -107,8 +107,8 @@ static char ** lxcStringSplit(const char *string)
g_autofree char *tmp = NULL;
size_t i;
size_t ntokens = 0;
char **parts;
char **result = NULL;
g_auto(GStrv) parts = NULL;
g_auto(GStrv) result = NULL;
tmp = g_strdup(string);
@ -132,12 +132,9 @@ static char ** lxcStringSplit(const char *string)
result[ntokens - 2] = g_strdup(parts[i]);
}
g_strfreev(parts);
return result;
return g_steal_pointer(&result);
error:
g_strfreev(parts);
g_strfreev(result);
return NULL;
}
@ -145,7 +142,7 @@ static lxcFstab *
lxcParseFstabLine(char *fstabLine)
{
lxcFstab *fstab = NULL;
char **parts;
g_auto(GStrv) parts = NULL;
if (!fstabLine)
return NULL;
@ -162,13 +159,10 @@ lxcParseFstabLine(char *fstabLine)
fstab->type = g_strdup(parts[2]);
fstab->options = g_strdup(parts[3]);
g_strfreev(parts);
return fstab;
error:
lxcFstabFree(fstab);
g_strfreev(parts);
return NULL;
}
@ -252,7 +246,7 @@ lxcAddFstabLine(virDomainDef *def, lxcFstab *fstab)
{
const char *src = NULL;
g_autofree char *dst = NULL;
char **options = g_strsplit(fstab->options, ",", 0);
g_auto(GStrv) options = g_strsplit(fstab->options, ",", 0);
bool readonly;
int type = VIR_DOMAIN_FS_TYPE_MOUNT;
unsigned long long usage = 0;
@ -307,7 +301,6 @@ lxcAddFstabLine(virDomainDef *def, lxcFstab *fstab)
ret = 1;
cleanup:
g_strfreev(options);
return ret;
}
@ -967,7 +960,7 @@ lxcSetCpusetTune(virDomainDef *def, virConf *properties)
static int
lxcBlkioDeviceWalkCallback(const char *name, virConfValue *value, void *data)
{
char **parts = NULL;
g_auto(GStrv) parts = NULL;
virBlkioDevice *device = NULL;
virDomainDef *def = data;
size_t i = 0;
@ -1044,7 +1037,6 @@ lxcBlkioDeviceWalkCallback(const char *name, virConfValue *value, void *data)
ret = 0;
cleanup:
g_strfreev(parts);
return ret;
}
@ -1072,7 +1064,7 @@ static void
lxcSetCapDrop(virDomainDef *def, virConf *properties)
{
g_autofree char *value = NULL;
char **toDrop = NULL;
g_auto(GStrv) toDrop = NULL;
const char *capString;
size_t i;
@ -1087,8 +1079,6 @@ lxcSetCapDrop(virDomainDef *def, virConf *properties)
}
def->features[VIR_DOMAIN_FEATURE_CAPABILITIES] = VIR_DOMAIN_CAPABILITIES_POLICY_ALLOW;
g_strfreev(toDrop);
}
virDomainDef *

View File

@ -1330,7 +1330,7 @@ qemuGetSchedInfo(unsigned long long *cpuWait,
{
g_autofree char *proc = NULL;
g_autofree char *data = NULL;
char **lines = NULL;
g_auto(GStrv) lines = NULL;
size_t i;
int ret = -1;
double val;
@ -1393,7 +1393,6 @@ qemuGetSchedInfo(unsigned long long *cpuWait,
ret = 0;
cleanup:
g_strfreev(lines);
return ret;
}
@ -12518,7 +12517,7 @@ qemuConnectBaselineHypervisorCPU(virConnectPtr conn,
bool migratable;
virCPUDef *cpu = NULL;
char *cpustr = NULL;
char **features = NULL;
g_auto(GStrv) features = NULL;
virCheckFlags(VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES |
VIR_CONNECT_BASELINE_CPU_MIGRATABLE, NULL);
@ -12592,7 +12591,6 @@ qemuConnectBaselineHypervisorCPU(virConnectPtr conn,
cleanup:
virCPUDefListFree(cpus);
virCPUDefFree(cpu);
g_strfreev(features);
return cpustr;
}

View File

@ -5824,7 +5824,7 @@ remoteDispatchConnectGetCPUModelNames(virNetServer *server G_GNUC_UNUSED,
remote_connect_get_cpu_model_names_ret *ret)
{
int len, rv = -1;
char **models = NULL;
g_auto(GStrv) models = NULL;
virConnectPtr conn = remoteGetHypervisorConn(client);
if (!conn)
@ -5858,7 +5858,6 @@ remoteDispatchConnectGetCPUModelNames(virNetServer *server G_GNUC_UNUSED,
cleanup:
if (rv < 0)
virNetMessageSaveError(rerr);
g_strfreev(models);
return rv;
}

View File

@ -6271,7 +6271,7 @@ remoteConnectGetCPUModelNames(virConnectPtr conn,
{
int rv = -1;
size_t i;
char **retmodels = NULL;
g_auto(GStrv) retmodels = NULL;
remote_connect_get_cpu_model_names_args args;
remote_connect_get_cpu_model_names_ret ret;
@ -6312,8 +6312,6 @@ remoteConnectGetCPUModelNames(virConnectPtr conn,
rv = ret.ret;
cleanup:
g_strfreev(retmodels);
xdr_free((xdrproc_t) xdr_remote_connect_get_cpu_model_names_ret, (char *) &ret);
done:

View File

@ -659,7 +659,7 @@ virStorageBackendRBDRefreshPool(virStoragePoolObj *pool)
virStorageBackendRBDState *ptr = NULL;
struct rados_cluster_stat_t clusterstat;
struct rados_pool_stat_t poolstat;
char **names = NULL;
g_auto(GStrv) names = NULL;
size_t i;
if (!(ptr = virStorageBackendRBDNewState(pool)))
@ -724,7 +724,6 @@ virStorageBackendRBDRefreshPool(virStoragePoolObj *pool)
ret = 0;
cleanup:
g_strfreev(names);
virStorageBackendRBDFreeState(&ptr);
return ret;
}

View File

@ -851,7 +851,7 @@ virCgroupAddThread(virCgroup *group,
static int
virCgroupSetPartitionSuffix(const char *path, char **res)
{
char **tokens;
g_auto(GStrv) tokens = NULL;
size_t i;
int ret = -1;
@ -887,7 +887,6 @@ virCgroupSetPartitionSuffix(const char *path, char **res)
ret = 0;
cleanup:
g_strfreev(tokens);
return ret;
}

View File

@ -264,7 +264,7 @@ virCgroupV2ParseControllersFile(virCgroup *group,
int rc;
g_autofree char *contStr = NULL;
g_autofree char *contFile = NULL;
char **contList = NULL;
g_auto(GStrv) contList = NULL;
char **tmp;
if (parent) {
@ -300,8 +300,6 @@ virCgroupV2ParseControllersFile(virCgroup *group,
tmp++;
}
g_strfreev(contList);
return 0;
}

View File

@ -59,7 +59,7 @@ int
virFirmwareParse(const char *str, virFirmware *firmware)
{
int ret = -1;
char **token;
g_auto(GStrv) token = NULL;
if (!(token = g_strsplit(str, ":", 0)))
goto cleanup;
@ -84,7 +84,6 @@ virFirmwareParse(const char *str, virFirmware *firmware)
ret = 0;
cleanup:
g_strfreev(token);
return ret;
}
@ -95,7 +94,7 @@ virFirmwareParseList(const char *list,
size_t *nfirmwares)
{
int ret = -1;
char **token;
g_auto(GStrv) token = NULL;
size_t i, j;
if (!(token = g_strsplit(list, ":", 0)))
@ -126,6 +125,5 @@ virFirmwareParseList(const char *list,
ret = 0;
cleanup:
g_strfreev(token);
return ret;
}

View File

@ -349,7 +349,7 @@ int
virURIResolveAlias(virConf *conf, const char *alias, char **uri)
{
int ret = -1;
char **aliases = NULL;
g_auto(GStrv) aliases = NULL;
*uri = NULL;
@ -358,7 +358,6 @@ virURIResolveAlias(virConf *conf, const char *alias, char **uri)
if (aliases && *aliases) {
ret = virURIFindAliasMatch(aliases, alias, uri);
g_strfreev(aliases);
} else {
ret = 0;
}

View File

@ -4549,16 +4549,16 @@ vboxSnapshotRedefine(virDomainPtr dom,
char *currentSnapshotXmlFilePath = NULL;
PRUnichar *machineNameUtf16 = NULL;
char *machineName = NULL;
char **realReadWriteDisksPath = NULL;
g_auto(GStrv) realReadWriteDisksPath = NULL;
int realReadWriteDisksPathSize = 0;
char **realReadOnlyDisksPath = NULL;
g_auto(GStrv) realReadOnlyDisksPath = NULL;
int realReadOnlyDisksPathSize = 0;
virVBoxSnapshotConfSnapshot *newSnapshotPtr = NULL;
unsigned char snapshotUuid[VIR_UUID_BUFLEN];
virVBoxSnapshotConfHardDisk **hardDiskToOpen = NULL;
size_t hardDiskToOpenSize = 0;
virVBoxSnapshotConfHardDisk *newHardDisk = NULL;
char **searchResultTab = NULL;
g_auto(GStrv) searchResultTab = NULL;
ssize_t resultSize = 0;
int it = 0;
int jt = 0;
@ -5361,9 +5361,6 @@ vboxSnapshotRedefine(virDomainPtr dom,
VIR_FREE(currentSnapshotXmlFilePath);
VBOX_UTF16_FREE(machineNameUtf16);
VBOX_UTF8_FREE(machineName);
g_strfreev(realReadOnlyDisksPath);
g_strfreev(realReadWriteDisksPath);
g_strfreev(searchResultTab);
virVboxSnapshotConfHardDiskFree(newHardDisk);
VIR_FREE(hardDiskToOpen);
VIR_FREE(newSnapshotPtr);
@ -6782,7 +6779,7 @@ vboxDomainSnapshotDeleteMetadataOnly(virDomainSnapshotPtr snapshot)
char *settingsFilepath = NULL;
virVBoxSnapshotConfMachine *snapshotMachineDesc = NULL;
int isCurrent = -1;
char **searchResultTab = NULL;
g_auto(GStrv) searchResultTab = NULL;
ssize_t resultSize = 0;
int it = 0;
PRUnichar *machineNameUtf16 = NULL;
@ -7185,7 +7182,6 @@ vboxDomainSnapshotDeleteMetadataOnly(virDomainSnapshotPtr snapshot)
VBOX_RELEASE(machine);
VBOX_UTF16_FREE(settingsFilePathUtf16);
VBOX_UTF8_FREE(settingsFilepath);
g_strfreev(searchResultTab);
VIR_FREE(snapshotMachineDesc);
VBOX_UTF16_FREE(machineNameUtf16);
VBOX_UTF8_FREE(machineName);

View File

@ -38,7 +38,7 @@ virVBoxSnapshotConfCreateVBoxSnapshotConfHardDiskPtr(xmlNodePtr diskNode,
virVBoxSnapshotConfHardDisk *hardDisk = NULL;
xmlNodePtr *nodes = NULL;
char *uuid = NULL;
char **searchTabResult = NULL;
g_auto(GStrv) searchTabResult = NULL;
int resultSize = 0;
size_t i = 0;
int result = -1;
@ -103,7 +103,6 @@ virVBoxSnapshotConfCreateVBoxSnapshotConfHardDiskPtr(xmlNodePtr diskNode,
VIR_FREE(nodes);
VIR_FREE(location);
VIR_FREE(tmp);
g_strfreev(searchTabResult);
if (result < 0) {
virVboxSnapshotConfHardDiskFree(hardDisk);
hardDisk = NULL;
@ -184,7 +183,7 @@ virVBoxSnapshotConfRetrieveSnapshot(xmlNodePtr snapshotNode,
xmlNodePtr snapshotsNode = NULL;
xmlNodePtr *nodes = NULL;
char *uuid = NULL;
char **searchTabResult = NULL;
g_auto(GStrv) searchTabResult = NULL;
int resultSize = 0;
size_t i = 0;
int result = -1;
@ -270,7 +269,6 @@ virVBoxSnapshotConfRetrieveSnapshot(xmlNodePtr snapshotNode,
}
VIR_FREE(nodes);
VIR_FREE(uuid);
g_strfreev(searchTabResult);
return snapshot;
}
@ -371,9 +369,9 @@ virVBoxSnapshotConfSerializeSnapshot(xmlNodePtr node,
char *uuid = NULL;
char *timeStamp = NULL;
char **firstRegex = NULL;
g_auto(GStrv) firstRegex = NULL;
int firstRegexResult = 0;
char **secondRegex = NULL;
g_auto(GStrv) secondRegex = NULL;
int secondRegexResult = 0;
uuid = g_strdup_printf("{%s}", snapshot->uuid);
@ -450,8 +448,6 @@ virVBoxSnapshotConfSerializeSnapshot(xmlNodePtr node,
xmlUnlinkNode(snapshotsNode);
xmlFreeNode(snapshotsNode);
}
g_strfreev(firstRegex);
g_strfreev(secondRegex);
VIR_FREE(uuid);
VIR_FREE(timeStamp);
return result;
@ -581,7 +577,7 @@ virVBoxSnapshotConfLoadVboxFile(const char *filePath,
g_autoptr(xmlXPathContext) xPathContext = NULL;
char *currentStateModifiedString = NULL;
char **searchResultTab = NULL;
g_auto(GStrv) searchResultTab = NULL;
ssize_t searchResultSize = 0;
char *currentSnapshotAttribute = NULL;
@ -719,7 +715,6 @@ virVBoxSnapshotConfLoadVboxFile(const char *filePath,
VIR_FREE(currentStateModifiedString);
VIR_FREE(currentSnapshotAttribute);
g_strfreev(searchResultTab);
if (ret < 0) {
virVBoxSnapshotConfMachineFree(machineDescription);
machineDescription = NULL;
@ -963,9 +958,9 @@ virVBoxSnapshotConfSaveVboxFile(virVBoxSnapshotConfMachine *machine,
char *currentSnapshot = NULL;
char *timeStamp = NULL;
char **firstRegex = NULL;
g_auto(GStrv) firstRegex = NULL;
int firstRegexResult = 0;
char **secondRegex = NULL;
g_auto(GStrv) secondRegex = NULL;
int secondRegexResult = 0;
if (machine == NULL) {
@ -1171,9 +1166,6 @@ virVBoxSnapshotConfSaveVboxFile(virVBoxSnapshotConfMachine *machine,
xmlUnlinkNode(machineNode);
xmlFreeNode(machineNode);
g_strfreev(firstRegex);
g_strfreev(secondRegex);
return ret;
}
@ -1216,7 +1208,7 @@ virVBoxSnapshotConfGetRWDisksPathsFromLibvirtXML(const char *filePath,
{
int result = -1;
size_t i = 0;
char **ret = NULL;
g_auto(GStrv) ret = NULL;
g_autoptr(xmlDoc) xml = NULL;
g_autoptr(xmlXPathContext) xPathContext = NULL;
xmlNodePtr *nodes = NULL;
@ -1253,15 +1245,12 @@ virVBoxSnapshotConfGetRWDisksPathsFromLibvirtXML(const char *filePath,
if (sourceNode)
ret[i] = virXMLPropString(sourceNode, "file");
}
*rwDisksPath = g_steal_pointer(&ret);
result = 0;
cleanup:
if (result < 0) {
g_strfreev(ret);
if (result < 0)
nodeSize = -1;
} else {
*rwDisksPath = ret;
}
VIR_FREE(nodes);
return nodeSize;
}
@ -1277,7 +1266,7 @@ virVBoxSnapshotConfGetRODisksPathsFromLibvirtXML(const char *filePath,
{
int result = -1;
size_t i = 0;
char **ret = NULL;
g_auto(GStrv) ret = NULL;
g_autoptr(xmlDoc) xml = NULL;
g_autoptr(xmlXPathContext) xPathContext = NULL;
xmlNodePtr *nodes = NULL;
@ -1313,15 +1302,12 @@ virVBoxSnapshotConfGetRODisksPathsFromLibvirtXML(const char *filePath,
if (sourceNode)
ret[i] = virXMLPropString(sourceNode, "file");
}
*roDisksPath = g_steal_pointer(&ret);
result = 0;
cleanup:
if (result < 0) {
g_strfreev(ret);
if (result < 0)
nodeSize = -1;
} else {
*roDisksPath = ret;
}
VIR_FREE(nodes);
return nodeSize;
}

View File

@ -1548,7 +1548,7 @@ _vrdeServerGetPorts(struct _vboxDriver *data, IVRDEServer *VRDEServer,
PRUnichar *VRDEPortsValue = NULL;
PRInt32 port = -1;
ssize_t nmatches = 0;
char **matches = NULL;
g_auto(GStrv) matches = NULL;
char *portUtf8 = NULL;
/* get active (effective) port - available only when VM is running and has
@ -1596,7 +1596,6 @@ _vrdeServerGetPorts(struct _vboxDriver *data, IVRDEServer *VRDEServer,
}
cleanup:
g_strfreev(matches);
VBOX_UTF8_FREE(portUtf8);
VBOX_UTF16_FREE(VRDEPortsValue);
VBOX_UTF16_FREE(VRDEPortsKey);

View File

@ -705,7 +705,7 @@ prlsdkGetFSInfo(PRL_HANDLE prldisk,
{
char *buf = NULL;
int ret = -1;
char **matches = NULL;
g_auto(GStrv) matches = NULL;
virURI *uri = NULL;
fs->type = VIR_DOMAIN_FS_TYPE_FILE;
@ -767,7 +767,6 @@ prlsdkGetFSInfo(PRL_HANDLE prldisk,
cleanup:
VIR_FREE(buf);
g_strfreev(matches);
return ret;
}

View File

@ -1003,7 +1003,7 @@ testQemuMonitorJSONGetDeviceAliases(const void *opaque)
const testGenericData *data = opaque;
virDomainXMLOption *xmlopt = data->xmlopt;
int ret = -1;
char **aliases = NULL;
g_auto(GStrv) aliases = NULL;
const char **alias;
const char *expected[] = {
"virtio-disk25", "video0", "serial0", "ide0-0-0", "usb", NULL };
@ -1053,7 +1053,6 @@ testQemuMonitorJSONGetDeviceAliases(const void *opaque)
}
cleanup:
g_strfreev(aliases);
return ret;
}

View File

@ -19,7 +19,7 @@ static char *
testFilterXML(char *xml)
{
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
char **xmlLines = NULL;
g_auto(GStrv) xmlLines = NULL;
char **xmlLine;
char *ret = NULL;
@ -39,7 +39,6 @@ testFilterXML(char *xml)
ret = virBufferContentAndReset(&buf);
cleanup:
g_strfreev(xmlLines);
return ret;
}

View File

@ -372,7 +372,7 @@ static int testConfParseStringList(const void *opaque G_GNUC_UNUSED)
int ret = -1;
g_autoptr(virConf) conf = virConfReadString(srcdata, 0);
char **str = NULL;
g_auto(GStrv) str = NULL;
if (!conf)
return -1;
@ -423,7 +423,6 @@ static int testConfParseStringList(const void *opaque G_GNUC_UNUSED)
ret = 0;
cleanup:
g_strfreev(str);
return ret;
}

View File

@ -65,7 +65,7 @@ struct testFileGetMountSubtreeData {
static int testFileGetMountSubtree(const void *opaque)
{
int ret = -1;
char **gotmounts = NULL;
g_auto(GStrv) gotmounts = NULL;
size_t gotnmounts = 0;
const struct testFileGetMountSubtreeData *data = opaque;
@ -88,7 +88,6 @@ static int testFileGetMountSubtree(const void *opaque)
data->mounts, data->nmounts);
cleanup:
g_strfreev(gotmounts);
return ret;
}
#endif /* ! defined WITH_MNTENT_H && defined WITH_GETMNTENT_R */

View File

@ -127,7 +127,7 @@ static int
testStringSearch(const void *opaque)
{
const struct stringSearchData *data = opaque;
char **matches = NULL;
g_auto(GStrv) matches = NULL;
ssize_t nmatches;
int ret = -1;
@ -174,7 +174,6 @@ testStringSearch(const void *opaque)
ret = 0;
cleanup:
g_strfreev(matches);
return ret;
}

View File

@ -1059,7 +1059,7 @@ static char **
vshExtractCPUDefXMLs(vshControl *ctl,
const char *xmlFile)
{
char **cpus = NULL;
g_auto(GStrv) cpus = NULL;
g_autofree char *buffer = NULL;
g_autofree char *xmlStr = NULL;
g_autoptr(xmlDoc) xml = NULL;
@ -1123,10 +1123,9 @@ vshExtractCPUDefXMLs(vshControl *ctl,
}
cleanup:
return cpus;
return g_steal_pointer(&cpus);
error:
g_strfreev(cpus);
goto cleanup;
}
@ -1163,7 +1162,7 @@ cmdCPUCompare(vshControl *ctl, const vshCmd *cmd)
const char *from = NULL;
bool ret = false;
int result;
char **cpus = NULL;
g_auto(GStrv) cpus = NULL;
unsigned int flags = 0;
virshControl *priv = ctl->privData;
@ -1207,8 +1206,6 @@ cmdCPUCompare(vshControl *ctl, const vshCmd *cmd)
ret = true;
cleanup:
g_strfreev(cpus);
return ret;
}
@ -1585,7 +1582,7 @@ cmdHypervisorCPUCompare(vshControl *ctl,
const char *machine = NULL;
bool ret = false;
int result;
char **cpus = NULL;
g_auto(GStrv) cpus = NULL;
unsigned int flags = 0;
virshControl *priv = ctl->privData;
@ -1640,7 +1637,6 @@ cmdHypervisorCPUCompare(vshControl *ctl,
ret = true;
cleanup:
g_strfreev(cpus);
return ret;
}
@ -1699,7 +1695,7 @@ cmdHypervisorCPUBaseline(vshControl *ctl,
const char *machine = NULL;
bool ret = false;
g_autofree char *result = NULL;
char **list = NULL;
g_auto(GStrv) list = NULL;
unsigned int flags = 0;
virshControl *priv = ctl->privData;
@ -1729,7 +1725,6 @@ cmdHypervisorCPUBaseline(vshControl *ctl,
ret = true;
}
g_strfreev(list);
return ret;
}

View File

@ -47,7 +47,8 @@ static int virLoginShellAllowedUser(virConf *conf,
int ret = -1;
size_t i;
char *gname = NULL;
char **users = NULL, **entries;
g_auto(GStrv) users = NULL;
char **entries;
if (virConfGetValueStringList(conf, "allowed_users", false, &users) < 0)
goto cleanup;
@ -84,7 +85,6 @@ static int virLoginShellAllowedUser(virConf *conf,
name, conf_file);
cleanup:
VIR_FREE(gname);
g_strfreev(users);
return ret;
}
@ -157,7 +157,7 @@ main(int argc, char **argv)
uid_t uid;
gid_t gid;
char *name = NULL;
char **shargv = NULL;
g_auto(GStrv) shargv = NULL;
size_t shargvlen = 0;
char *shcmd = NULL;
virSecurityModelPtr secmodel = NULL;
@ -403,7 +403,6 @@ main(int argc, char **argv)
virDomainFree(dom);
if (conn)
virConnectClose(conn);
g_strfreev(shargv);
VIR_FREE(shcmd);
VIR_FREE(term);
VIR_FREE(name);

View File

@ -3365,7 +3365,8 @@ cmdComplete(vshControl *ctl, const vshCmd *cmd)
int stdin_fileno = STDIN_FILENO;
const char *arg = "";
const vshCmdOpt *opt = NULL;
char **matches = NULL, **iter;
g_auto(GStrv) matches = NULL;
char **iter;
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
if (vshCommandOptStringQuiet(ctl, cmd, "string", &arg) <= 0)
@ -3406,7 +3407,6 @@ cmdComplete(vshControl *ctl, const vshCmd *cmd)
ret = true;
cleanup:
g_strfreev(matches);
return ret;
}