Let's make use of the auto __cleanup capabilities cleaning up any
now unnecessary goto paths.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
src/conf/domain_conf.c | 1890 ++++++++++++++--------------------------
1 file changed, 660 insertions(+), 1230 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index d550b467f7..bd30943684 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -1099,34 +1099,33 @@ static int
virDomainKeyWrapCipherDefParseXML(virDomainKeyWrapDefPtr keywrap,
xmlNodePtr node)
{
- char *name = NULL;
- char *state = NULL;
int state_type;
int name_type;
- int ret = -1;
+ VIR_AUTOFREE(char *) name = NULL;
+ VIR_AUTOFREE(char *) state = NULL;
if (!(name = virXMLPropString(node, "name"))) {
virReportError(VIR_ERR_CONF_SYNTAX, "%s",
_("missing name for cipher"));
- goto cleanup;
+ return -1;
}
if ((name_type = virDomainKeyWrapCipherNameTypeFromString(name)) < 0) {
virReportError(VIR_ERR_CONF_SYNTAX,
_("%s is not a supported cipher name"), name);
- goto cleanup;
+ return -1;
}
if (!(state = virXMLPropString(node, "state"))) {
virReportError(VIR_ERR_CONF_SYNTAX,
_("missing state for cipher named %s"), name);
- goto cleanup;
+ return -1;
}
if ((state_type = virTristateSwitchTypeFromString(state)) < 0) {
virReportError(VIR_ERR_CONF_SYNTAX,
_("%s is not a supported cipher state"), state);
- goto cleanup;
+ return -1;
}
switch ((virDomainKeyWrapCipherName) name_type) {
@@ -1137,7 +1136,7 @@ virDomainKeyWrapCipherDefParseXML(virDomainKeyWrapDefPtr keywrap,
"one cipher node with name %s"),
virDomainKeyWrapCipherNameTypeToString(name_type));
- goto cleanup;
+ return -1;
}
keywrap->aes = state_type;
break;
@@ -1149,7 +1148,7 @@ virDomainKeyWrapCipherDefParseXML(virDomainKeyWrapDefPtr keywrap,
"one cipher node with name %s"),
virDomainKeyWrapCipherNameTypeToString(name_type));
- goto cleanup;
+ return -1;
}
keywrap->dea = state_type;
break;
@@ -1158,12 +1157,7 @@ virDomainKeyWrapCipherDefParseXML(virDomainKeyWrapDefPtr keywrap,
break;
}
- ret = 0;
-
- cleanup:
- VIR_FREE(name);
- VIR_FREE(state);
- return ret;
+ return 0;
}
static int
@@ -1171,8 +1165,8 @@ virDomainKeyWrapDefParseXML(virDomainDefPtr def, xmlXPathContextPtr
ctxt)
{
size_t i;
int ret = -1;
- xmlNodePtr *nodes = NULL;
int n;
+ VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
if ((n = virXPathNodeSet("./keywrap/cipher", ctxt, &nodes)) < 0)
return n;
@@ -1194,7 +1188,6 @@ virDomainKeyWrapDefParseXML(virDomainDefPtr def, xmlXPathContextPtr
ctxt)
cleanup:
if (ret < 0)
VIR_FREE(def->keywrap);
- VIR_FREE(nodes);
return ret;
}
@@ -1267,10 +1260,9 @@ static int
virDomainVirtioOptionsParseXML(xmlNodePtr driver,
virDomainVirtioOptionsPtr *virtio)
{
- char *str = NULL;
- int ret = -1;
int val;
virDomainVirtioOptionsPtr res;
+ VIR_AUTOFREE(char *) str = NULL;
if (*virtio || !driver)
return 0;
@@ -1284,7 +1276,7 @@ virDomainVirtioOptionsParseXML(xmlNodePtr driver,
if ((val = virTristateSwitchTypeFromString(str)) <= 0) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("invalid iommu value"));
- goto cleanup;
+ return -1;
}
res->iommu = val;
}
@@ -1294,16 +1286,12 @@ virDomainVirtioOptionsParseXML(xmlNodePtr driver,
if ((val = virTristateSwitchTypeFromString(str)) <= 0) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("invalid ats value"));
- goto cleanup;
+ return -1;
}
res->ats = val;
}
- ret = 0;
-
- cleanup:
- VIR_FREE(str);
- return ret;
+ return 0;
}
@@ -1344,8 +1332,8 @@ static int
virDomainBlkioDeviceParseXML(xmlNodePtr root,
virBlkioDevicePtr dev)
{
- char *c = NULL;
xmlNodePtr node;
+ VIR_AUTOFREE(char *) c = NULL;
node = root->children;
while (node) {
@@ -1410,7 +1398,6 @@ virDomainBlkioDeviceParseXML(xmlNodePtr root,
return 0;
error:
- VIR_FREE(c);
VIR_FREE(dev->path);
return -1;
}
@@ -5338,8 +5325,7 @@ virDomainDefCollectBootOrder(virDomainDefPtr def ATTRIBUTE_UNUSED,
void *data)
{
virHashTablePtr bootHash = data;
- char *order = NULL;
- int ret = -1;
+ VIR_AUTOFREE(char *) order = NULL;
if (info->bootIndex == 0)
return 0;
@@ -5353,23 +5339,19 @@ virDomainDefCollectBootOrder(virDomainDefPtr def
ATTRIBUTE_UNUSED,
return 0;
}
if (virAsprintf(&order, "%u", info->bootIndex) < 0)
- goto cleanup;
+ return -1;
if (virHashLookup(bootHash, order)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("boot order '%s' used for more than one
device"),
order);
- goto cleanup;
+ return -1;
}
if (virHashAddEntry(bootHash, order, (void *) 1) < 0)
- goto cleanup;
-
- ret = 0;
+ return -1;
- cleanup:
- VIR_FREE(order);
- return ret;
+ return 0;
}
@@ -6889,8 +6871,7 @@ static int
virDomainDeviceUSBMasterParseXML(xmlNodePtr node,
virDomainDeviceUSBMasterPtr master)
{
- char *startport;
- int ret = -1;
+ VIR_AUTOFREE(char *) startport = NULL;
memset(master, 0, sizeof(*master));
@@ -6900,28 +6881,23 @@ virDomainDeviceUSBMasterParseXML(xmlNodePtr node,
virStrToLong_ui(startport, NULL, 10, &master->startport) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Cannot parse <master> 'startport'
attribute"));
- goto cleanup;
+ return -1;
}
- ret = 0;
-
- cleanup:
- VIR_FREE(startport);
- return ret;
+ return 0;
}
static int
virDomainDeviceBootParseXML(xmlNodePtr node,
virDomainDeviceInfoPtr info)
{
- char *order;
- char *loadparm = NULL;
- int ret = -1;
+ VIR_AUTOFREE(char *) order = NULL;
+ VIR_AUTOFREE(char *) loadparm = NULL;
if (!(order = virXMLPropString(node, "order"))) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("missing boot order attribute"));
- goto cleanup;
+ return -1;
}
if (virStrToLong_uip(order, NULL, 10, &info->bootIndex) < 0 ||
@@ -6929,7 +6905,7 @@ virDomainDeviceBootParseXML(xmlNodePtr node,
virReportError(VIR_ERR_INTERNAL_ERROR,
_("incorrect boot order '%s', expecting positive
integer"),
order);
- goto cleanup;
+ return -1;
}
loadparm = virXMLPropString(node, "loadparm");
@@ -6938,30 +6914,24 @@ virDomainDeviceBootParseXML(xmlNodePtr node,
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to convert loadparm '%s' to upper
case"),
loadparm);
- goto cleanup;
+ return -1;
}
if (!virDomainDeviceLoadparmIsValid(info->loadparm)) {
VIR_FREE(info->loadparm);
- goto cleanup;
+ return -1;
}
}
- ret = 0;
-
- cleanup:
- VIR_FREE(order);
- VIR_FREE(loadparm);
- return ret;
+ return 0;
}
static int
virDomainDeviceISAAddressParseXML(xmlNodePtr node,
virDomainDeviceISAAddressPtr addr)
{
- int ret = -1;
- char *iobase;
- char *irq;
+ VIR_AUTOFREE(char *) iobase = NULL;
+ VIR_AUTOFREE(char *) irq = NULL;
memset(addr, 0, sizeof(*addr));
@@ -6972,21 +6942,17 @@ virDomainDeviceISAAddressParseXML(xmlNodePtr node,
virStrToLong_uip(iobase, NULL, 16, &addr->iobase) < 0) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("Cannot parse <address> 'iobase'
attribute"));
- goto cleanup;
+ return -1;
}
if (irq &&
virStrToLong_uip(irq, NULL, 16, &addr->irq) < 0) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("Cannot parse <address> 'irq'
attribute"));
- goto cleanup;
+ return -1;
}
- ret = 0;
- cleanup:
- VIR_FREE(iobase);
- VIR_FREE(irq);
- return ret;
+ return 0;
}
@@ -6994,15 +6960,14 @@ static int
virDomainDeviceDimmAddressParseXML(xmlNodePtr node,
virDomainDeviceDimmAddressPtr addr)
{
- int ret = -1;
- char *tmp = NULL;
+ VIR_AUTOFREE(char *) tmp = NULL;
if (!(tmp = virXMLPropString(node, "slot")) ||
virStrToLong_uip(tmp, NULL, 10, &addr->slot) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("invalid or missing dimm slot id '%s'"),
NULLSTR(tmp));
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
@@ -7010,18 +6975,11 @@ virDomainDeviceDimmAddressParseXML(xmlNodePtr node,
if (virStrToLong_ullp(tmp, NULL, 16, &addr->base) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("invalid dimm base address '%s'"), tmp);
- goto cleanup;
+ return -1;
}
-
- VIR_FREE(tmp);
}
- ret = 0;
-
- cleanup:
- VIR_FREE(tmp);
-
- return ret;
+ return 0;
}
@@ -7029,57 +6987,56 @@ static int
virDomainDeviceAddressParseXML(xmlNodePtr address,
virDomainDeviceInfoPtr info)
{
- int ret = -1;
- char *type = virXMLPropString(address, "type");
+ VIR_AUTOFREE(char *) type = virXMLPropString(address, "type");
if (type) {
if ((info->type = virDomainDeviceAddressTypeFromString(type)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown address type '%s'"), type);
- goto cleanup;
+ return -1;
}
} else {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("No type specified for device
address"));
- goto cleanup;
+ return -1;
}
switch ((virDomainDeviceAddressType) info->type) {
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
if (virPCIDeviceAddressParseXML(address, &info->addr.pci) < 0)
- goto cleanup;
+ return -1;
break;
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE:
if (virDomainDeviceDriveAddressParseXML(address, &info->addr.drive) <
0)
- goto cleanup;
+ return -1;
break;
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_SERIAL:
if (virDomainDeviceVirtioSerialAddressParseXML
(address, &info->addr.vioserial) < 0)
- goto cleanup;
+ return -1;
break;
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCID:
if (virDomainDeviceCcidAddressParseXML(address, &info->addr.ccid) < 0)
- goto cleanup;
+ return -1;
break;
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_USB:
if (virDomainDeviceUSBAddressParseXML(address, &info->addr.usb) < 0)
- goto cleanup;
+ return -1;
break;
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO:
if (virDomainDeviceSpaprVioAddressParseXML(address, &info->addr.spaprvio)
< 0)
- goto cleanup;
+ return -1;
break;
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW:
if (virDomainDeviceCCWAddressParseXML
(address, &info->addr.ccw) < 0)
- goto cleanup;
+ return -1;
break;
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO:
@@ -7087,17 +7044,17 @@ virDomainDeviceAddressParseXML(xmlNodePtr address,
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_ISA:
if (virDomainDeviceISAAddressParseXML(address, &info->addr.isa) < 0)
- goto cleanup;
+ return -1;
break;
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390:
virReportError(VIR_ERR_XML_ERROR, "%s",
_("virtio-s390 bus doesn't have an address"));
- goto cleanup;
+ return -1;
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DIMM:
if (virDomainDeviceDimmAddressParseXML(address, &info->addr.dimm) < 0)
- goto cleanup;
+ return -1;
break;
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE:
@@ -7105,10 +7062,7 @@ virDomainDeviceAddressParseXML(xmlNodePtr address,
break;
}
- ret = 0;
- cleanup:
- VIR_FREE(type);
- return ret;
+ return 0;
}
@@ -7138,11 +7092,11 @@ virDomainDeviceInfoParseXML(virDomainXMLOptionPtr xmlopt
ATTRIBUTE_UNUSED,
xmlNodePtr alias = NULL;
xmlNodePtr boot = NULL;
xmlNodePtr rom = NULL;
- char *type = NULL;
- char *romenabled = NULL;
- char *rombar = NULL;
- char *aliasStr = NULL;
int ret = -1;
+ VIR_AUTOFREE(char *) type = NULL;
+ VIR_AUTOFREE(char *) romenabled = NULL;
+ VIR_AUTOFREE(char *) rombar = NULL;
+ VIR_AUTOFREE(char *) aliasStr = NULL;
virDomainDeviceInfoClear(info);
@@ -7224,10 +7178,6 @@ virDomainDeviceInfoParseXML(virDomainXMLOptionPtr xmlopt
ATTRIBUTE_UNUSED,
cleanup:
if (ret < 0)
virDomainDeviceInfoClear(info);
- VIR_FREE(type);
- VIR_FREE(rombar);
- VIR_FREE(romenabled);
- VIR_FREE(aliasStr);
return ret;
}
@@ -7256,9 +7206,9 @@ virDomainHostdevSubsysUSBDefParseXML(xmlNodePtr node,
int ret = -1;
bool got_product, got_vendor;
xmlNodePtr cur;
- char *startupPolicy = NULL;
- char *autoAddress;
virDomainHostdevSubsysUSBPtr usbsrc = &def->source.subsys.u.usb;
+ VIR_AUTOFREE(char *) startupPolicy = NULL;
+ VIR_AUTOFREE(char *) autoAddress = NULL;
if ((startupPolicy = virXMLPropString(node, "startupPolicy"))) {
def->startupPolicy =
@@ -7267,16 +7217,13 @@ virDomainHostdevSubsysUSBDefParseXML(xmlNodePtr node,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Unknown startup policy '%s'"),
startupPolicy);
- VIR_FREE(startupPolicy);
goto out;
}
- VIR_FREE(startupPolicy);
}
if ((autoAddress = virXMLPropString(node, "autoAddress"))) {
if (STREQ(autoAddress, "yes"))
usbsrc->autoAddress = true;
- VIR_FREE(autoAddress);
}
/* Product can validly be 0, so we need some extra help to determine
@@ -7288,24 +7235,22 @@ virDomainHostdevSubsysUSBDefParseXML(xmlNodePtr node,
while (cur != NULL) {
if (cur->type == XML_ELEMENT_NODE) {
if (virXMLNodeNameEqual(cur, "vendor")) {
- char *vendor = virXMLPropString(cur, "id");
+ VIR_AUTOFREE(char *) vendor = virXMLPropString(cur, "id");
if (vendor) {
got_vendor = true;
if (virStrToLong_ui(vendor, NULL, 0, &usbsrc->vendor) < 0)
{
virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot parse vendor id %s"),
vendor);
- VIR_FREE(vendor);
goto out;
}
- VIR_FREE(vendor);
} else {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("usb vendor needs id"));
goto out;
}
} else if (virXMLNodeNameEqual(cur, "product")) {
- char* product = virXMLPropString(cur, "id");
+ VIR_AUTOFREE(char *) product = virXMLPropString(cur, "id");
if (product) {
got_product = true;
@@ -7314,27 +7259,24 @@ virDomainHostdevSubsysUSBDefParseXML(xmlNodePtr node,
virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot parse product %s"),
product);
- VIR_FREE(product);
goto out;
}
- VIR_FREE(product);
} else {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("usb product needs id"));
goto out;
}
} else if (virXMLNodeNameEqual(cur, "address")) {
- char *bus, *device;
+ VIR_AUTOFREE(char *) bus = NULL;
+ VIR_AUTOFREE(char *) device = NULL;
bus = virXMLPropString(cur, "bus");
if (bus) {
if (virStrToLong_ui(bus, NULL, 0, &usbsrc->bus) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot parse bus %s"), bus);
- VIR_FREE(bus);
goto out;
}
- VIR_FREE(bus);
} else {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("usb address needs bus
id"));
@@ -7347,10 +7289,8 @@ virDomainHostdevSubsysUSBDefParseXML(xmlNodePtr node,
virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot parse device %s"),
device);
- VIR_FREE(device);
goto out;
}
- VIR_FREE(device);
} else {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("usb address needs device id"));
@@ -7444,14 +7384,13 @@ virDomainHostdevSubsysPCIDefParseXML(xmlNodePtr node,
} else if ((flags & VIR_DOMAIN_DEF_PARSE_STATUS) &&
virXMLNodeNameEqual(cur, "state")) {
/* Legacy back-compat. Don't add any more attributes here */
- char *devaddr = virXMLPropString(cur, "devaddr");
+ VIR_AUTOFREE(char *) devaddr = virXMLPropString(cur,
"devaddr");
if (devaddr &&
virDomainParseLegacyDeviceAddress(devaddr,
&def->info->addr.pci)
< 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unable to parse devaddr parameter
'%s'"),
devaddr);
- VIR_FREE(devaddr);
goto out;
}
def->info->type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI;
@@ -7482,9 +7421,9 @@ virDomainStorageNetworkParseHost(xmlNodePtr hostnode,
size_t *nhosts)
{
int ret = -1;
- char *transport = NULL;
- char *port = NULL;
virStorageNetHostDef host;
+ VIR_AUTOFREE(char *) transport = NULL;
+ VIR_AUTOFREE(char *) port = NULL;
memset(&host, 0, sizeof(host));
host.transport = VIR_STORAGE_NET_HOST_TRANS_TCP;
@@ -7538,8 +7477,6 @@ virDomainStorageNetworkParseHost(xmlNodePtr hostnode,
cleanup:
virStorageNetHostDefClear(&host);
- VIR_FREE(transport);
- VIR_FREE(port);
return ret;
}
@@ -7568,11 +7505,12 @@ static int
virDomainHostdevSubsysSCSIHostDefParseXML(xmlNodePtr sourcenode,
virDomainHostdevSubsysSCSIPtr scsisrc)
{
- int ret = -1;
bool got_address = false, got_adapter = false;
xmlNodePtr cur;
- char *bus = NULL, *target = NULL, *unit = NULL;
virDomainHostdevSubsysSCSIHostPtr scsihostsrc = &scsisrc->u.host;
+ VIR_AUTOFREE(char *) bus = NULL;
+ VIR_AUTOFREE(char *) target = NULL;
+ VIR_AUTOFREE(char *) unit = NULL;
cur = sourcenode->children;
while (cur != NULL) {
@@ -7582,7 +7520,7 @@ virDomainHostdevSubsysSCSIHostDefParseXML(xmlNodePtr sourcenode,
virReportError(VIR_ERR_XML_ERROR, "%s",
_("more than one source addresses is "
"specified for scsi hostdev"));
- goto cleanup;
+ return -1;
}
if (!(bus = virXMLPropString(cur, "bus")) ||
@@ -7591,26 +7529,26 @@ virDomainHostdevSubsysSCSIHostDefParseXML(xmlNodePtr sourcenode,
virReportError(VIR_ERR_XML_ERROR, "%s",
_("'bus', 'target', and
'unit' must be specified "
"for scsi hostdev source address"));
- goto cleanup;
+ return -1;
}
if (virStrToLong_uip(bus, NULL, 0, &scsihostsrc->bus) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot parse bus '%s'"), bus);
- goto cleanup;
+ return -1;
}
if (virStrToLong_uip(target, NULL, 0,
&scsihostsrc->target) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot parse target '%s'"),
target);
- goto cleanup;
+ return -1;
}
if (virStrToLong_ullp(unit, NULL, 0, &scsihostsrc->unit) < 0)
{
virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot parse unit '%s'"), unit);
- goto cleanup;
+ return -1;
}
got_address = true;
@@ -7619,12 +7557,12 @@ virDomainHostdevSubsysSCSIHostDefParseXML(xmlNodePtr sourcenode,
virReportError(VIR_ERR_XML_ERROR, "%s",
_("more than one adapters is specified "
"for scsi hostdev source"));
- goto cleanup;
+ return -1;
}
if (!(scsihostsrc->adapter = virXMLPropString(cur, "name")))
{
virReportError(VIR_ERR_XML_ERROR, "%s",
_("'adapter' must be specified for scsi
hostdev source"));
- goto cleanup;
+ return -1;
}
got_adapter = true;
@@ -7632,7 +7570,7 @@ virDomainHostdevSubsysSCSIHostDefParseXML(xmlNodePtr sourcenode,
virReportError(VIR_ERR_XML_ERROR,
_("unsupported element '%s' of scsi hostdev
source"),
cur->name);
- goto cleanup;
+ return -1;
}
}
cur = cur->next;
@@ -7642,15 +7580,10 @@ virDomainHostdevSubsysSCSIHostDefParseXML(xmlNodePtr sourcenode,
virReportError(VIR_ERR_XML_ERROR, "%s",
_("'adapter' and 'address' must be specified
for scsi "
"hostdev source"));
- goto cleanup;
+ return -1;
}
- ret = 0;
- cleanup:
- VIR_FREE(bus);
- VIR_FREE(target);
- VIR_FREE(unit);
- return ret;
+ return 0;
}
static int
@@ -7729,8 +7662,7 @@ virDomainHostdevSubsysSCSIDefParseXML(xmlNodePtr sourcenode,
virDomainHostdevSubsysSCSIPtr scsisrc,
xmlXPathContextPtr ctxt)
{
- char *protocol = NULL;
- int ret = -1;
+ VIR_AUTOFREE(char *) protocol = NULL;
if ((protocol = virXMLPropString(sourcenode, "protocol"))) {
scsisrc->protocol =
@@ -7739,33 +7671,28 @@ virDomainHostdevSubsysSCSIDefParseXML(xmlNodePtr sourcenode,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Unknown SCSI subsystem protocol '%s'"),
protocol);
- goto cleanup;
+ return -1;
}
}
if (scsisrc->protocol == VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI)
- ret = virDomainHostdevSubsysSCSIiSCSIDefParseXML(sourcenode, scsisrc, ctxt);
- else
- ret = virDomainHostdevSubsysSCSIHostDefParseXML(sourcenode, scsisrc);
+ return virDomainHostdevSubsysSCSIiSCSIDefParseXML(sourcenode, scsisrc, ctxt);
- cleanup:
- VIR_FREE(protocol);
- return ret;
+ return virDomainHostdevSubsysSCSIHostDefParseXML(sourcenode, scsisrc);
}
static int
virDomainHostdevSubsysSCSIVHostDefParseXML(xmlNodePtr sourcenode,
virDomainHostdevDefPtr def)
{
- char *protocol = NULL;
- char *wwpn = NULL;
virDomainHostdevSubsysSCSIVHostPtr hostsrc = &def->source.subsys.u.scsi_host;
- int ret = -1;
+ VIR_AUTOFREE(char *) protocol = NULL;
+ VIR_AUTOFREE(char *) wwpn = NULL;
if (!(protocol = virXMLPropString(sourcenode, "protocol"))) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("Missing scsi_host subsystem protocol"));
- return ret;
+ return -1;
}
if ((hostsrc->protocol =
@@ -7773,7 +7700,7 @@ virDomainHostdevSubsysSCSIVHostDefParseXML(xmlNodePtr sourcenode,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Unknown scsi_host subsystem protocol '%s'"),
protocol);
- goto cleanup;
+ return -1;
}
switch ((virDomainHostdevSubsysSCSIHostProtocolType) hostsrc->protocol) {
@@ -7781,13 +7708,13 @@ virDomainHostdevSubsysSCSIVHostDefParseXML(xmlNodePtr sourcenode,
if (!(wwpn = virXMLPropString(sourcenode, "wwpn"))) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("missing vhost-scsi hostdev source wwpn"));
- goto cleanup;
+ return -1;
}
if (!STRPREFIX(wwpn, "naa.") ||
!virValidateWWN(wwpn + 4)) {
virReportError(VIR_ERR_XML_ERROR, "%s", _("malformed
'wwpn' value"));
- goto cleanup;
+ return -1;
}
VIR_STEAL_PTR(hostsrc->wwpn, wwpn);
break;
@@ -7796,51 +7723,43 @@ virDomainHostdevSubsysSCSIVHostDefParseXML(xmlNodePtr sourcenode,
virReportError(VIR_ERR_XML_ERROR,
_("Invalid hostdev protocol '%s'"),
virDomainHostdevSubsysSCSIHostProtocolTypeToString(hostsrc->protocol));
- goto cleanup;
+ return -1;
break;
}
- ret = 0;
- cleanup:
- VIR_FREE(wwpn);
- VIR_FREE(protocol);
- return ret;
+ return 0;
}
static int
virDomainHostdevSubsysMediatedDevDefParseXML(virDomainHostdevDefPtr def,
xmlXPathContextPtr ctxt)
{
- int ret = -1;
unsigned char uuid[VIR_UUID_BUFLEN] = {0};
- char *uuidxml = NULL;
xmlNodePtr node = NULL;
virDomainHostdevSubsysMediatedDevPtr mdevsrc = &def->source.subsys.u.mdev;
+ VIR_AUTOFREE(char *) uuidxml = NULL;
if (!(node = virXPathNode("./source/address", ctxt))) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("Missing <address> element"));
- goto cleanup;
+ return -1;
}
if (!(uuidxml = virXMLPropString(node, "uuid"))) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("Missing 'uuid' attribute for element
<address>"));
- goto cleanup;
+ return -1;
}
if (virUUIDParse(uuidxml, uuid) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s",
_("Cannot parse uuid attribute of element
<address>"));
- goto cleanup;
+ return -1;
}
virUUIDFormat(uuid, mdevsrc->uuidstr);
- ret = 0;
- cleanup:
- VIR_FREE(uuidxml);
- return ret;
+ return 0;
}
static int
@@ -7851,17 +7770,16 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
unsigned int flags)
{
xmlNodePtr sourcenode;
- char *managed = NULL;
- char *sgio = NULL;
- char *rawio = NULL;
- char *backendStr = NULL;
- char *model = NULL;
- char *display = NULL;
int backend;
- int ret = -1;
virDomainHostdevSubsysPCIPtr pcisrc = &def->source.subsys.u.pci;
virDomainHostdevSubsysSCSIPtr scsisrc = &def->source.subsys.u.scsi;
virDomainHostdevSubsysMediatedDevPtr mdevsrc = &def->source.subsys.u.mdev;
+ VIR_AUTOFREE(char *) managed = NULL;
+ VIR_AUTOFREE(char *) sgio = NULL;
+ VIR_AUTOFREE(char *) rawio = NULL;
+ VIR_AUTOFREE(char *) backendStr = NULL;
+ VIR_AUTOFREE(char *) model = NULL;
+ VIR_AUTOFREE(char *) display = NULL;
/* @managed can be read from the xml document - it is always an
* attribute of the toplevel element, no matter what type of
@@ -7892,18 +7810,18 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown host device source address type
'%s'"),
type);
- goto cleanup;
+ return -1;
}
} else {
virReportError(VIR_ERR_XML_ERROR,
"%s", _("missing source address type"));
- goto cleanup;
+ return -1;
}
if (!(sourcenode = virXPathNode("./source", ctxt))) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("Missing <source> element in hostdev device"));
- goto cleanup;
+ return -1;
}
if (def->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB &&
@@ -7911,20 +7829,20 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("Setting startupPolicy is only allowed for USB"
" devices"));
- goto cleanup;
+ return -1;
}
if (sgio) {
if (def->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("sgio is only supported for scsi host device"));
- goto cleanup;
+ return -1;
}
if ((scsisrc->sgio = virDomainDeviceSGIOTypeFromString(sgio)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown sgio mode '%s'"), sgio);
- goto cleanup;
+ return -1;
}
}
@@ -7932,14 +7850,14 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
if (def->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("rawio is only supported for scsi host device"));
- goto cleanup;
+ return -1;
}
if ((scsisrc->rawio = virTristateBoolTypeFromString(rawio)) <= 0) {
virReportError(VIR_ERR_XML_ERROR,
_("unknown hostdev rawio setting '%s'"),
rawio);
- goto cleanup;
+ return -1;
}
}
@@ -7948,21 +7866,21 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
virReportError(VIR_ERR_XML_ERROR, "%s",
_("'model' attribute in <hostdev> is only
supported "
"when type='mdev'"));
- goto cleanup;
+ return -1;
}
} else {
if (!model) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("Missing 'model' attribute in mediated
device's "
"<hostdev> element"));
- goto cleanup;
+ return -1;
}
if ((mdevsrc->model = virMediatedDeviceModelTypeFromString(model)) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("unknown hostdev model '%s'"),
model);
- goto cleanup;
+ return -1;
}
if (display &&
@@ -7971,14 +7889,14 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
_("unknown value '%s' for <hostdev>
attribute "
"'display'"),
display);
- goto cleanup;
+ return -1;
}
}
switch (def->source.subsys.type) {
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
if (virDomainHostdevSubsysPCIDefParseXML(sourcenode, def, flags) < 0)
- goto cleanup;
+ return -1;
backend = VIR_DOMAIN_HOSTDEV_PCI_BACKEND_DEFAULT;
if ((backendStr = virXPathString("string(./driver/@name)", ctxt))
&&
@@ -7987,7 +7905,7 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Unknown PCI device <driver name='%s'/>
"
"has been specified"), backendStr);
- goto cleanup;
+ return -1;
}
pcisrc->backend = backend;
@@ -7995,56 +7913,50 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB:
if (virDomainHostdevSubsysUSBDefParseXML(sourcenode, def) < 0)
- goto cleanup;
+ return -1;
break;
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI:
if (virDomainHostdevSubsysSCSIDefParseXML(sourcenode, scsisrc, ctxt) < 0)
- goto cleanup;
+ return -1;
break;
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST:
if (virDomainHostdevSubsysSCSIVHostDefParseXML(sourcenode, def) < 0)
- goto cleanup;
+ return -1;
break;
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
if (virDomainHostdevSubsysMediatedDevDefParseXML(def, ctxt) < 0)
- goto cleanup;
+ return -1;
break;
default:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("address type='%s' not supported in hostdev
interfaces"),
virDomainHostdevSubsysTypeToString(def->source.subsys.type));
- goto cleanup;
+ return -1;
}
- ret = 0;
- cleanup:
- VIR_FREE(managed);
- VIR_FREE(sgio);
- VIR_FREE(rawio);
- VIR_FREE(backendStr);
- VIR_FREE(model);
- VIR_FREE(display);
- return ret;
+ return 0;
}
static virNetDevIPAddrPtr
virDomainNetIPParseXML(xmlNodePtr node)
{
/* Parse the prefix in every case */
- virNetDevIPAddrPtr ip = NULL, ret = NULL;
- char *prefixStr = NULL;
+ virNetDevIPAddrPtr ret = NULL;
unsigned int prefixValue = 0;
- char *familyStr = NULL;
int family = AF_UNSPEC;
- char *address = NULL, *peer = NULL;
+ VIR_AUTOFREE(virNetDevIPAddrPtr) ip = NULL;
+ VIR_AUTOFREE(char *) prefixStr = NULL;
+ VIR_AUTOFREE(char *) familyStr = NULL;
+ VIR_AUTOFREE(char *) address = NULL;
+ VIR_AUTOFREE(char *) peer = NULL;
if (!(address = virXMLPropString(node, "address"))) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("Missing required address in <ip>"));
- goto cleanup;
+ return NULL;
}
familyStr = virXMLPropString(node, "family");
@@ -8056,13 +7968,13 @@ virDomainNetIPParseXML(xmlNodePtr node)
family = virSocketAddrNumericFamily(address);
if (VIR_ALLOC(ip) < 0)
- goto cleanup;
+ return NULL;
if (virSocketAddrParse(&ip->address, address, family) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("Invalid address '%s' in <ip>"),
address);
- goto cleanup;
+ return NULL;
}
prefixStr = virXMLPropString(node, "prefix");
@@ -8073,7 +7985,7 @@ virDomainNetIPParseXML(xmlNodePtr node)
virReportError(VIR_ERR_XML_ERROR,
_("Invalid prefix value '%s' in <ip>"),
prefixStr);
- goto cleanup;
+ return NULL;
}
ip->prefix = prefixValue;
@@ -8081,17 +7993,10 @@ virDomainNetIPParseXML(xmlNodePtr node)
virSocketAddrParse(&ip->peer, peer, family) < 0) {
virReportError(VIR_ERR_INVALID_ARG,
_("Invalid peer '%s' in <ip>"), peer);
- goto cleanup;
+ return NULL;
}
VIR_STEAL_PTR(ret, ip);
-
- cleanup:
- VIR_FREE(prefixStr);
- VIR_FREE(familyStr);
- VIR_FREE(address);
- VIR_FREE(peer);
- VIR_FREE(ip);
return ret;
}
@@ -8106,12 +8011,12 @@ virDomainNetIPInfoParseXML(const char *source,
xmlXPathContextPtr ctxt,
virNetDevIPInfoPtr def)
{
- xmlNodePtr *nodes = NULL;
- virNetDevIPAddrPtr ip = NULL;
virNetDevIPRoutePtr route = NULL;
int nnodes;
int ret = -1;
size_t i;
+ VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
+ VIR_AUTOFREE(virNetDevIPAddrPtr) ip = NULL;
if ((nnodes = virXPathNodeSet("./ip", ctxt, &nodes)) < 0)
goto cleanup;
@@ -8136,9 +8041,7 @@ virDomainNetIPInfoParseXML(const char *source,
cleanup:
if (ret < 0)
virNetDevIPInfoClear(def);
- VIR_FREE(ip);
virNetDevIPRouteFree(route);
- VIR_FREE(nodes);
return ret;
}
@@ -8149,8 +8052,8 @@ virDomainNetDefCoalesceParseXML(xmlNodePtr node,
{
virNetDevCoalescePtr ret = NULL;
xmlNodePtr save = NULL;
- char *str = NULL;
unsigned long long tmp = 0;
+ VIR_AUTOFREE(char *) str = NULL;
save = ctxt->node;
ctxt->node = node;
@@ -8166,10 +8069,8 @@ virDomainNetDefCoalesceParseXML(xmlNodePtr node,
virReportError(VIR_ERR_XML_DETAIL,
_("cannot parse value '%s' for coalesce
parameter"),
str);
- VIR_FREE(str);
goto error;
}
- VIR_FREE(str);
if (tmp > UINT32_MAX) {
virReportError(VIR_ERR_OVERFLOW,
@@ -8181,7 +8082,6 @@ virDomainNetDefCoalesceParseXML(xmlNodePtr node,
ret->rx_max_coalesced_frames = tmp;
cleanup:
- VIR_FREE(str);
ctxt->node = save;
return ret;
@@ -8556,8 +8456,9 @@ virSecurityLabelDefsParseXML(virDomainDefPtr def,
{
size_t i = 0, j;
int n;
- xmlNodePtr *list = NULL, saved_node;
+ xmlNodePtr saved_node;
virCapsHostPtr host = &caps->host;
+ VIR_AUTOFREE(xmlNodePtr *) list = NULL;
/* Check args and save context */
if (def == NULL || ctxt == NULL)
@@ -8595,7 +8496,6 @@ virSecurityLabelDefsParseXML(virDomainDefPtr def,
}
def->nseclabels = n;
ctxt->node = saved_node;
- VIR_FREE(list);
/* libvirt versions prior to 0.10.0 support just a single seclabel element
* in guest's XML and model attribute can be suppressed if type is none or
@@ -8650,7 +8550,6 @@ virSecurityLabelDefsParseXML(virDomainDefPtr def,
virSecurityLabelDefFree(def->seclabels[i - 1]);
VIR_FREE(def->seclabels);
def->nseclabels = 0;
- VIR_FREE(list);
return -1;
}
@@ -8665,8 +8564,8 @@ virSecurityDeviceLabelDefParseXML(virSecurityDeviceLabelDefPtr
**seclabels_rtn,
size_t nseclabels = 0;
int n;
size_t i, j;
- xmlNodePtr *list = NULL;
char *model, *relabel, *label, *labelskip;
+ VIR_AUTOFREE(xmlNodePtr *) list = NULL;
if ((n = virXPathNodeSet("./seclabel", ctxt, &list)) < 0)
goto error;
@@ -8734,7 +8633,6 @@ virSecurityDeviceLabelDefParseXML(virSecurityDeviceLabelDefPtr
**seclabels_rtn,
goto error;
}
}
- VIR_FREE(list);
*nseclabels_rtn = nseclabels;
*seclabels_rtn = seclabels;
@@ -8745,7 +8643,6 @@ virSecurityDeviceLabelDefParseXML(virSecurityDeviceLabelDefPtr
**seclabels_rtn,
for (i = 0; i < nseclabels; i++)
virSecurityDeviceLabelDefFree(seclabels[i]);
VIR_FREE(seclabels);
- VIR_FREE(list);
return -1;
}
@@ -8788,10 +8685,10 @@ virDomainLeaseDefParseXML(xmlNodePtr node)
{
virDomainLeaseDefPtr def;
xmlNodePtr cur;
- char *lockspace = NULL;
- char *key = NULL;
- char *path = NULL;
- char *offset = NULL;
+ VIR_AUTOFREE(char *) lockspace = NULL;
+ VIR_AUTOFREE(char *) key = NULL;
+ VIR_AUTOFREE(char *) path = NULL;
+ VIR_AUTOFREE(char *) offset = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -8836,11 +8733,6 @@ virDomainLeaseDefParseXML(xmlNodePtr node)
VIR_STEAL_PTR(def->path, path);
cleanup:
- VIR_FREE(lockspace);
- VIR_FREE(key);
- VIR_FREE(path);
- VIR_FREE(offset);
-
return def;
error:
@@ -8853,9 +8745,9 @@ static int
virDomainDiskSourcePoolDefParse(xmlNodePtr node,
virStorageSourcePoolDefPtr *srcpool)
{
- char *mode = NULL;
virStorageSourcePoolDefPtr source;
int ret = -1;
+ VIR_AUTOFREE(char *) mode = NULL;
*srcpool = NULL;
@@ -8892,7 +8784,6 @@ virDomainDiskSourcePoolDefParse(xmlNodePtr node,
cleanup:
virStorageSourcePoolDefFree(source);
- VIR_FREE(mode);
return ret;
}
@@ -8903,36 +8794,35 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
virStorageSourcePtr src,
unsigned int flags)
{
- char *protocol = NULL;
- char *haveTLS = NULL;
- char *tlsCfg = NULL;
int tlsCfgVal;
- int ret = -1;
+ VIR_AUTOFREE(char *) protocol = NULL;
+ VIR_AUTOFREE(char *) haveTLS = NULL;
+ VIR_AUTOFREE(char *) tlsCfg = NULL;
if (!(protocol = virXMLPropString(node, "protocol"))) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("missing network source protocol type"));
- goto cleanup;
+ return -1;
}
if ((src->protocol = virStorageNetProtocolTypeFromString(protocol)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown protocol type '%s'"), protocol);
- goto cleanup;
+ return -1;
}
if (!(src->path = virXMLPropString(node, "name")) &&
src->protocol != VIR_STORAGE_NET_PROTOCOL_NBD) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("missing name for disk source"));
- goto cleanup;
+ return -1;
}
if ((haveTLS = virXMLPropString(node, "tls")) &&
(src->haveTLS = virTristateBoolTypeFromString(haveTLS)) <= 0) {
virReportError(VIR_ERR_XML_ERROR,
_("unknown disk source 'tls' setting '%s'"),
haveTLS);
- goto cleanup;
+ return -1;
}
if ((flags & VIR_DOMAIN_DEF_PARSE_STATUS) &&
@@ -8941,7 +8831,7 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
virReportError(VIR_ERR_XML_ERROR,
_("Invalid tlsFromConfig value: %s"),
tlsCfg);
- goto cleanup;
+ return -1;
}
src->tlsFromConfig = !!tlsCfgVal;
}
@@ -8957,13 +8847,13 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
virReportError(VIR_ERR_XML_ERROR,
_("can't split path '%s' into pool name and
image "
"name"), src->path);
- goto cleanup;
+ return -1;
}
src->volume = src->path;
if (VIR_STRDUP(src->path, tmp + 1) < 0)
- goto cleanup;
+ return -1;
tmp[0] = '\0';
}
@@ -8975,19 +8865,13 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
src->configFile = virXPathString("string(./config/@file)", ctxt);
if (virDomainStorageNetworkParseHosts(node, &src->hosts, &src->nhosts)
< 0)
- goto cleanup;
+ return -1;
virStorageSourceNetworkAssignDefaultPorts(src);
virStorageSourceInitiatorParseXML(ctxt, &src->initiator);
- ret = 0;
-
- cleanup:
- VIR_FREE(tlsCfg);
- VIR_FREE(haveTLS);
- VIR_FREE(protocol);
- return ret;
+ return 0;
}
@@ -9141,11 +9025,11 @@ virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt,
{
xmlNodePtr save_ctxt = ctxt->node;
xmlNodePtr source;
- char *type = NULL;
- char *format = NULL;
- char *idx = NULL;
int ret = -1;
VIR_AUTOUNREF(virStorageSourcePtr) backingStore = NULL;
+ VIR_AUTOFREE(char *) type = NULL;
+ VIR_AUTOFREE(char *) format = NULL;
+ VIR_AUTOFREE(char *) idx = NULL;
if (!(ctxt->node = virXPathNode("./backingStore", ctxt))) {
ret = 0;
@@ -9206,9 +9090,6 @@ virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt,
ret = 0;
cleanup:
- VIR_FREE(type);
- VIR_FREE(format);
- VIR_FREE(idx);
ctxt->node = save_ctxt;
return ret;
}
@@ -9304,20 +9185,19 @@ virDomainDiskDefMirrorParse(virDomainDiskDefPtr def,
virDomainXMLOptionPtr xmlopt)
{
xmlNodePtr mirrorNode;
- char *mirrorFormat = NULL;
- char *mirrorType = NULL;
- char *ready = NULL;
- char *blockJob = NULL;
- int ret = -1;
+ VIR_AUTOFREE(char *) mirrorFormat = NULL;
+ VIR_AUTOFREE(char *) mirrorType = NULL;
+ VIR_AUTOFREE(char *) ready = NULL;
+ VIR_AUTOFREE(char *) blockJob = NULL;
if (!(def->mirror = virStorageSourceNew()))
- goto cleanup;
+ return -1;
if ((blockJob = virXMLPropString(cur, "job"))) {
if ((def->mirrorJob = virDomainBlockJobTypeFromString(blockJob)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown mirror job type '%s'"),
blockJob);
- goto cleanup;
+ return -1;
}
} else {
def->mirrorJob = VIR_DOMAIN_BLOCK_JOB_TYPE_COPY;
@@ -9328,7 +9208,7 @@ virDomainDiskDefMirrorParse(virDomainDiskDefPtr def,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown mirror backing store type
'%s'"),
mirrorType);
- goto cleanup;
+ return -1;
}
mirrorFormat = virXPathString("string(./mirror/format/@type)", ctxt);
@@ -9336,12 +9216,12 @@ virDomainDiskDefMirrorParse(virDomainDiskDefPtr def,
if (!(mirrorNode = virXPathNode("./mirror/source", ctxt))) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("mirror requires source element"));
- goto cleanup;
+ return -1;
}
if (virDomainDiskSourceParse(mirrorNode, ctxt, def->mirror,
flags, xmlopt) < 0)
- goto cleanup;
+ return -1;
} else {
/* For back-compat reasons, we handle a file name
* encoded as attributes, even though we prefer
@@ -9351,13 +9231,13 @@ virDomainDiskDefMirrorParse(virDomainDiskDefPtr def,
if (!def->mirror->path) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("mirror requires file name"));
- goto cleanup;
+ return -1;
}
if (def->mirrorJob != VIR_DOMAIN_BLOCK_JOB_TYPE_COPY) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("mirror without type only supported "
"by copy job"));
- goto cleanup;
+ return -1;
}
mirrorFormat = virXMLPropString(cur, "format");
}
@@ -9367,7 +9247,7 @@ virDomainDiskDefMirrorParse(virDomainDiskDefPtr def,
if (def->mirror->format <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown mirror format value '%s'"),
mirrorFormat);
- goto cleanup;
+ return -1;
}
}
@@ -9375,17 +9255,10 @@ virDomainDiskDefMirrorParse(virDomainDiskDefPtr def,
(def->mirrorState = virDomainDiskMirrorStateTypeFromString(ready)) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("unknown mirror ready state %s"), ready);
- goto cleanup;
+ return -1;
}
- ret = 0;
-
- cleanup:
- VIR_FREE(ready);
- VIR_FREE(blockJob);
- VIR_FREE(mirrorType);
- VIR_FREE(mirrorFormat);
- return ret;
+ return 0;
}
@@ -9393,13 +9266,13 @@ static int
virDomainDiskDefGeometryParse(virDomainDiskDefPtr def,
xmlNodePtr cur)
{
- char *tmp;
+ VIR_AUTOFREE(char *) tmp = NULL;
if ((tmp = virXMLPropString(cur, "cyls"))) {
if (virStrToLong_ui(tmp, NULL, 10, &def->geometry.cylinders) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("invalid geometry settings (cyls)"));
- goto error;
+ return -1;
}
VIR_FREE(tmp);
}
@@ -9408,7 +9281,7 @@ virDomainDiskDefGeometryParse(virDomainDiskDefPtr def,
if (virStrToLong_ui(tmp, NULL, 10, &def->geometry.heads) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("invalid geometry settings (heads)"));
- goto error;
+ return -1;
}
VIR_FREE(tmp);
}
@@ -9417,7 +9290,7 @@ virDomainDiskDefGeometryParse(virDomainDiskDefPtr def,
if (virStrToLong_ui(tmp, NULL, 10, &def->geometry.sectors) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("invalid geometry settings (secs)"));
- goto error;
+ return -1;
}
VIR_FREE(tmp);
}
@@ -9428,16 +9301,11 @@ virDomainDiskDefGeometryParse(virDomainDiskDefPtr def,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("invalid translation value '%s'"),
tmp);
- goto error;
+ return -1;
}
- VIR_FREE(tmp);
}
return 0;
-
- error:
- VIR_FREE(tmp);
- return -1;
}
@@ -9581,8 +9449,7 @@ static int
virDomainDiskDefDriverParseXML(virDomainDiskDefPtr def,
xmlNodePtr cur)
{
- char *tmp = NULL;
- int ret = -1;
+ VIR_AUTOFREE(char *) tmp = NULL;
def->driverName = virXMLPropString(cur, "name");
@@ -9590,7 +9457,7 @@ virDomainDiskDefDriverParseXML(virDomainDiskDefPtr def,
(def->cachemode = virDomainDiskCacheTypeFromString(tmp)) < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown disk cache mode '%s'"), tmp);
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
@@ -9598,7 +9465,7 @@ virDomainDiskDefDriverParseXML(virDomainDiskDefPtr def,
(def->error_policy = virDomainDiskErrorPolicyTypeFromString(tmp)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown disk error policy '%s'"), tmp);
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
@@ -9607,7 +9474,7 @@ virDomainDiskDefDriverParseXML(virDomainDiskDefPtr def,
(def->rerror_policy == VIR_DOMAIN_DISK_ERROR_POLICY_ENOSPACE))) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown disk read error policy '%s'"), tmp);
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
@@ -9615,7 +9482,7 @@ virDomainDiskDefDriverParseXML(virDomainDiskDefPtr def,
(def->iomode = virDomainDiskIoTypeFromString(tmp)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown disk io mode '%s'"), tmp);
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
@@ -9623,7 +9490,7 @@ virDomainDiskDefDriverParseXML(virDomainDiskDefPtr def,
(def->ioeventfd = virTristateSwitchTypeFromString(tmp)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown disk ioeventfd mode '%s'"), tmp);
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
@@ -9631,7 +9498,7 @@ virDomainDiskDefDriverParseXML(virDomainDiskDefPtr def,
(def->event_idx = virTristateSwitchTypeFromString(tmp)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown disk event_idx mode '%s'"), tmp);
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
@@ -9639,7 +9506,7 @@ virDomainDiskDefDriverParseXML(virDomainDiskDefPtr def,
(def->copy_on_read = virTristateSwitchTypeFromString(tmp)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown disk copy_on_read mode '%s'"), tmp);
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
@@ -9647,7 +9514,7 @@ virDomainDiskDefDriverParseXML(virDomainDiskDefPtr def,
(def->discard = virDomainDiskDiscardTypeFromString(tmp)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown disk discard mode '%s'"), tmp);
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
@@ -9657,7 +9524,7 @@ virDomainDiskDefDriverParseXML(virDomainDiskDefPtr def,
virReportError(VIR_ERR_XML_ERROR,
_("Invalid iothread attribute in disk driver element:
%s"),
tmp);
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
@@ -9669,7 +9536,7 @@ virDomainDiskDefDriverParseXML(virDomainDiskDefPtr def,
if ((def->src->format = virStorageFileFormatTypeFromString(tmp)) <=
0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown driver format value '%s'"),
tmp);
- goto cleanup;
+ return -1;
}
}
@@ -9680,7 +9547,7 @@ virDomainDiskDefDriverParseXML(virDomainDiskDefPtr def,
(def->detect_zeroes = virDomainDiskDetectZeroesTypeFromString(tmp)) <= 0)
{
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown driver detect_zeroes value '%s'"),
tmp);
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
@@ -9689,16 +9556,10 @@ virDomainDiskDefDriverParseXML(virDomainDiskDefPtr def,
virReportError(VIR_ERR_XML_ERROR,
_("'queues' attribute must be positive number:
%s"),
tmp);
- goto cleanup;
+ return -1;
}
- VIR_FREE(tmp);
-
- ret = 0;
- cleanup:
- VIR_FREE(tmp);
-
- return ret;
+ return 0;
}
@@ -9746,26 +9607,26 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
virDomainDiskDefPtr def;
xmlNodePtr cur;
xmlNodePtr save_ctxt = ctxt->node;
- char *tmp = NULL;
- char *snapshot = NULL;
- char *rawio = NULL;
- char *sgio = NULL;
bool source = false;
- char *target = NULL;
- char *bus = NULL;
- char *devaddr = NULL;
virStorageEncryptionPtr encryption = NULL;
- char *serial = NULL;
- char *startupPolicy = NULL;
- char *tray = NULL;
- char *removable = NULL;
- char *logical_block_size = NULL;
- char *physical_block_size = NULL;
- char *wwn = NULL;
- char *vendor = NULL;
- char *product = NULL;
- char *domain_name = NULL;
VIR_AUTOPTR(virStorageAuthDef) authdef = NULL;
+ VIR_AUTOFREE(char *) tmp = NULL;
+ VIR_AUTOFREE(char *) snapshot = NULL;
+ VIR_AUTOFREE(char *) rawio = NULL;
+ VIR_AUTOFREE(char *) sgio = NULL;
+ VIR_AUTOFREE(char *) target = NULL;
+ VIR_AUTOFREE(char *) bus = NULL;
+ VIR_AUTOFREE(char *) devaddr = NULL;
+ VIR_AUTOFREE(char *) serial = NULL;
+ VIR_AUTOFREE(char *) startupPolicy = NULL;
+ VIR_AUTOFREE(char *) tray = NULL;
+ VIR_AUTOFREE(char *) removable = NULL;
+ VIR_AUTOFREE(char *) logical_block_size = NULL;
+ VIR_AUTOFREE(char *) physical_block_size = NULL;
+ VIR_AUTOFREE(char *) wwn = NULL;
+ VIR_AUTOFREE(char *) vendor = NULL;
+ VIR_AUTOFREE(char *) product = NULL;
+ VIR_AUTOFREE(char *) domain_name = NULL;
if (!(def = virDomainDiskDefNew(xmlopt)))
return NULL;
@@ -10153,25 +10014,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
goto error;
cleanup:
- VIR_FREE(tmp);
- VIR_FREE(bus);
- VIR_FREE(snapshot);
- VIR_FREE(rawio);
- VIR_FREE(sgio);
- VIR_FREE(target);
- VIR_FREE(tray);
- VIR_FREE(removable);
- VIR_FREE(devaddr);
- VIR_FREE(serial);
virStorageEncryptionFree(encryption);
- VIR_FREE(startupPolicy);
- VIR_FREE(logical_block_size);
- VIR_FREE(physical_block_size);
- VIR_FREE(wwn);
- VIR_FREE(vendor);
- VIR_FREE(product);
- VIR_FREE(domain_name);
-
ctxt->node = save_ctxt;
return def;
@@ -10212,26 +10055,23 @@ virDomainParseScaledValue(const char *xpath,
unsigned long long max,
bool required)
{
- char *xpath_full = NULL;
- char *unit = NULL;
- char *bytes_str = NULL;
- int ret = -1;
unsigned long long bytes;
+ VIR_AUTOFREE(char *) xpath_full = NULL;
+ VIR_AUTOFREE(char *) unit = NULL;
+ VIR_AUTOFREE(char *) bytes_str = NULL;
*val = 0;
if (virAsprintf(&xpath_full, "string(%s)", xpath) < 0)
- goto cleanup;
+ return -1;
bytes_str = virXPathString(xpath_full, ctxt);
if (!bytes_str) {
- if (!required) {
- ret = 0;
- } else {
- virReportError(VIR_ERR_XML_ERROR,
- _("missing element or attribute '%s'"),
- xpath);
- }
- goto cleanup;
+ if (!required)
+ return 0;
+ virReportError(VIR_ERR_XML_ERROR,
+ _("missing element or attribute '%s'"),
+ xpath);
+ return -1;
}
VIR_FREE(xpath_full);
@@ -10239,26 +10079,21 @@ virDomainParseScaledValue(const char *xpath,
virReportError(VIR_ERR_XML_ERROR,
_("Invalid value '%s' for element or attribute
'%s'"),
bytes_str, xpath);
- goto cleanup;
+ return -1;
}
if ((units_xpath &&
virAsprintf(&xpath_full, "string(%s)", units_xpath) < 0) ||
(!units_xpath &&
virAsprintf(&xpath_full, "string(%s/@unit)", xpath) < 0))
- goto cleanup;
+ return -1;
unit = virXPathString(xpath_full, ctxt);
if (virScaleInteger(&bytes, unit, scale, max) < 0)
- goto cleanup;
+ return -1;
*val = bytes;
- ret = 1;
- cleanup:
- VIR_FREE(bytes_str);
- VIR_FREE(xpath_full);
- VIR_FREE(unit);
- return ret;
+ return 1;
}
@@ -10458,27 +10293,27 @@ virDomainControllerDefParseXML(virDomainXMLOptionPtr xmlopt,
virDomainControllerDefPtr def = NULL;
int type = 0;
xmlNodePtr cur = NULL;
- char *typeStr = NULL;
- char *idx = NULL;
- char *model = NULL;
- char *queues = NULL;
- char *cmd_per_lun = NULL;
- char *max_sectors = NULL;
bool processedModel = false;
- char *modelName = NULL;
bool processedTarget = false;
- char *chassisNr = NULL;
- char *chassis = NULL;
- char *port = NULL;
- char *busNr = NULL;
- char *targetIndex = NULL;
int numaNode = -1;
- char *ioeventfd = NULL;
- char *portsStr = NULL;
int ports = -1;
- char *iothread = NULL;
xmlNodePtr saved = ctxt->node;
int rc;
+ VIR_AUTOFREE(char *) typeStr = NULL;
+ VIR_AUTOFREE(char *) idx = NULL;
+ VIR_AUTOFREE(char *) model = NULL;
+ VIR_AUTOFREE(char *) queues = NULL;
+ VIR_AUTOFREE(char *) cmd_per_lun = NULL;
+ VIR_AUTOFREE(char *) max_sectors = NULL;
+ VIR_AUTOFREE(char *) modelName = NULL;
+ VIR_AUTOFREE(char *) chassisNr = NULL;
+ VIR_AUTOFREE(char *) chassis = NULL;
+ VIR_AUTOFREE(char *) port = NULL;
+ VIR_AUTOFREE(char *) busNr = NULL;
+ VIR_AUTOFREE(char *) targetIndex = NULL;
+ VIR_AUTOFREE(char *) ioeventfd = NULL;
+ VIR_AUTOFREE(char *) portsStr = NULL;
+ VIR_AUTOFREE(char *) iothread = NULL;
ctxt->node = node;
@@ -10617,20 +10452,18 @@ virDomainControllerDefParseXML(virDomainXMLOptionPtr xmlopt,
switch (def->type) {
case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL: {
- def->opts.vioserial.ports = ports;
+ VIR_AUTOFREE(char *) vectors = virXMLPropString(node, "vectors");
- char *vectors = virXMLPropString(node, "vectors");
+ def->opts.vioserial.ports = ports;
if (vectors) {
int r = virStrToLong_i(vectors, NULL, 10,
&def->opts.vioserial.vectors);
if (r != 0 || def->opts.vioserial.vectors < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Invalid vectors: %s"), vectors);
- VIR_FREE(vectors);
goto error;
}
}
- VIR_FREE(vectors);
break;
}
case VIR_DOMAIN_CONTROLLER_TYPE_USB: {
@@ -10793,22 +10626,6 @@ virDomainControllerDefParseXML(virDomainXMLOptionPtr xmlopt,
cleanup:
ctxt->node = saved;
- VIR_FREE(typeStr);
- VIR_FREE(idx);
- VIR_FREE(model);
- VIR_FREE(queues);
- VIR_FREE(cmd_per_lun);
- VIR_FREE(max_sectors);
- VIR_FREE(modelName);
- VIR_FREE(chassisNr);
- VIR_FREE(chassis);
- VIR_FREE(port);
- VIR_FREE(busNr);
- VIR_FREE(targetIndex);
- VIR_FREE(ioeventfd);
- VIR_FREE(portsStr);
- VIR_FREE(iothread);
-
return def;
error:
@@ -10837,15 +10654,15 @@ virDomainFSDefParseXML(virDomainXMLOptionPtr xmlopt,
{
virDomainFSDefPtr def;
xmlNodePtr cur, save_node = ctxt->node;
- char *type = NULL;
- char *fsdriver = NULL;
- char *source = NULL;
- char *target = NULL;
- char *format = NULL;
- char *accessmode = NULL;
- char *wrpolicy = NULL;
- char *usage = NULL;
- char *units = NULL;
+ VIR_AUTOFREE(char *) type = NULL;
+ VIR_AUTOFREE(char *) fsdriver = NULL;
+ VIR_AUTOFREE(char *) source = NULL;
+ VIR_AUTOFREE(char *) target = NULL;
+ VIR_AUTOFREE(char *) format = NULL;
+ VIR_AUTOFREE(char *) accessmode = NULL;
+ VIR_AUTOFREE(char *) wrpolicy = NULL;
+ VIR_AUTOFREE(char *) usage = NULL;
+ VIR_AUTOFREE(char *) units = NULL;
ctxt->node = node;
@@ -10991,16 +10808,6 @@ virDomainFSDefParseXML(virDomainXMLOptionPtr xmlopt,
cleanup:
ctxt->node = save_node;
- VIR_FREE(type);
- VIR_FREE(fsdriver);
- VIR_FREE(target);
- VIR_FREE(source);
- VIR_FREE(accessmode);
- VIR_FREE(wrpolicy);
- VIR_FREE(usage);
- VIR_FREE(units);
- VIR_FREE(format);
-
return def;
error:
@@ -11022,11 +10829,11 @@ virDomainActualNetDefParseXML(xmlNodePtr node,
xmlNodePtr bandwidth_node = NULL;
xmlNodePtr vlanNode;
xmlNodePtr virtPortNode;
- char *type = NULL;
- char *mode = NULL;
- char *addrtype = NULL;
- char *trustGuestRxFilters = NULL;
- char *macTableManager = NULL;
+ VIR_AUTOFREE(char *) type = NULL;
+ VIR_AUTOFREE(char *) mode = NULL;
+ VIR_AUTOFREE(char *) addrtype = NULL;
+ VIR_AUTOFREE(char *) trustGuestRxFilters = NULL;
+ VIR_AUTOFREE(char *) macTableManager = NULL;
if (VIR_ALLOC(actual) < 0)
return -1;
@@ -11125,16 +10932,16 @@ virDomainActualNetDefParseXML(xmlNodePtr node,
goto error;
}
} else if (actual->type == VIR_DOMAIN_NET_TYPE_NETWORK) {
- char *class_id = virXPathString("string(./class/@id)", ctxt);
+ VIR_AUTOFREE(char *) class_id = NULL;
+
+ class_id = virXPathString("string(./class/@id)", ctxt);
if (class_id &&
virStrToLong_ui(class_id, NULL, 10, &actual->class_id) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unable to parse class id '%s'"),
class_id);
- VIR_FREE(class_id);
goto error;
}
- VIR_FREE(class_id);
}
if (actual->type == VIR_DOMAIN_NET_TYPE_BRIDGE ||
actual->type == VIR_DOMAIN_NET_TYPE_NETWORK) {
@@ -11176,11 +10983,6 @@ virDomainActualNetDefParseXML(xmlNodePtr node,
VIR_STEAL_PTR(*def, actual);
ret = 0;
error:
- VIR_FREE(type);
- VIR_FREE(mode);
- VIR_FREE(addrtype);
- VIR_FREE(trustGuestRxFilters);
- VIR_FREE(macTableManager);
virDomainActualNetDefFree(actual);
ctxt->node = save_ctxt;
@@ -11223,9 +11025,9 @@
virDomainChrSourceReconnectDefParseXML(virDomainChrSourceReconnectDefPtr def,
{
int ret = -1;
int tmpVal;
- char *tmp = NULL;
xmlNodePtr saveNode = ctxt->node;
xmlNodePtr cur;
+ VIR_AUTOFREE(char *) tmp = NULL;
ctxt->node = node;
@@ -11249,7 +11051,6 @@
virDomainChrSourceReconnectDefParseXML(virDomainChrSourceReconnectDefPtr def,
tmp);
goto cleanup;
}
- VIR_FREE(tmp);
} else {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("missing timeout for chardev with "
@@ -11262,7 +11063,6 @@
virDomainChrSourceReconnectDefParseXML(virDomainChrSourceReconnectDefPtr def,
ret = 0;
cleanup:
ctxt->node = saveNode;
- VIR_FREE(tmp);
return ret;
}
@@ -11282,46 +11082,46 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
virDomainHostdevDefPtr hostdev;
xmlNodePtr cur;
xmlNodePtr tmpNode;
- char *macaddr = NULL;
- char *type = NULL;
- char *network = NULL;
- char *portgroup = NULL;
- char *bridge = NULL;
- char *dev = NULL;
- char *ifname = NULL;
- char *ifname_guest = NULL;
- char *ifname_guest_actual = NULL;
- char *script = NULL;
- char *address = NULL;
- char *port = NULL;
- char *localaddr = NULL;
- char *localport = NULL;
- char *model = NULL;
- char *backend = NULL;
- char *txmode = NULL;
- char *ioeventfd = NULL;
- char *event_idx = NULL;
- char *queues = NULL;
- char *rx_queue_size = NULL;
- char *tx_queue_size = NULL;
- char *str = NULL;
- char *filter = NULL;
- char *internal = NULL;
- char *devaddr = NULL;
- char *mode = NULL;
- char *linkstate = NULL;
- char *addrtype = NULL;
- char *domain_name = NULL;
- char *vhostuser_mode = NULL;
- char *vhostuser_path = NULL;
- char *vhostuser_type = NULL;
- char *trustGuestRxFilters = NULL;
- char *vhost_path = NULL;
virHashTablePtr filterparams = NULL;
virDomainActualNetDefPtr actual = NULL;
xmlNodePtr oldnode = ctxt->node;
virDomainChrSourceReconnectDef reconnect = {0};
int rv, val;
+ VIR_AUTOFREE(char *) macaddr = NULL;
+ VIR_AUTOFREE(char *) type = NULL;
+ VIR_AUTOFREE(char *) network = NULL;
+ VIR_AUTOFREE(char *) portgroup = NULL;
+ VIR_AUTOFREE(char *) bridge = NULL;
+ VIR_AUTOFREE(char *) dev = NULL;
+ VIR_AUTOFREE(char *) ifname = NULL;
+ VIR_AUTOFREE(char *) ifname_guest = NULL;
+ VIR_AUTOFREE(char *) ifname_guest_actual = NULL;
+ VIR_AUTOFREE(char *) script = NULL;
+ VIR_AUTOFREE(char *) address = NULL;
+ VIR_AUTOFREE(char *) port = NULL;
+ VIR_AUTOFREE(char *) localaddr = NULL;
+ VIR_AUTOFREE(char *) localport = NULL;
+ VIR_AUTOFREE(char *) model = NULL;
+ VIR_AUTOFREE(char *) backend = NULL;
+ VIR_AUTOFREE(char *) txmode = NULL;
+ VIR_AUTOFREE(char *) ioeventfd = NULL;
+ VIR_AUTOFREE(char *) event_idx = NULL;
+ VIR_AUTOFREE(char *) queues = NULL;
+ VIR_AUTOFREE(char *) rx_queue_size = NULL;
+ VIR_AUTOFREE(char *) tx_queue_size = NULL;
+ VIR_AUTOFREE(char *) str = NULL;
+ VIR_AUTOFREE(char *) filter = NULL;
+ VIR_AUTOFREE(char *) internal = NULL;
+ VIR_AUTOFREE(char *) devaddr = NULL;
+ VIR_AUTOFREE(char *) mode = NULL;
+ VIR_AUTOFREE(char *) linkstate = NULL;
+ VIR_AUTOFREE(char *) addrtype = NULL;
+ VIR_AUTOFREE(char *) domain_name = NULL;
+ VIR_AUTOFREE(char *) vhostuser_mode = NULL;
+ VIR_AUTOFREE(char *) vhostuser_path = NULL;
+ VIR_AUTOFREE(char *) vhostuser_type = NULL;
+ VIR_AUTOFREE(char *) trustGuestRxFilters = NULL;
+ VIR_AUTOFREE(char *) vhost_path = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -12070,44 +11870,8 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
cleanup:
ctxt->node = oldnode;
- VIR_FREE(macaddr);
- VIR_FREE(network);
- VIR_FREE(portgroup);
- VIR_FREE(address);
- VIR_FREE(port);
- VIR_FREE(vhostuser_type);
- VIR_FREE(vhostuser_path);
- VIR_FREE(vhostuser_mode);
- VIR_FREE(ifname);
- VIR_FREE(ifname_guest);
- VIR_FREE(ifname_guest_actual);
- VIR_FREE(dev);
virDomainActualNetDefFree(actual);
- VIR_FREE(script);
- VIR_FREE(bridge);
- VIR_FREE(model);
- VIR_FREE(backend);
- VIR_FREE(txmode);
- VIR_FREE(ioeventfd);
- VIR_FREE(event_idx);
- VIR_FREE(queues);
- VIR_FREE(rx_queue_size);
- VIR_FREE(tx_queue_size);
- VIR_FREE(str);
- VIR_FREE(filter);
- VIR_FREE(type);
- VIR_FREE(internal);
- VIR_FREE(devaddr);
- VIR_FREE(mode);
- VIR_FREE(linkstate);
- VIR_FREE(addrtype);
- VIR_FREE(domain_name);
- VIR_FREE(trustGuestRxFilters);
- VIR_FREE(vhost_path);
- VIR_FREE(localaddr);
- VIR_FREE(localport);
virHashFree(filterparams);
-
return def;
error:
@@ -12204,14 +11968,13 @@ virDomainChrDefParseTargetXML(virDomainChrDefPtr def,
xmlNodePtr cur,
unsigned int flags)
{
- int ret = -1;
xmlNodePtr child;
unsigned int port;
- char *targetType = virXMLPropString(cur, "type");
- char *targetModel = NULL;
- char *addrStr = NULL;
- char *portStr = NULL;
- char *stateStr = NULL;
+ VIR_AUTOFREE(char *) targetType = virXMLPropString(cur, "type");
+ VIR_AUTOFREE(char *) targetModel = NULL;
+ VIR_AUTOFREE(char *) addrStr = NULL;
+ VIR_AUTOFREE(char *) portStr = NULL;
+ VIR_AUTOFREE(char *) stateStr = NULL;
if ((def->targetType =
virDomainChrTargetTypeFromString(def->deviceType,
@@ -12219,7 +11982,7 @@ virDomainChrDefParseTargetXML(virDomainChrDefPtr def,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown target type '%s' specified for character
device"),
targetType);
- goto error;
+ return -1;
}
child = cur->children;
@@ -12237,7 +12000,7 @@ virDomainChrDefParseTargetXML(virDomainChrDefPtr def,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown target model '%s' specified for character
device"),
targetModel);
- goto error;
+ return -1;
}
switch (def->deviceType) {
@@ -12248,37 +12011,37 @@ virDomainChrDefParseTargetXML(virDomainChrDefPtr def,
portStr = virXMLPropString(cur, "port");
if (VIR_ALLOC(def->target.addr) < 0)
- goto error;
+ return -1;
if (addrStr == NULL) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("guestfwd channel does not "
"define a target address"));
- goto error;
+ return -1;
}
if (virSocketAddrParse(def->target.addr, addrStr, AF_UNSPEC) < 0)
- goto error;
+ return -1;
if (def->target.addr->data.stor.ss_family != AF_INET) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
"%s", _("guestfwd channel only supports
"
"IPv4 addresses"));
- goto error;
+ return -1;
}
if (portStr == NULL) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("guestfwd channel does "
"not define a target port"));
- goto error;
+ return -1;
}
if (virStrToLong_ui(portStr, NULL, 10, &port) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("Invalid port number: %s"),
portStr);
- goto error;
+ return -1;
}
virSocketAddrSetPort(def->target.addr, port);
@@ -12297,7 +12060,7 @@ virDomainChrDefParseTargetXML(virDomainChrDefPtr def,
virReportError(VIR_ERR_XML_ERROR,
_("invalid channel state value
'%s'"),
stateStr);
- goto error;
+ return -1;
}
def->state = tmp;
@@ -12318,22 +12081,13 @@ virDomainChrDefParseTargetXML(virDomainChrDefPtr def,
virReportError(VIR_ERR_XML_ERROR,
_("Invalid port number: %s"),
portStr);
- goto error;
+ return -1;
}
def->target.port = port;
break;
}
-
- ret = 0;
- error:
- VIR_FREE(targetType);
- VIR_FREE(targetModel);
- VIR_FREE(addrStr);
- VIR_FREE(portStr);
- VIR_FREE(stateStr);
-
- return ret;
+ return 0;
}
typedef enum {
@@ -12352,20 +12106,17 @@ typedef enum {
static int
virDomainChrSourceDefParseMode(xmlNodePtr source)
{
- char *mode = virXMLPropString(source, "mode");
- int ret = -1;
+ VIR_AUTOFREE(char *) mode = virXMLPropString(source, "mode");
if (!mode || STREQ(mode, "connect")) {
- ret = VIR_DOMAIN_CHR_SOURCE_MODE_CONNECT;
+ return VIR_DOMAIN_CHR_SOURCE_MODE_CONNECT;
} else if (STREQ(mode, "bind")) {
- ret = VIR_DOMAIN_CHR_SOURCE_MODE_BIND;
- } else {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Unknown source mode '%s'"), mode);
+ return VIR_DOMAIN_CHR_SOURCE_MODE_BIND;
}
- VIR_FREE(mode);
- return ret;
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Unknown source mode '%s'"), mode);
+ return -1;
}
@@ -12376,11 +12127,11 @@ virDomainChrSourceDefParseTCP(virDomainChrSourceDefPtr def,
unsigned int flags)
{
int mode;
- char *tmp = NULL;
int tmpVal;
+ VIR_AUTOFREE(char *) tmp = NULL;
if ((mode = virDomainChrSourceDefParseMode(source)) < 0)
- goto error;
+ return -1;
def->data.tcp.listen = mode == VIR_DOMAIN_CHR_SOURCE_MODE_BIND;
def->data.tcp.host = virXMLPropString(source, "host");
@@ -12391,7 +12142,7 @@ virDomainChrSourceDefParseTCP(virDomainChrSourceDefPtr def,
virReportError(VIR_ERR_XML_ERROR,
_("unknown chardev 'tls' setting
'%s'"),
tmp);
- goto error;
+ return -1;
}
VIR_FREE(tmp);
}
@@ -12402,23 +12153,18 @@ virDomainChrSourceDefParseTCP(virDomainChrSourceDefPtr def,
virReportError(VIR_ERR_XML_ERROR,
_("Invalid tlsFromConfig value: %s"),
tmp);
- goto error;
+ return -1;
}
def->data.tcp.tlsFromConfig = !!tmpVal;
- VIR_FREE(tmp);
}
if (virDomainChrSourceReconnectDefParseXML(&def->data.tcp.reconnect,
source,
ctxt) < 0) {
- goto error;
+ return -1;
}
return 0;
-
- error:
- VIR_FREE(tmp);
- return -1;
}
@@ -12472,7 +12218,7 @@ static int
virDomainChrSourceDefParseFile(virDomainChrSourceDefPtr def,
xmlNodePtr source)
{
- char *append = NULL;
+ VIR_AUTOFREE(char *) append = NULL;
def->data.file.path = virXMLPropString(source, "path");
@@ -12481,11 +12227,9 @@ virDomainChrSourceDefParseFile(virDomainChrSourceDefPtr def,
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Invalid append attribute value '%s'"),
append);
- VIR_FREE(append);
return -1;
}
- VIR_FREE(append);
return 0;
}
@@ -12494,7 +12238,7 @@ static int
virDomainChrSourceDefParseProtocol(virDomainChrSourceDefPtr def,
xmlNodePtr protocol)
{
- char *prot = NULL;
+ VIR_AUTOFREE(char *)prot = NULL;
if (def->type != VIR_DOMAIN_CHR_TYPE_TCP)
return 0;
@@ -12504,11 +12248,9 @@ virDomainChrSourceDefParseProtocol(virDomainChrSourceDefPtr def,
virDomainChrTcpProtocolTypeFromString(prot)) < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Unknown protocol '%s'"), prot);
- VIR_FREE(prot);
return -1;
}
- VIR_FREE(prot);
return 0;
}
@@ -12517,7 +12259,7 @@ static int
virDomainChrSourceDefParseLog(virDomainChrSourceDefPtr def,
xmlNodePtr log)
{
- char *append = NULL;
+ VIR_AUTOFREE(char *)append = NULL;
def->logfile = virXMLPropString(log, "file");
@@ -12526,11 +12268,9 @@ virDomainChrSourceDefParseLog(virDomainChrSourceDefPtr def,
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Invalid append attribute value '%s'"),
append);
- VIR_FREE(append);
return -1;
}
- VIR_FREE(append);
return 0;
}
@@ -12778,10 +12518,10 @@ virDomainChrDefParseXML(virDomainXMLOptionPtr xmlopt,
unsigned int flags)
{
xmlNodePtr cur;
- char *type = NULL;
const char *nodeName;
virDomainChrDefPtr def;
bool seenTarget = false;
+ VIR_AUTOFREE(char *) type = NULL;
if (!(def = virDomainChrDefNew(xmlopt)))
return NULL;
@@ -12848,8 +12588,6 @@ virDomainChrDefParseXML(virDomainXMLOptionPtr xmlopt,
}
cleanup:
- VIR_FREE(type);
-
return def;
error:
@@ -12865,10 +12603,10 @@ virDomainSmartcardDefParseXML(virDomainXMLOptionPtr xmlopt,
unsigned int flags)
{
xmlNodePtr cur;
- char *mode = NULL;
- char *type = NULL;
virDomainSmartcardDefPtr def;
size_t i;
+ VIR_AUTOFREE(char *) mode = NULL;
+ VIR_AUTOFREE(char *) type = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -12980,9 +12718,6 @@ virDomainSmartcardDefParseXML(virDomainXMLOptionPtr xmlopt,
}
cleanup:
- VIR_FREE(mode);
- VIR_FREE(type);
-
return def;
error:
@@ -13013,15 +12748,15 @@ virDomainTPMDefParseXML(virDomainXMLOptionPtr xmlopt,
xmlXPathContextPtr ctxt,
unsigned int flags)
{
- char *type = NULL;
- char *path = NULL;
- char *model = NULL;
- char *backend = NULL;
- char *version = NULL;
virDomainTPMDefPtr def;
xmlNodePtr save = ctxt->node;
- xmlNodePtr *backends = NULL;
int nbackends;
+ VIR_AUTOFREE(char *) type = NULL;
+ VIR_AUTOFREE(char *) path = NULL;
+ VIR_AUTOFREE(char *) model = NULL;
+ VIR_AUTOFREE(char *) backend = NULL;
+ VIR_AUTOFREE(char *) version = NULL;
+ VIR_AUTOFREE(xmlNodePtr *) backends = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -13094,12 +12829,6 @@ virDomainTPMDefParseXML(virDomainXMLOptionPtr xmlopt,
goto error;
cleanup:
- VIR_FREE(type);
- VIR_FREE(path);
- VIR_FREE(model);
- VIR_FREE(backend);
- VIR_FREE(backends);
- VIR_FREE(version);
ctxt->node = save;
return def;
@@ -13115,7 +12844,7 @@ virDomainPanicDefParseXML(virDomainXMLOptionPtr xmlopt,
unsigned int flags)
{
virDomainPanicDefPtr panic;
- char *model = NULL;
+ VIR_AUTOFREE(char *) model = NULL;
if (VIR_ALLOC(panic) < 0)
return NULL;
@@ -13133,7 +12862,6 @@ virDomainPanicDefParseXML(virDomainXMLOptionPtr xmlopt,
}
cleanup:
- VIR_FREE(model);
return panic;
error:
@@ -13152,9 +12880,9 @@ virDomainInputDefParseXML(virDomainXMLOptionPtr xmlopt,
{
xmlNodePtr save = ctxt->node;
virDomainInputDefPtr def;
- char *evdev = NULL;
- char *type = NULL;
- char *bus = NULL;
+ VIR_AUTOFREE(char *) evdev = NULL;
+ VIR_AUTOFREE(char *) type = NULL;
+ VIR_AUTOFREE(char *) bus = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -13282,10 +13010,6 @@ virDomainInputDefParseXML(virDomainXMLOptionPtr xmlopt,
goto error;
cleanup:
- VIR_FREE(evdev);
- VIR_FREE(type);
- VIR_FREE(bus);
-
ctxt->node = save;
return def;
@@ -13303,7 +13027,7 @@ virDomainHubDefParseXML(virDomainXMLOptionPtr xmlopt,
unsigned int flags)
{
virDomainHubDefPtr def;
- char *type = NULL;
+ VIR_AUTOFREE(char *) type = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -13326,8 +13050,6 @@ virDomainHubDefParseXML(virDomainXMLOptionPtr xmlopt,
goto error;
cleanup:
- VIR_FREE(type);
-
return def;
error:
@@ -13342,16 +13064,15 @@ static virDomainTimerDefPtr
virDomainTimerDefParseXML(xmlNodePtr node,
xmlXPathContextPtr ctxt)
{
- char *name = NULL;
- char *present = NULL;
- char *tickpolicy = NULL;
- char *track = NULL;
- char *mode = NULL;
-
virDomainTimerDefPtr def;
xmlNodePtr oldnode = ctxt->node;
xmlNodePtr catchup;
int ret;
+ VIR_AUTOFREE(char *) name = NULL;
+ VIR_AUTOFREE(char *) present = NULL;
+ VIR_AUTOFREE(char *) tickpolicy = NULL;
+ VIR_AUTOFREE(char *) track = NULL;
+ VIR_AUTOFREE(char *) mode = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -13454,11 +13175,6 @@ virDomainTimerDefParseXML(xmlNodePtr node,
}
cleanup:
- VIR_FREE(name);
- VIR_FREE(present);
- VIR_FREE(tickpolicy);
- VIR_FREE(track);
- VIR_FREE(mode);
ctxt->node = oldnode;
return def;
@@ -13474,8 +13190,8 @@ virDomainGraphicsAuthDefParseXML(xmlNodePtr node,
virDomainGraphicsAuthDefPtr def,
int type)
{
- char *validTo = NULL;
- char *connected = virXMLPropString(node, "connected");
+ VIR_AUTOFREE(char *) validTo = NULL;
+ VIR_AUTOFREE(char *) connected = virXMLPropString(node, "connected");
def->passwd = virXMLPropString(node, "passwd");
@@ -13503,11 +13219,9 @@ virDomainGraphicsAuthDefParseXML(xmlNodePtr node,
virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot parse password validity time '%s',
expect YYYY-MM-DDTHH:MM:SS"),
validTo);
- VIR_FREE(validTo);
VIR_FREE(def->passwd);
return -1;
}
- VIR_FREE(validTo);
tm.tm_year -= 1900; /* Human epoch starts at 0 BC, not 1900BC */
tm.tm_mon--; /* Humans start months at 1, computers at 0 */
@@ -13522,10 +13236,8 @@ virDomainGraphicsAuthDefParseXML(xmlNodePtr node,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown connected value %s"),
connected);
- VIR_FREE(connected);
return -1;
}
- VIR_FREE(connected);
/* VNC supports connected='keep' only */
if (type == VIR_DOMAIN_GRAPHICS_TYPE_VNC &&
@@ -13563,16 +13275,16 @@ virDomainGraphicsListenDefParseXML(virDomainGraphicsListenDefPtr
def,
unsigned int flags)
{
int ret = -1;
- char *type = virXMLPropString(node, "type");
- char *address = virXMLPropString(node, "address");
- char *network = virXMLPropString(node, "network");
- char *socketPath = virXMLPropString(node, "socket");
- char *fromConfig = virXMLPropString(node, "fromConfig");
- char *autoGenerated = virXMLPropString(node, "autoGenerated");
- char *addressCompat = NULL;
- char *socketCompat = NULL;
const char *graphicsType = virDomainGraphicsTypeToString(graphics->type);
int tmp, typeVal;
+ VIR_AUTOFREE(char *) type = virXMLPropString(node, "type");
+ VIR_AUTOFREE(char *) address = virXMLPropString(node, "address");
+ VIR_AUTOFREE(char *) network = virXMLPropString(node, "network");
+ VIR_AUTOFREE(char *) socketPath = virXMLPropString(node, "socket");
+ VIR_AUTOFREE(char *) fromConfig = virXMLPropString(node, "fromConfig");
+ VIR_AUTOFREE(char *) autoGenerated = virXMLPropString(node,
"autoGenerated");
+ VIR_AUTOFREE(char *) addressCompat = NULL;
+ VIR_AUTOFREE(char *) socketCompat = NULL;
if (parent) {
addressCompat = virXMLPropString(parent, "listen");
@@ -13697,14 +13409,6 @@ virDomainGraphicsListenDefParseXML(virDomainGraphicsListenDefPtr
def,
error:
if (ret < 0)
virDomainGraphicsListenDefClear(def);
- VIR_FREE(type);
- VIR_FREE(address);
- VIR_FREE(network);
- VIR_FREE(socketPath);
- VIR_FREE(fromConfig);
- VIR_FREE(autoGenerated);
- VIR_FREE(addressCompat);
- VIR_FREE(socketCompat);
return ret;
}
@@ -13715,12 +13419,12 @@ virDomainGraphicsListensParseXML(virDomainGraphicsDefPtr def,
xmlXPathContextPtr ctxt,
unsigned int flags)
{
- xmlNodePtr *listenNodes = NULL;
xmlNodePtr save = ctxt->node;
virDomainGraphicsListenDef newListen = {0};
- char *socketPath = NULL;
int nListens;
int ret = -1;
+ VIR_AUTOFREE(xmlNodePtr *) listenNodes = NULL;
+ VIR_AUTOFREE(char *) socketPath = NULL;
ctxt->node = node;
@@ -13744,7 +13448,6 @@ virDomainGraphicsListensParseXML(virDomainGraphicsDefPtr def,
def->nListens++;
}
- VIR_FREE(listenNodes);
}
/* If no <listen/> element was found in XML for backward compatibility
@@ -13787,8 +13490,6 @@ virDomainGraphicsListensParseXML(virDomainGraphicsDefPtr def,
ret = 0;
cleanup:
virDomainGraphicsListenDefClear(&newListen);
- VIR_FREE(listenNodes);
- VIR_FREE(socketPath);
ctxt->node = save;
return ret;
}
@@ -13800,21 +13501,20 @@ virDomainGraphicsDefParseXMLVNC(virDomainGraphicsDefPtr def,
xmlXPathContextPtr ctxt,
unsigned int flags)
{
- char *port = virXMLPropString(node, "port");
- char *websocket = virXMLPropString(node, "websocket");
- char *websocketGenerated = virXMLPropString(node, "websocketGenerated");
- char *sharePolicy = virXMLPropString(node, "sharePolicy");
- char *autoport = virXMLPropString(node, "autoport");
- int ret = -1;
+ VIR_AUTOFREE(char *) port = virXMLPropString(node, "port");
+ VIR_AUTOFREE(char *) websocket = virXMLPropString(node, "websocket");
+ VIR_AUTOFREE(char *) websocketGenerated = virXMLPropString(node,
"websocketGenerated");
+ VIR_AUTOFREE(char *) sharePolicy = virXMLPropString(node, "sharePolicy");
+ VIR_AUTOFREE(char *) autoport = virXMLPropString(node, "autoport");
if (virDomainGraphicsListensParseXML(def, node, ctxt, flags) < 0)
- goto cleanup;
+ return -1;
if (port) {
if (virStrToLong_i(port, NULL, 10, &def->data.vnc.port) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot parse vnc port %s"), port);
- goto cleanup;
+ return -1;
}
/* Legacy compat syntax, used -1 for auto-port */
if (def->data.vnc.port == -1) {
@@ -13843,7 +13543,7 @@ virDomainGraphicsDefParseXMLVNC(virDomainGraphicsDefPtr def,
&def->data.vnc.websocket) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot parse vnc WebSocket port %s"),
websocket);
- goto cleanup;
+ return -1;
}
}
@@ -13858,7 +13558,7 @@ virDomainGraphicsDefParseXMLVNC(virDomainGraphicsDefPtr def,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown vnc display sharing policy
'%s'"),
sharePolicy);
- goto cleanup;
+ return -1;
} else {
def->data.vnc.sharePolicy = policy;
}
@@ -13868,16 +13568,9 @@ virDomainGraphicsDefParseXMLVNC(virDomainGraphicsDefPtr def,
if (virDomainGraphicsAuthDefParseXML(node, &def->data.vnc.auth,
def->type) < 0)
- goto cleanup;
+ return -1;
- ret = 0;
- cleanup:
- VIR_FREE(port);
- VIR_FREE(autoport);
- VIR_FREE(websocket);
- VIR_FREE(websocketGenerated);
- VIR_FREE(sharePolicy);
- return ret;
+ return 0;
}
@@ -13887,11 +13580,11 @@ virDomainGraphicsDefParseXMLSDL(virDomainGraphicsDefPtr def,
xmlXPathContextPtr ctxt)
{
xmlNodePtr save = ctxt->node;
- char *enable = NULL;
int enableVal;
xmlNodePtr glNode;
- char *fullscreen = virXMLPropString(node, "fullscreen");
int ret = -1;
+ VIR_AUTOFREE(char *) fullscreen = virXMLPropString(node, "fullscreen");
+ VIR_AUTOFREE(char *) enable = NULL;
ctxt->node = node;
@@ -13932,8 +13625,6 @@ virDomainGraphicsDefParseXMLSDL(virDomainGraphicsDefPtr def,
ret = 0;
cleanup:
- VIR_FREE(fullscreen);
- VIR_FREE(enable);
ctxt->node = save;
return ret;
}
@@ -13945,20 +13636,19 @@ virDomainGraphicsDefParseXMLRDP(virDomainGraphicsDefPtr def,
xmlXPathContextPtr ctxt,
unsigned int flags)
{
- char *port = virXMLPropString(node, "port");
- char *autoport = virXMLPropString(node, "autoport");
- char *replaceUser = virXMLPropString(node, "replaceUser");
- char *multiUser = virXMLPropString(node, "multiUser");
- int ret = -1;
+ VIR_AUTOFREE(char *) port = virXMLPropString(node, "port");
+ VIR_AUTOFREE(char *) autoport = virXMLPropString(node, "autoport");
+ VIR_AUTOFREE(char *) replaceUser = virXMLPropString(node, "replaceUser");
+ VIR_AUTOFREE(char *) multiUser = virXMLPropString(node, "multiUser");
if (virDomainGraphicsListensParseXML(def, node, ctxt, flags) < 0)
- goto error;
+ return -1;
if (port) {
if (virStrToLong_i(port, NULL, 10, &def->data.rdp.port) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot parse rdp port %s"), port);
- goto error;
+ return -1;
}
/* Legacy compat syntax, used -1 for auto-port */
if (def->data.rdp.port == -1)
@@ -13981,13 +13671,7 @@ virDomainGraphicsDefParseXMLRDP(virDomainGraphicsDefPtr def,
if (STREQ_NULLABLE(multiUser, "yes"))
def->data.rdp.multiUser = true;
- ret = 0;
- error:
- VIR_FREE(port);
- VIR_FREE(autoport);
- VIR_FREE(replaceUser);
- VIR_FREE(multiUser);
- return ret;
+ return 0;
}
@@ -13995,8 +13679,7 @@ static int
virDomainGraphicsDefParseXMLDesktop(virDomainGraphicsDefPtr def,
xmlNodePtr node)
{
- char *fullscreen = virXMLPropString(node, "fullscreen");
- int ret = -1;
+ VIR_AUTOFREE(char *) fullscreen = virXMLPropString(node, "fullscreen");
if (fullscreen != NULL) {
if (STREQ(fullscreen, "yes")) {
@@ -14006,7 +13689,7 @@ virDomainGraphicsDefParseXMLDesktop(virDomainGraphicsDefPtr def,
} else {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unknown fullscreen value '%s'"),
fullscreen);
- goto cleanup;
+ return -1;
}
} else {
def->data.desktop.fullscreen = false;
@@ -14014,10 +13697,7 @@ virDomainGraphicsDefParseXMLDesktop(virDomainGraphicsDefPtr def,
def->data.desktop.display = virXMLPropString(node, "display");
- ret = 0;
- cleanup:
- VIR_FREE(fullscreen);
- return ret;
+ return 0;
}
@@ -14028,21 +13708,20 @@ virDomainGraphicsDefParseXMLSpice(virDomainGraphicsDefPtr def,
unsigned int flags)
{
xmlNodePtr cur;
- char *port = virXMLPropString(node, "port");
- char *tlsPort = virXMLPropString(node, "tlsPort");
- char *autoport = virXMLPropString(node, "autoport");
- char *defaultMode = virXMLPropString(node, "defaultMode");
int defaultModeVal;
- int ret = -1;
+ VIR_AUTOFREE(char *) port = virXMLPropString(node, "port");
+ VIR_AUTOFREE(char *) tlsPort = virXMLPropString(node, "tlsPort");
+ VIR_AUTOFREE(char *) autoport = virXMLPropString(node, "autoport");
+ VIR_AUTOFREE(char *) defaultMode = virXMLPropString(node, "defaultMode");
if (virDomainGraphicsListensParseXML(def, node, ctxt, flags) < 0)
- goto error;
+ return -1;
if (port) {
if (virStrToLong_i(port, NULL, 10, &def->data.spice.port) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot parse spice port %s"), port);
- goto error;
+ return -1;
}
} else {
def->data.spice.port = 0;
@@ -14052,7 +13731,7 @@ virDomainGraphicsDefParseXMLSpice(virDomainGraphicsDefPtr def,
if (virStrToLong_i(tlsPort, NULL, 10, &def->data.spice.tlsPort) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot parse spice tlsPort %s"), tlsPort);
- goto error;
+ return -1;
}
} else {
def->data.spice.tlsPort = 0;
@@ -14068,7 +13747,7 @@ virDomainGraphicsDefParseXMLSpice(virDomainGraphicsDefPtr def,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown default spice channel mode %s"),
defaultMode);
- goto error;
+ return -1;
}
def->data.spice.defaultMode = defaultModeVal;
}
@@ -14087,53 +13766,47 @@ virDomainGraphicsDefParseXMLSpice(virDomainGraphicsDefPtr def,
if (virDomainGraphicsAuthDefParseXML(node, &def->data.spice.auth,
def->type) < 0)
- goto error;
+ return -1;
cur = node->children;
while (cur != NULL) {
if (cur->type == XML_ELEMENT_NODE) {
if (virXMLNodeNameEqual(cur, "channel")) {
- char *name, *mode;
int nameval, modeval;
+ VIR_AUTOFREE(char *) name = NULL;
+ VIR_AUTOFREE(char *) mode = NULL;
+
name = virXMLPropString(cur, "name");
mode = virXMLPropString(cur, "mode");
if (!name || !mode) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("spice channel missing name/mode"));
- VIR_FREE(name);
- VIR_FREE(mode);
- goto error;
+ return -1;
}
if ((nameval = virDomainGraphicsSpiceChannelNameTypeFromString(name))
< 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown spice channel name %s"),
name);
- VIR_FREE(name);
- VIR_FREE(mode);
- goto error;
+ return -1;
}
if ((modeval = virDomainGraphicsSpiceChannelModeTypeFromString(mode))
< 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown spice channel mode %s"),
mode);
- VIR_FREE(name);
- VIR_FREE(mode);
- goto error;
+ return -1;
}
- VIR_FREE(name);
- VIR_FREE(mode);
def->data.spice.channels[nameval] = modeval;
} else if (virXMLNodeNameEqual(cur, "image")) {
- char *compression = virXMLPropString(cur, "compression");
int compressionVal;
+ VIR_AUTOFREE(char *) compression = virXMLPropString(cur,
"compression");
if (!compression) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("spice image missing compression"));
- goto error;
+ return -1;
}
if ((compressionVal =
@@ -14141,20 +13814,18 @@ virDomainGraphicsDefParseXMLSpice(virDomainGraphicsDefPtr def,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown spice image compression %s"),
compression);
- VIR_FREE(compression);
- goto error;
+ return -1;
}
- VIR_FREE(compression);
def->data.spice.image = compressionVal;
} else if (virXMLNodeNameEqual(cur, "jpeg")) {
- char *compression = virXMLPropString(cur, "compression");
int compressionVal;
+ VIR_AUTOFREE(char *) compression = virXMLPropString(cur,
"compression");
if (!compression) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("spice jpeg missing compression"));
- goto error;
+ return -1;
}
if ((compressionVal =
@@ -14162,20 +13833,18 @@ virDomainGraphicsDefParseXMLSpice(virDomainGraphicsDefPtr def,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown spice jpeg compression %s"),
compression);
- VIR_FREE(compression);
- goto error;
+ return -1;
}
- VIR_FREE(compression);
def->data.spice.jpeg = compressionVal;
} else if (virXMLNodeNameEqual(cur, "zlib")) {
- char *compression = virXMLPropString(cur, "compression");
int compressionVal;
+ VIR_AUTOFREE(char *) compression = virXMLPropString(cur,
"compression");
if (!compression) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("spice zlib missing compression"));
- goto error;
+ return -1;
}
if ((compressionVal =
@@ -14183,136 +13852,118 @@ virDomainGraphicsDefParseXMLSpice(virDomainGraphicsDefPtr
def,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown spice zlib compression %s"),
compression);
- VIR_FREE(compression);
- goto error;
+ return -1;
}
- VIR_FREE(compression);
def->data.spice.zlib = compressionVal;
} else if (virXMLNodeNameEqual(cur, "playback")) {
- char *compression = virXMLPropString(cur, "compression");
int compressionVal;
+ VIR_AUTOFREE(char *) compression = virXMLPropString(cur,
"compression");
if (!compression) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("spice playback missing compression"));
- goto error;
+ return -1;
}
if ((compressionVal =
virTristateSwitchTypeFromString(compression)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("unknown spice playback compression"));
- VIR_FREE(compression);
- goto error;
-
+ return -1;
}
- VIR_FREE(compression);
def->data.spice.playback = compressionVal;
} else if (virXMLNodeNameEqual(cur, "streaming")) {
- char *mode = virXMLPropString(cur, "mode");
int modeVal;
+ VIR_AUTOFREE(char *) mode = virXMLPropString(cur, "mode");
if (!mode) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("spice streaming missing mode"));
- goto error;
+ return -1;
}
if ((modeVal =
virDomainGraphicsSpiceStreamingModeTypeFromString(mode)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("unknown spice streaming mode"));
- VIR_FREE(mode);
- goto error;
-
+ return -1;
}
- VIR_FREE(mode);
def->data.spice.streaming = modeVal;
} else if (virXMLNodeNameEqual(cur, "clipboard")) {
- char *copypaste = virXMLPropString(cur, "copypaste");
int copypasteVal;
+ VIR_AUTOFREE(char *) copypaste = virXMLPropString(cur,
"copypaste");
if (!copypaste) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("spice clipboard missing copypaste"));
- goto error;
+ return -1;
}
if ((copypasteVal =
virTristateBoolTypeFromString(copypaste)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown copypaste value '%s'"),
copypaste);
- VIR_FREE(copypaste);
- goto error;
+ return -1;
}
- VIR_FREE(copypaste);
def->data.spice.copypaste = copypasteVal;
} else if (virXMLNodeNameEqual(cur, "filetransfer")) {
- char *enable = virXMLPropString(cur, "enable");
int enableVal;
+ VIR_AUTOFREE(char *) enable = virXMLPropString(cur, "enable");
if (!enable) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("spice filetransfer missing enable"));
- goto error;
+ return -1;
}
if ((enableVal =
virTristateBoolTypeFromString(enable)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown enable value '%s'"),
enable);
- VIR_FREE(enable);
- goto error;
+ return -1;
}
- VIR_FREE(enable);
def->data.spice.filetransfer = enableVal;
} else if (virXMLNodeNameEqual(cur, "gl")) {
- char *enable = virXMLPropString(cur, "enable");
- char *rendernode = virXMLPropString(cur, "rendernode");
int enableVal;
+ VIR_AUTOFREE(char *) enable = virXMLPropString(cur, "enable");
+ VIR_AUTOFREE(char *) rendernode = virXMLPropString(cur,
"rendernode");
if (!enable) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("spice gl element missing enable"));
- VIR_FREE(rendernode);
- goto error;
+ return -1;
}
if ((enableVal =
virTristateBoolTypeFromString(enable)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown enable value '%s'"),
enable);
- VIR_FREE(enable);
- VIR_FREE(rendernode);
- goto error;
+ return -1;
}
- VIR_FREE(enable);
def->data.spice.gl = enableVal;
VIR_STEAL_PTR(def->data.spice.rendernode, rendernode);
} else if (virXMLNodeNameEqual(cur, "mouse")) {
- char *mode = virXMLPropString(cur, "mode");
int modeVal;
+ VIR_AUTOFREE(char *) mode = virXMLPropString(cur, "mode");
if (!mode) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("spice mouse missing mode"));
- goto error;
+ return -1;
}
if ((modeVal = virDomainGraphicsSpiceMouseModeTypeFromString(mode)) <=
0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown mouse mode value '%s'"),
mode);
- VIR_FREE(mode);
- goto error;
+ return -1;
}
- VIR_FREE(mode);
def->data.spice.mousemode = modeVal;
}
@@ -14320,13 +13971,7 @@ virDomainGraphicsDefParseXMLSpice(virDomainGraphicsDefPtr def,
cur = cur->next;
}
- ret = 0;
- error:
- VIR_FREE(port);
- VIR_FREE(tlsPort);
- VIR_FREE(autoport);
- VIR_FREE(defaultMode);
- return ret;
+ return 0;
}
@@ -14374,8 +14019,8 @@ virDomainGraphicsDefParseXML(virDomainXMLOptionPtr xmlopt,
unsigned int flags)
{
virDomainGraphicsDefPtr def;
- char *type = NULL;
int typeVal;
+ VIR_AUTOFREE(char *) type = NULL;
if (!(def = virDomainGraphicsDefNew(xmlopt)))
return NULL;
@@ -14424,8 +14069,6 @@ virDomainGraphicsDefParseXML(virDomainXMLOptionPtr xmlopt,
}
cleanup:
- VIR_FREE(type);
-
return def;
error:
@@ -14438,8 +14081,8 @@ virDomainGraphicsDefParseXML(virDomainXMLOptionPtr xmlopt,
static virDomainSoundCodecDefPtr
virDomainSoundCodecDefParseXML(xmlNodePtr node)
{
- char *type;
virDomainSoundCodecDefPtr def;
+ VIR_AUTOFREE(char *) type = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -14452,8 +14095,6 @@ virDomainSoundCodecDefParseXML(xmlNodePtr node)
}
cleanup:
- VIR_FREE(type);
-
return def;
error:
@@ -14469,9 +14110,9 @@ virDomainSoundDefParseXML(virDomainXMLOptionPtr xmlopt,
xmlXPathContextPtr ctxt,
unsigned int flags)
{
- char *model;
virDomainSoundDefPtr def;
xmlNodePtr save = ctxt->node;
+ VIR_AUTOFREE(char *) model = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -14488,7 +14129,7 @@ virDomainSoundDefParseXML(virDomainXMLOptionPtr xmlopt,
if (def->model == VIR_DOMAIN_SOUND_MODEL_ICH6 ||
def->model == VIR_DOMAIN_SOUND_MODEL_ICH9) {
int ncodecs;
- xmlNodePtr *codecNodes = NULL;
+ VIR_AUTOFREE(xmlNodePtr *) codecNodes = NULL;
/* parse the <codec> subelements for sound models that support it */
ncodecs = virXPathNodeSet("./codec", ctxt, &codecNodes);
@@ -14498,22 +14139,17 @@ virDomainSoundDefParseXML(virDomainXMLOptionPtr xmlopt,
if (ncodecs > 0) {
size_t i;
- if (VIR_ALLOC_N(def->codecs, ncodecs) < 0) {
- VIR_FREE(codecNodes);
+ if (VIR_ALLOC_N(def->codecs, ncodecs) < 0)
goto error;
- }
for (i = 0; i < ncodecs; i++) {
virDomainSoundCodecDefPtr codec =
virDomainSoundCodecDefParseXML(codecNodes[i]);
- if (codec == NULL) {
- VIR_FREE(codecNodes);
+ if (codec == NULL)
goto error;
- }
codec->cad = def->ncodecs; /* that will do for now */
def->codecs[def->ncodecs++] = codec;
}
- VIR_FREE(codecNodes);
}
}
@@ -14521,8 +14157,6 @@ virDomainSoundDefParseXML(virDomainXMLOptionPtr xmlopt,
goto error;
cleanup:
- VIR_FREE(model);
-
ctxt->node = save;
return def;
@@ -14538,9 +14172,9 @@ virDomainWatchdogDefParseXML(virDomainXMLOptionPtr xmlopt,
xmlNodePtr node,
unsigned int flags)
{
- char *model = NULL;
- char *action = NULL;
virDomainWatchdogDefPtr def;
+ VIR_AUTOFREE(char *) model = NULL;
+ VIR_AUTOFREE(char *) action = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -14574,9 +14208,6 @@ virDomainWatchdogDefParseXML(virDomainXMLOptionPtr xmlopt,
goto error;
cleanup:
- VIR_FREE(action);
- VIR_FREE(model);
-
return def;
error:
@@ -14592,13 +14223,13 @@ virDomainRNGDefParseXML(virDomainXMLOptionPtr xmlopt,
xmlXPathContextPtr ctxt,
unsigned int flags)
{
- char *model = NULL;
- char *backend = NULL;
- char *type = NULL;
virDomainRNGDefPtr def;
xmlNodePtr save = ctxt->node;
- xmlNodePtr *backends = NULL;
int nbackends;
+ VIR_AUTOFREE(xmlNodePtr *) backends = NULL;
+ VIR_AUTOFREE(char *) model = NULL;
+ VIR_AUTOFREE(char *) backend = NULL;
+ VIR_AUTOFREE(char *) type = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -14690,10 +14321,6 @@ virDomainRNGDefParseXML(virDomainXMLOptionPtr xmlopt,
goto error;
cleanup:
- VIR_FREE(model);
- VIR_FREE(backend);
- VIR_FREE(type);
- VIR_FREE(backends);
ctxt->node = save;
return def;
@@ -14710,11 +14337,11 @@ virDomainMemballoonDefParseXML(virDomainXMLOptionPtr xmlopt,
xmlXPathContextPtr ctxt,
unsigned int flags)
{
- char *model;
- char *deflate = NULL;
virDomainMemballoonDefPtr def;
xmlNodePtr save = ctxt->node;
unsigned int period = 0;
+ VIR_AUTOFREE(char *) model = NULL;
+ VIR_AUTOFREE(char *) deflate = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -14761,9 +14388,6 @@ virDomainMemballoonDefParseXML(virDomainXMLOptionPtr xmlopt,
goto error;
cleanup:
- VIR_FREE(model);
- VIR_FREE(deflate);
-
ctxt->node = save;
return def;
@@ -14799,13 +14423,12 @@ virDomainShmemDefParseXML(virDomainXMLOptionPtr xmlopt,
xmlXPathContextPtr ctxt,
unsigned int flags)
{
- char *tmp = NULL;
virDomainShmemDefPtr def = NULL;
virDomainShmemDefPtr ret = NULL;
xmlNodePtr msi = NULL;
xmlNodePtr save = ctxt->node;
xmlNodePtr server = NULL;
-
+ VIR_AUTOFREE(char *) tmp = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -14869,7 +14492,6 @@ virDomainShmemDefParseXML(virDomainXMLOptionPtr xmlopt,
}
def->msi.ioeventfd = val;
}
- VIR_FREE(tmp);
}
/* msi option is only relevant with a server */
@@ -14886,7 +14508,6 @@ virDomainShmemDefParseXML(virDomainXMLOptionPtr xmlopt,
VIR_STEAL_PTR(ret, def);
cleanup:
ctxt->node = save;
- VIR_FREE(tmp);
virDomainShmemDefFree(def);
return ret;
}
@@ -14958,7 +14579,7 @@ virSysinfoSystemParseXML(xmlNodePtr node,
{
int ret = -1;
virSysinfoSystemDefPtr def;
- char *tmpUUID = NULL;
+ VIR_AUTOFREE(char *) tmpUUID = NULL;
if (!virXMLNodeNameEqual(node, "system")) {
virReportError(VIR_ERR_XML_ERROR, "%s",
@@ -15019,7 +14640,6 @@ virSysinfoSystemParseXML(xmlNodePtr node,
ret = 0;
cleanup:
virSysinfoSystemDefFree(def);
- VIR_FREE(tmpUUID);
return ret;
}
@@ -15029,10 +14649,11 @@ virSysinfoBaseBoardParseXML(xmlXPathContextPtr ctxt,
size_t *nbaseBoard)
{
int ret = -1;
- virSysinfoBaseBoardDefPtr boards = NULL;
size_t i, nboards = 0;
- xmlNodePtr *nodes = NULL, oldnode = ctxt->node;
+ xmlNodePtr oldnode = ctxt->node;
int n;
+ VIR_AUTOFREE(virSysinfoBaseBoardDefPtr) boards = NULL;
+ VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
if ((n = virXPathNodeSet("./baseBoard", ctxt, &nodes)) < 0)
return ret;
@@ -15070,8 +14691,6 @@ virSysinfoBaseBoardParseXML(xmlXPathContextPtr ctxt,
*nbaseBoard = nboards;
ret = 0;
cleanup:
- VIR_FREE(boards);
- VIR_FREE(nodes);
ctxt->node = oldnode;
return ret;
}
@@ -15083,9 +14702,9 @@ virSysinfoOEMStringsParseXML(xmlXPathContextPtr ctxt,
{
int ret = -1;
virSysinfoOEMStringsDefPtr def;
- xmlNodePtr *strings = NULL;
int nstrings;
size_t i;
+ VIR_AUTOFREE(xmlNodePtr *) strings = NULL;
nstrings = virXPathNodeSet("./entry", ctxt, &strings);
if (nstrings < 0)
@@ -15106,7 +14725,6 @@ virSysinfoOEMStringsParseXML(xmlXPathContextPtr ctxt,
VIR_STEAL_PTR(*oem, def);
ret = 0;
cleanup:
- VIR_FREE(strings);
virSysinfoOEMStringsDefFree(def);
return ret;
}
@@ -15162,7 +14780,7 @@ virSysinfoParseXML(xmlNodePtr node,
{
virSysinfoDefPtr def;
xmlNodePtr oldnode, tmpnode;
- char *type;
+ VIR_AUTOFREE(char *) type = NULL;
if (!virXMLNodeNameEqual(node, "sysinfo")) {
virReportError(VIR_ERR_XML_ERROR, "%s",
@@ -15235,7 +14853,6 @@ virSysinfoParseXML(xmlNodePtr node,
}
cleanup:
- VIR_FREE(type);
return def;
error:
@@ -15329,9 +14946,9 @@ virDomainVideoAccelDefParseXML(xmlNodePtr node)
{
xmlNodePtr cur;
virDomainVideoAccelDefPtr def;
- char *accel2d = NULL;
- char *accel3d = NULL;
int val;
+ VIR_AUTOFREE(char *) accel2d = NULL;
+ VIR_AUTOFREE(char *) accel3d = NULL;
cur = node->children;
while (cur != NULL) {
@@ -15370,8 +14987,6 @@ virDomainVideoAccelDefParseXML(xmlNodePtr node)
}
cleanup:
- VIR_FREE(accel2d);
- VIR_FREE(accel3d);
return def;
}
@@ -15380,8 +14995,8 @@ virDomainVideoDriverDefParseXML(xmlNodePtr node)
{
xmlNodePtr cur;
virDomainVideoDriverDefPtr def;
- char *vgaconf = NULL;
int val;
+ VIR_AUTOFREE(char *) vgaconf = NULL;
cur = node->children;
while (cur != NULL) {
@@ -15408,7 +15023,6 @@ virDomainVideoDriverDefParseXML(xmlNodePtr node)
def->vgaconf = val;
cleanup:
- VIR_FREE(vgaconf);
return def;
}
@@ -15422,13 +15036,13 @@ virDomainVideoDefParseXML(virDomainXMLOptionPtr xmlopt,
virDomainVideoDefPtr def;
xmlNodePtr cur;
xmlNodePtr saved = ctxt->node;
- char *type = NULL;
- char *heads = NULL;
- char *vram = NULL;
- char *vram64 = NULL;
- char *ram = NULL;
- char *vgamem = NULL;
- char *primary = NULL;
+ VIR_AUTOFREE(char *) type = NULL;
+ VIR_AUTOFREE(char *) heads = NULL;
+ VIR_AUTOFREE(char *) vram = NULL;
+ VIR_AUTOFREE(char *) vram64 = NULL;
+ VIR_AUTOFREE(char *) ram = NULL;
+ VIR_AUTOFREE(char *) vgamem = NULL;
+ VIR_AUTOFREE(char *) primary = NULL;
if (!(def = virDomainVideoDefNew()))
return NULL;
@@ -15535,14 +15149,6 @@ virDomainVideoDefParseXML(virDomainXMLOptionPtr xmlopt,
cleanup:
ctxt->node = saved;
-
- VIR_FREE(type);
- VIR_FREE(ram);
- VIR_FREE(vram);
- VIR_FREE(vram64);
- VIR_FREE(vgamem);
- VIR_FREE(heads);
-
return def;
error:
@@ -15559,8 +15165,8 @@ virDomainHostdevDefParseXML(virDomainXMLOptionPtr xmlopt,
{
virDomainHostdevDefPtr def;
xmlNodePtr save = ctxt->node;
- char *mode = virXMLPropString(node, "mode");
- char *type = virXMLPropString(node, "type");
+ VIR_AUTOFREE(char *) mode = virXMLPropString(node, "mode");
+ VIR_AUTOFREE(char *) type = virXMLPropString(node, "type");
ctxt->node = node;
@@ -15619,8 +15225,6 @@ virDomainHostdevDefParseXML(virDomainXMLOptionPtr xmlopt,
}
cleanup:
- VIR_FREE(type);
- VIR_FREE(mode);
ctxt->node = save;
return def;
@@ -15639,7 +15243,8 @@ virDomainRedirdevDefParseXML(virDomainXMLOptionPtr xmlopt,
{
xmlNodePtr cur;
virDomainRedirdevDefPtr def;
- char *bus = NULL, *type = NULL;
+ VIR_AUTOFREE(char *) bus = NULL;
+ VIR_AUTOFREE(char *) type = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -15695,8 +15300,6 @@ virDomainRedirdevDefParseXML(virDomainXMLOptionPtr xmlopt,
cleanup:
- VIR_FREE(bus);
- VIR_FREE(type);
return def;
error:
@@ -15746,10 +15349,12 @@ virDomainRedirFilterUSBVersionHelper(const char *version,
static virDomainRedirFilterUSBDevDefPtr
virDomainRedirFilterUSBDevDefParseXML(xmlNodePtr node)
{
- char *class;
- char *vendor = NULL, *product = NULL;
- char *version = NULL, *allow = NULL;
virDomainRedirFilterUSBDevDefPtr def;
+ VIR_AUTOFREE(char *) class = NULL;
+ VIR_AUTOFREE(char *) vendor = NULL;
+ VIR_AUTOFREE(char *) product = NULL;
+ VIR_AUTOFREE(char *) version = NULL;
+ VIR_AUTOFREE(char *) allow = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -15821,11 +15426,6 @@ virDomainRedirFilterUSBDevDefParseXML(xmlNodePtr node)
}
cleanup:
- VIR_FREE(class);
- VIR_FREE(vendor);
- VIR_FREE(product);
- VIR_FREE(version);
- VIR_FREE(allow);
return def;
error:
@@ -15840,9 +15440,9 @@ virDomainRedirFilterDefParseXML(xmlNodePtr node,
{
int n;
size_t i;
- xmlNodePtr *nodes = NULL;
xmlNodePtr save = ctxt->node;
virDomainRedirFilterDefPtr def = NULL;
+ VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
if (VIR_ALLOC(def) < 0)
goto error;
@@ -15862,13 +15462,11 @@ virDomainRedirFilterDefParseXML(xmlNodePtr node,
goto error;
def->usbdevs[def->nusbdevs++] = usbdev;
}
- VIR_FREE(nodes);
ctxt->node = save;
return def;
error:
- VIR_FREE(nodes);
virDomainRedirFilterDefFree(def);
return NULL;
}
@@ -15881,7 +15479,8 @@ virDomainEventActionParseXML(xmlXPathContextPtr ctxt,
int defaultVal,
virEventActionFromStringFunc convFunc)
{
- char *tmp = virXPathString(xpath, ctxt);
+ VIR_AUTOFREE(char *) tmp = virXPathString(xpath, ctxt);
+
if (tmp == NULL) {
*val = defaultVal;
} else {
@@ -15889,10 +15488,8 @@ virDomainEventActionParseXML(xmlXPathContextPtr ctxt,
if (*val < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown %s action: %s"), name, tmp);
- VIR_FREE(tmp);
return -1;
}
- VIR_FREE(tmp);
}
return 0;
}
@@ -15902,21 +15499,18 @@ virDomainPMStateParseXML(xmlXPathContextPtr ctxt,
const char *xpath,
int *val)
{
- int ret = -1;
- char *tmp = virXPathString(xpath, ctxt);
+ VIR_AUTOFREE(char *) tmp = virXPathString(xpath, ctxt);
+
if (tmp) {
*val = virTristateBoolTypeFromString(tmp);
if (*val < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown PM state value %s"), tmp);
- goto cleanup;
+ return -1;
}
}
- ret = 0;
- cleanup:
- VIR_FREE(tmp);
- return ret;
+ return 0;
}
@@ -15924,47 +15518,41 @@ static int
virDomainPerfEventDefParseXML(virDomainPerfDefPtr perf,
xmlNodePtr node)
{
- char *name = NULL;
- char *enabled = NULL;
int event;
- int ret = -1;
+ VIR_AUTOFREE(char *) name = NULL;
+ VIR_AUTOFREE(char *) enabled = NULL;
if (!(name = virXMLPropString(node, "name"))) {
virReportError(VIR_ERR_XML_ERROR, "%s", _("missing perf event
name"));
- goto cleanup;
+ return -1;
}
if ((event = virPerfEventTypeFromString(name)) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("'unsupported perf event '%s'"), name);
- goto cleanup;
+ return -1;
}
if (perf->events[event] != VIR_TRISTATE_BOOL_ABSENT) {
virReportError(VIR_ERR_XML_ERROR,
_("perf event '%s' was already specified"),
name);
- goto cleanup;
+ return -1;
}
if (!(enabled = virXMLPropString(node, "enabled"))) {
virReportError(VIR_ERR_XML_ERROR,
_("missing state of perf event '%s'"), name);
- goto cleanup;
+ return -1;
}
if ((perf->events[event] = virTristateBoolTypeFromString(enabled)) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("invalid state '%s' of perf event
'%s'"),
enabled, name);
- goto cleanup;
+ return -1;
}
- ret = 0;
-
- cleanup:
- VIR_FREE(name);
- VIR_FREE(enabled);
- return ret;
+ return 0;
}
static int
@@ -15972,23 +15560,18 @@ virDomainPerfDefParseXML(virDomainDefPtr def,
xmlXPathContextPtr ctxt)
{
size_t i;
- int ret = -1;
- xmlNodePtr *nodes = NULL;
int n;
+ VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
if ((n = virXPathNodeSet("./perf/event", ctxt, &nodes)) < 0)
return n;
for (i = 0; i < n; i++) {
if (virDomainPerfEventDefParseXML(&def->perf, nodes[i]) < 0)
- goto cleanup;
+ return -1;
}
- ret = 0;
-
- cleanup:
- VIR_FREE(nodes);
- return ret;
+ return 0;
}
static int
@@ -15997,9 +15580,9 @@ virDomainMemorySourceDefParseXML(xmlNodePtr node,
virDomainMemoryDefPtr def)
{
int ret = -1;
- char *nodemask = NULL;
xmlNodePtr save = ctxt->node;
ctxt->node = node;
+ VIR_AUTOFREE(char *) nodemask = NULL;
switch ((virDomainMemoryModel) def->model) {
case VIR_DOMAIN_MEMORY_MODEL_DIMM:
@@ -16044,7 +15627,6 @@ virDomainMemorySourceDefParseXML(xmlNodePtr node,
ret = 0;
cleanup:
- VIR_FREE(nodemask);
ctxt->node = save;
return ret;
}
@@ -16107,10 +15689,10 @@ static virDomainSEVDefPtr
virDomainSEVDefParseXML(xmlNodePtr sevNode,
xmlXPathContextPtr ctxt)
{
- char *type = NULL;
xmlNodePtr save = ctxt->node;
virDomainSEVDefPtr def;
unsigned long policy;
+ VIR_AUTOFREE(char *) type = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -16160,7 +15742,6 @@ virDomainSEVDefParseXML(xmlNodePtr sevNode,
def->session = virXPathString("string(./session)", ctxt);
cleanup:
- VIR_FREE(type);
ctxt->node = save;
return def;
@@ -16176,11 +15757,11 @@ virDomainMemoryDefParseXML(virDomainXMLOptionPtr xmlopt,
xmlXPathContextPtr ctxt,
unsigned int flags)
{
- char *tmp = NULL;
xmlNodePtr save = ctxt->node;
xmlNodePtr node;
virDomainMemoryDefPtr def;
int val;
+ VIR_AUTOFREE(char *) tmp = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
@@ -16220,7 +15801,6 @@ virDomainMemoryDefParseXML(virDomainXMLOptionPtr xmlopt,
def->discard = val;
}
- VIR_FREE(tmp);
/* source */
if ((node = virXPathNode("./source", ctxt)) &&
@@ -16245,7 +15825,6 @@ virDomainMemoryDefParseXML(virDomainXMLOptionPtr xmlopt,
return def;
error:
- VIR_FREE(tmp);
virDomainMemoryDefFree(def);
ctxt->node = save;
return NULL;
@@ -16256,11 +15835,12 @@ static virDomainIOMMUDefPtr
virDomainIOMMUDefParseXML(xmlNodePtr node,
xmlXPathContextPtr ctxt)
{
- virDomainIOMMUDefPtr iommu = NULL, ret = NULL;
+ virDomainIOMMUDefPtr ret = NULL;
xmlNodePtr save = ctxt->node;
xmlNodePtr driver;
- char *tmp = NULL;
int val;
+ VIR_AUTOFREE(char *) tmp = NULL;
+ VIR_AUTOFREE(virDomainIOMMUDefPtr) iommu = NULL;
ctxt->node = node;
@@ -16321,8 +15901,6 @@ virDomainIOMMUDefParseXML(xmlNodePtr node,
cleanup:
ctxt->node = save;
- VIR_FREE(iommu);
- VIR_FREE(tmp);
return ret;
}
@@ -16333,11 +15911,12 @@ virDomainVsockDefParseXML(virDomainXMLOptionPtr xmlopt,
xmlXPathContextPtr ctxt,
unsigned int flags)
{
- virDomainVsockDefPtr vsock = NULL, ret = NULL;
+ virDomainVsockDefPtr ret = NULL;
xmlNodePtr save = ctxt->node;
xmlNodePtr cid;
- char *tmp = NULL;
int val;
+ VIR_AUTOFREE(char *) tmp = NULL;
+ VIR_AUTOFREE(virDomainVsockDefPtr) vsock = NULL;
ctxt->node = node;
@@ -16386,8 +15965,6 @@ virDomainVsockDefParseXML(virDomainXMLOptionPtr xmlopt,
cleanup:
ctxt->node = save;
- VIR_FREE(vsock);
- VIR_FREE(tmp);
return ret;
}
@@ -17981,17 +17558,14 @@ virDomainDefGetDefaultEmulator(virDomainDefPtr def,
virCapsPtr caps)
{
char *retemu;
- virCapsDomainDataPtr capsdata;
+ VIR_AUTOFREE(virCapsDomainDataPtr) capsdata = NULL;
if (!(capsdata = virCapabilitiesDomainDataLookup(caps, def->os.type,
def->os.arch, def->virtType, NULL, NULL)))
return NULL;
- if (VIR_STRDUP(retemu, capsdata->emulator) < 0) {
- VIR_FREE(capsdata);
+ if (VIR_STRDUP(retemu, capsdata->emulator) < 0)
return NULL;
- }
- VIR_FREE(capsdata);
return retemu;
}
@@ -17999,16 +17573,15 @@ static int
virDomainDefParseBootXML(xmlXPathContextPtr ctxt,
virDomainDefPtr def)
{
- xmlNodePtr *nodes = NULL;
xmlNodePtr node;
size_t i;
int n;
- char *tmp = NULL;
- int ret = -1;
+ VIR_AUTOFREE(char *) tmp = NULL;
+ VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
/* analysis of the boot devices */
if ((n = virXPathNodeSet("./os/boot", ctxt, &nodes)) < 0)
- goto cleanup;
+ return -1;
for (i = 0; i < n && i < VIR_DOMAIN_BOOT_LAST; i++) {
int val;
@@ -18016,14 +17589,14 @@ virDomainDefParseBootXML(xmlXPathContextPtr ctxt,
if (!dev) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("missing boot device"));
- goto cleanup;
+ return -1;
}
if ((val = virDomainBootTypeFromString(dev)) < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown boot device '%s'"),
dev);
VIR_FREE(dev);
- goto cleanup;
+ return -1;
}
VIR_FREE(dev);
def->os.bootDevs[def->os.nBootDevs++] = val;
@@ -18051,7 +17624,7 @@ virDomainDefParseBootXML(xmlXPathContextPtr ctxt,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("invalid value for boot menu timeout, "
"must be in range [0,65535]"));
- goto cleanup;
+ return -1;
}
def->os.bm_timeout_set = true;
}
@@ -18077,18 +17650,13 @@ virDomainDefParseBootXML(xmlXPathContextPtr ctxt,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("invalid value for rebootTimeout, "
"must be in range [-1,65535]"));
- goto cleanup;
+ return -1;
}
def->os.bios.rt_set = true;
}
}
- ret = 0;
-
- cleanup:
- VIR_FREE(tmp);
- VIR_FREE(nodes);
- return ret;
+ return 0;
}
@@ -18168,7 +17736,7 @@ static virDomainIOThreadIDDefPtr
virDomainIOThreadIDDefParseXML(xmlNodePtr node)
{
virDomainIOThreadIDDefPtr iothrid;
- char *tmp = NULL;
+ VIR_AUTOFREE(char *) tmp = NULL;
if (VIR_ALLOC(iothrid) < 0)
return NULL;
@@ -18186,7 +17754,6 @@ virDomainIOThreadIDDefParseXML(xmlNodePtr node)
}
cleanup:
- VIR_FREE(tmp);
return iothrid;
error:
@@ -18201,53 +17768,44 @@ virDomainDefParseIOThreads(virDomainDefPtr def,
xmlXPathContextPtr ctxt)
{
size_t i;
- char *tmp;
int n = 0;
unsigned int iothreads = 0;
- xmlNodePtr *nodes = NULL;
+ VIR_AUTOFREE(char *) tmp = NULL;
+ VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
tmp = virXPathString("string(./iothreads[1])", ctxt);
if (tmp && virStrToLong_uip(tmp, NULL, 10, &iothreads) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("invalid iothreads count '%s'"), tmp);
- goto error;
+ return -1;
}
- VIR_FREE(tmp);
/* Extract any iothread id's defined */
if ((n = virXPathNodeSet("./iothreadids/iothread", ctxt, &nodes)) <
0)
- goto error;
+ return -1;
if (n > iothreads)
iothreads = n;
if (n && VIR_ALLOC_N(def->iothreadids, n) < 0)
- goto error;
+ return -1;
for (i = 0; i < n; i++) {
virDomainIOThreadIDDefPtr iothrid = NULL;
if (!(iothrid = virDomainIOThreadIDDefParseXML(nodes[i])))
- goto error;
+ return -1;
if (virDomainIOThreadIDFind(def, iothrid->iothread_id)) {
virReportError(VIR_ERR_XML_ERROR,
_("duplicate iothread id '%u' found"),
iothrid->iothread_id);
virDomainIOThreadIDDefFree(iothrid);
- goto error;
+ return -1;
}
def->iothreadids[def->niothreadids++] = iothrid;
}
- VIR_FREE(nodes);
-
- if (virDomainIOThreadIDDefArrayInit(def, iothreads) < 0)
- goto error;
-
- return 0;
- error:
- VIR_FREE(nodes);
- return -1;
+ return virDomainIOThreadIDDefArrayInit(def, iothreads);
}
@@ -18262,53 +17820,47 @@ virDomainVcpuPinDefParseXML(virDomainDefPtr def,
{
virDomainVcpuDefPtr vcpu;
unsigned int vcpuid;
- char *tmp = NULL;
- int ret = -1;
+ VIR_AUTOFREE(char *) tmp = NULL;
if (!(tmp = virXMLPropString(node, "vcpu"))) {
virReportError(VIR_ERR_XML_ERROR, "%s", _("missing vcpu id in
vcpupin"));
- goto cleanup;
+ return -1;
}
if (virStrToLong_uip(tmp, NULL, 10, &vcpuid) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("invalid setting for vcpu '%s'"), tmp);
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
if (!(vcpu = virDomainDefGetVcpu(def, vcpuid))) {
VIR_WARN("Ignoring vcpupin for missing vcpus");
- ret = 0;
- goto cleanup;
+ return 0;
}
if (!(tmp = virXMLPropString(node, "cpuset"))) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("missing cpuset for vcpupin"));
- goto cleanup;
+ return -1;
}
if (vcpu->cpumask) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("duplicate vcpupin for vcpu '%d'"), vcpuid);
- goto cleanup;
+ return -1;
}
if (virBitmapParse(tmp, &vcpu->cpumask, VIR_DOMAIN_CPUMASK_LEN) < 0)
- goto cleanup;
+ return -1;
if (virBitmapIsAllClear(vcpu->cpumask)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Invalid value of 'cpuset': %s"), tmp);
- goto cleanup;
- }
-
- ret = 0;
+ return -1;
+ }
- cleanup:
- VIR_FREE(tmp);
- return ret;
+ return 0;
}
@@ -18320,67 +17872,62 @@ static int
virDomainIOThreadPinDefParseXML(xmlNodePtr node,
virDomainDefPtr def)
{
- int ret = -1;
virDomainIOThreadIDDefPtr iothrid;
unsigned int iothreadid;
- char *tmp = NULL;
+ VIR_AUTOFREE(char *) tmp = NULL;
VIR_AUTOPTR(virBitmap) cpumask = NULL;
if (!(tmp = virXMLPropString(node, "iothread"))) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("missing iothread id in iothreadpin"));
- goto cleanup;
+ return -1;
}
if (virStrToLong_uip(tmp, NULL, 10, &iothreadid) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("invalid setting for iothread '%s'"), tmp);
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
if (iothreadid == 0) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("zero is an invalid iothread id value"));
- goto cleanup;
+ return -1;
}
if (!(iothrid = virDomainIOThreadIDFind(def, iothreadid))) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Cannot find 'iothread' : %u"),
iothreadid);
- goto cleanup;
+ return -1;
}
if (!(tmp = virXMLPropString(node, "cpuset"))) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("missing cpuset for iothreadpin"));
- goto cleanup;
+ return -1;
}
if (virBitmapParse(tmp, &cpumask, VIR_DOMAIN_CPUMASK_LEN) < 0)
- goto cleanup;
+ return -1;
if (virBitmapIsAllClear(cpumask)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Invalid value of 'cpuset': %s"),
tmp);
- goto cleanup;
+ return -1;
}
if (iothrid->cpumask) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("duplicate iothreadpin for same iothread
'%u'"),
iothreadid);
- goto cleanup;
+ return -1;
}
VIR_STEAL_PTR(iothrid->cpumask, cpumask);
- ret = 0;
-
- cleanup:
- VIR_FREE(tmp);
- return ret;
+ return 0;
}
@@ -18392,7 +17939,7 @@ static virBitmapPtr
virDomainEmulatorPinDefParseXML(xmlNodePtr node)
{
virBitmapPtr ret = NULL;
- char *tmp = NULL;
+ VIR_AUTOFREE(char *) tmp = NULL;
VIR_AUTOPTR(virBitmap) def = NULL;
if (!(tmp = virXMLPropString(node, "cpuset"))) {
@@ -18402,18 +17949,15 @@ virDomainEmulatorPinDefParseXML(xmlNodePtr node)
}
if (virBitmapParse(tmp, &def, VIR_DOMAIN_CPUMASK_LEN) < 0)
- goto cleanup;
+ return NULL;
if (virBitmapIsAllClear(def)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Invalid value of 'cpuset': %s"), tmp);
- goto cleanup;
+ return NULL;
}
VIR_STEAL_PTR(ret, def);
-
- cleanup:
- VIR_FREE(tmp);
return ret;
}
@@ -18549,7 +18093,8 @@ virDomainHugepagesParseXML(xmlNodePtr node,
{
int ret = -1;
xmlNodePtr oldnode = ctxt->node;
- char *unit = NULL, *nodeset = NULL;
+ VIR_AUTOFREE(char *) unit = NULL;
+ VIR_AUTOFREE(char *) nodeset = NULL;
ctxt->node = node;
@@ -18577,8 +18122,6 @@ virDomainHugepagesParseXML(xmlNodePtr node,
ret = 0;
cleanup:
- VIR_FREE(unit);
- VIR_FREE(nodeset);
ctxt->node = oldnode;
return ret;
}
@@ -18654,10 +18197,9 @@ static int
virDomainLoaderDefParseXML(xmlNodePtr node,
virDomainLoaderDefPtr loader)
{
- int ret = -1;
- char *readonly_str = NULL;
- char *secure_str = NULL;
- char *type_str = NULL;
+ VIR_AUTOFREE(char *) readonly_str = NULL;
+ VIR_AUTOFREE(char *) secure_str = NULL;
+ VIR_AUTOFREE(char *) type_str = NULL;
readonly_str = virXMLPropString(node, "readonly");
secure_str = virXMLPropString(node, "secure");
@@ -18668,14 +18210,14 @@ virDomainLoaderDefParseXML(xmlNodePtr node,
(loader->readonly = virTristateBoolTypeFromString(readonly_str)) <= 0) {
virReportError(VIR_ERR_XML_DETAIL,
_("unknown readonly value: %s"), readonly_str);
- goto cleanup;
+ return -1;
}
if (secure_str &&
(loader->secure = virTristateBoolTypeFromString(secure_str)) <= 0) {
virReportError(VIR_ERR_XML_DETAIL,
_("unknown secure value: %s"), secure_str);
- goto cleanup;
+ return -1;
}
if (type_str) {
@@ -18683,17 +18225,12 @@ virDomainLoaderDefParseXML(xmlNodePtr node,
if ((type = virDomainLoaderTypeFromString(type_str)) < 0) {
virReportError(VIR_ERR_XML_DETAIL,
_("unknown type value: %s"), type_str);
- goto cleanup;
+ return -1;
}
loader->type = type;
}
- ret = 0;
- cleanup:
- VIR_FREE(readonly_str);
- VIR_FREE(secure_str);
- VIR_FREE(type_str);
- return ret;
+ return 0;
}
@@ -18704,8 +18241,8 @@ virDomainSchedulerParse(xmlNodePtr node,
int *priority)
{
virBitmapPtr ret = NULL;
- char *tmp = NULL;
int pol = 0;
+ VIR_AUTOFREE(char *) tmp = NULL;
if (!(tmp = virXMLPropString(node, name))) {
virReportError(VIR_ERR_XML_ERROR,
@@ -18754,13 +18291,11 @@ virDomainSchedulerParse(xmlNodePtr node,
_("Invalid value for element priority"));
goto error;
}
- VIR_FREE(tmp);
}
return ret;
error:
- VIR_FREE(tmp);
virBitmapFree(ret);
return NULL;
}
@@ -18843,13 +18378,12 @@ virDomainVcpuParse(virDomainDefPtr def,
virDomainXMLOptionPtr xmlopt)
{
int n;
- xmlNodePtr *nodes = NULL;
xmlNodePtr vcpuNode;
size_t i;
- char *tmp = NULL;
unsigned int maxvcpus;
unsigned int vcpus;
- int ret = -1;
+ VIR_AUTOFREE(char *) tmp = NULL;
+ VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
vcpus = maxvcpus = 1;
@@ -18858,7 +18392,7 @@ virDomainVcpuParse(virDomainDefPtr def,
if (virStrToLong_ui(tmp, NULL, 10, &maxvcpus) < 0) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("maximum vcpus count must be an integer"));
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
}
@@ -18867,7 +18401,7 @@ virDomainVcpuParse(virDomainDefPtr def,
if (virStrToLong_ui(tmp, NULL, 10, &vcpus) < 0) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("current vcpus count must be an integer"));
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
} else {
@@ -18881,7 +18415,7 @@ virDomainVcpuParse(virDomainDefPtr def,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Unsupported CPU placement mode
'%s'"),
tmp);
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
} else {
@@ -18892,12 +18426,12 @@ virDomainVcpuParse(virDomainDefPtr def,
tmp = virXMLPropString(vcpuNode, "cpuset");
if (tmp) {
if (virBitmapParse(tmp, &def->cpumask, VIR_DOMAIN_CPUMASK_LEN)
< 0)
- goto cleanup;
+ return -1;
if (virBitmapIsAllClear(def->cpumask)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Invalid value of 'cpuset': %s"),
tmp);
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
@@ -18906,10 +18440,10 @@ virDomainVcpuParse(virDomainDefPtr def,
}
if (virDomainDefSetVcpusMax(def, maxvcpus, xmlopt) < 0)
- goto cleanup;
+ return -1;
if ((n = virXPathNodeSet("./vcpus/vcpu", ctxt, &nodes)) < 0)
- goto cleanup;
+ return -1;
if (n) {
/* if individual vcpu states are provided take them as master */
@@ -18925,7 +18459,7 @@ virDomainVcpuParse(virDomainDefPtr def,
virStrToLong_uip(tmp, NULL, 10, &id) < 0) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("missing or invalid vcpu id"));
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
@@ -18934,7 +18468,7 @@ virDomainVcpuParse(virDomainDefPtr def,
virReportError(VIR_ERR_XML_ERROR,
_("vcpu id '%u' is out of range of maximum
"
"vcpu count"), id);
- goto cleanup;
+ return -1;
}
vcpu = virDomainDefGetVcpu(def, id);
@@ -18942,13 +18476,13 @@ virDomainVcpuParse(virDomainDefPtr def,
if (!(tmp = virXMLPropString(nodes[i], "enabled"))) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("missing vcpu enabled state"));
- goto cleanup;
+ return -1;
}
if ((state = virTristateBoolTypeFromString(tmp)) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("invalid vcpu 'enabled' value
'%s'"), tmp);
- goto cleanup;
+ return -1;
}
VIR_FREE(tmp);
@@ -18959,7 +18493,7 @@ virDomainVcpuParse(virDomainDefPtr def,
if ((hotpluggable = virTristateBoolTypeFromString(tmp)) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("invalid vcpu 'hotpluggable' value
'%s'"), tmp);
- goto cleanup;
+ return -1;
}
vcpu->hotpluggable = hotpluggable;
VIR_FREE(tmp);
@@ -18969,7 +18503,7 @@ virDomainVcpuParse(virDomainDefPtr def,
if (virStrToLong_uip(tmp, NULL, 10, &order) < 0) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("invalid vcpu order"));
- goto cleanup;
+ return -1;
}
vcpu->order = order;
VIR_FREE(tmp);
@@ -18977,16 +18511,10 @@ virDomainVcpuParse(virDomainDefPtr def,
}
} else {
if (virDomainDefSetVcpus(def, vcpus) < 0)
- goto cleanup;
+ return -1;
}
- ret = 0;
-
- cleanup:
- VIR_FREE(nodes);
- VIR_FREE(tmp);
-
- return ret;
+ return 0;
}
@@ -18994,12 +18522,11 @@ static int
virDomainDefParseBootOptions(virDomainDefPtr def,
xmlXPathContextPtr ctxt)
{
- xmlNodePtr *nodes = NULL;
- char *tmp = NULL;
char *name = NULL;
- int ret = -1;
size_t i;
int n;
+ VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
+ VIR_AUTOFREE(char *) tmp = NULL;
/*
* Booting options for different OS types....
@@ -19018,34 +18545,34 @@ virDomainDefParseBootOptions(virDomainDefPtr def,
def->os.initgroup = virXPathString("string(./os/initgroup[1])",
ctxt);
if ((n = virXPathNodeSet("./os/initarg", ctxt, &nodes)) < 0)
- goto error;
+ return -1;
if (VIR_ALLOC_N(def->os.initargv, n+1) < 0)
- goto error;
+ return -1;
for (i = 0; i < n; i++) {
if (!nodes[i]->children ||
!nodes[i]->children->content) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("No data supplied for <initarg>
element"));
- goto error;
+ return -1;
}
if (VIR_STRDUP(def->os.initargv[i],
(const char*) nodes[i]->children->content) < 0)
- goto error;
+ return -1;
}
def->os.initargv[n] = NULL;
VIR_FREE(nodes);
if ((n = virXPathNodeSet("./os/initenv", ctxt, &nodes)) < 0)
- goto error;
+ return -1;
if (VIR_ALLOC_N(def->os.initenv, n+1) < 0)
- goto error;
+ return -1;
for (i = 0; i < n; i++) {
if (!(name = virXMLPropString(nodes[i], "name"))) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("No name supplied for <initenv>
element"));
- goto error;
+ return -1;
}
if (!nodes[i]->children ||
@@ -19053,16 +18580,16 @@ virDomainDefParseBootOptions(virDomainDefPtr def,
virReportError(VIR_ERR_XML_ERROR,
_("No value supplied for <initenv
name='%s'> element"),
name);
- goto error;
+ return -1;
}
if (VIR_ALLOC(def->os.initenv[i]) < 0)
- goto error;
+ return -1;
def->os.initenv[i]->name = name;
if (VIR_STRDUP(def->os.initenv[i]->value,
(const char*) nodes[i]->children->content) < 0)
- goto error;
+ return -1;
}
def->os.initenv[n] = NULL;
VIR_FREE(nodes);
@@ -19081,10 +18608,10 @@ virDomainDefParseBootOptions(virDomainDefPtr def,
def->os.root = virXPathString("string(./os/root[1])", ctxt);
if ((loader_node = virXPathNode("./os/loader[1]", ctxt))) {
if (VIR_ALLOC(def->os.loader) < 0)
- goto error;
+ return -1;
if (virDomainLoaderDefParseXML(loader_node, def->os.loader) < 0)
- goto error;
+ return -1;
def->os.loader->nvram =
virXPathString("string(./os/nvram[1])", ctxt);
def->os.loader->templt =
virXPathString("string(./os/nvram[1]/@template)", ctxt);
@@ -19093,12 +18620,12 @@ virDomainDefParseBootOptions(virDomainDefPtr def,
if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) {
if ((n = virXPathNodeSet("./os/acpi/table", ctxt, &nodes)) < 0)
- goto error;
+ return -1;
if (n > 1) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("Only one acpi table is supported"));
- goto error;
+ return -1;
}
if (n == 1) {
@@ -19107,32 +18634,26 @@ virDomainDefParseBootOptions(virDomainDefPtr def,
if (!tmp) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("Missing acpi table type"));
- goto error;
+ return -1;
}
if (STREQ_NULLABLE(tmp, "slic")) {
VIR_FREE(tmp);
tmp = virXMLNodeContentString(nodes[0]);
def->os.slic_table = virFileSanitizePath(tmp);
- VIR_FREE(tmp);
} else {
virReportError(VIR_ERR_XML_ERROR,
_("Unknown acpi table type: %s"),
tmp);
- goto error;
+ return -1;
}
}
if (virDomainDefParseBootXML(ctxt, def) < 0)
- goto error;
+ return -1;
}
- ret = 0;
-
- error:
- VIR_FREE(nodes);
- VIR_FREE(tmp);
- return ret;
+ return 0;
}
@@ -19141,30 +18662,26 @@ virDomainResctrlParseVcpus(virDomainDefPtr def,
xmlNodePtr node,
virBitmapPtr *vcpus)
{
- char *vcpus_str = NULL;
- int ret = -1;
+ VIR_AUTOFREE(char *) vcpus_str = NULL;
vcpus_str = virXMLPropString(node, "vcpus");
if (!vcpus_str) {
virReportError(VIR_ERR_XML_ERROR, _("Missing %s attribute
'vcpus'"),
node->name);
- goto cleanup;
+ return -1;
}
if (virBitmapParse(vcpus_str, vcpus, VIR_DOMAIN_CPUMASK_LEN) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("Invalid %s attribute 'vcpus' value
'%s'"),
node->name, vcpus_str);
- goto cleanup;
+ return -1;
}
/* We need to limit the bitmap to number of vCPUs. If there's nothing left,
* then we can just clean up and return 0 immediately */
virBitmapShrink(*vcpus, def->maxvcpus);
- ret = 0;
- cleanup:
- VIR_FREE(vcpus_str);
- return ret;
+ return 0;
}
@@ -19203,8 +18720,8 @@ virDomainCachetuneDefParseCache(xmlXPathContextPtr ctxt,
unsigned int cache;
int type;
unsigned long long size;
- char *tmp = NULL;
int ret = -1;
+ VIR_AUTOFREE(char *) tmp = NULL;
ctxt->node = node;
@@ -19249,7 +18766,6 @@ virDomainCachetuneDefParseCache(xmlXPathContextPtr ctxt,
tmp);
goto cleanup;
}
- VIR_FREE(tmp);
if (virDomainParseScaledValue("./@size", "./@unit",
ctxt, &size, 1024,
@@ -19262,7 +18778,6 @@ virDomainCachetuneDefParseCache(xmlXPathContextPtr ctxt,
ret = 0;
cleanup:
ctxt->node = oldnode;
- VIR_FREE(tmp);
return ret;
}
@@ -19335,14 +18850,14 @@ virDomainResctrlMonDefParse(virDomainDefPtr def,
{
virDomainResctrlMonDefPtr domresmon = NULL;
xmlNodePtr oldnode = ctxt->node;
- xmlNodePtr *nodes = NULL;
unsigned int level = 0;
- char *tmp = NULL;
- char *id = NULL;
size_t i = 0;
int n = 0;
int rv = -1;
int ret = -1;
+ VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
+ VIR_AUTOFREE(char *) tmp = NULL;
+ VIR_AUTOFREE(char *) id = NULL;
ctxt->node = node;
@@ -19430,9 +18945,6 @@ virDomainResctrlMonDefParse(virDomainDefPtr def,
ret = 0;
cleanup:
ctxt->node = oldnode;
- VIR_FREE(id);
- VIR_FREE(tmp);
- VIR_FREE(nodes);
virDomainResctrlMonDefFree(domresmon);
return ret;
}
@@ -19444,10 +18956,10 @@ virDomainResctrlNew(xmlNodePtr node,
virBitmapPtr vcpus,
unsigned int flags)
{
- char *vcpus_str = NULL;
- char *alloc_id = NULL;
virDomainResctrlDefPtr resctrl = NULL;
virDomainResctrlDefPtr ret = NULL;
+ VIR_AUTOFREE(char *) vcpus_str = NULL;
+ VIR_AUTOFREE(char *) alloc_id = NULL;
/* We need to format it back because we need to be consistent in the naming
* even when users specify some "sub-optimal" string there. */
@@ -19485,8 +18997,6 @@ virDomainResctrlNew(xmlNodePtr node,
VIR_STEAL_PTR(ret, resctrl);
cleanup:
virDomainResctrlDefFree(resctrl);
- VIR_FREE(alloc_id);
- VIR_FREE(vcpus_str);
return ret;
}
@@ -19498,13 +19008,13 @@ virDomainCachetuneDefParse(virDomainDefPtr def,
unsigned int flags)
{
xmlNodePtr oldnode = ctxt->node;
- xmlNodePtr *nodes = NULL;
virResctrlAllocPtr alloc = NULL;
virDomainResctrlDefPtr resctrl = NULL;
ssize_t i = 0;
int n;
int ret = -1;
VIR_AUTOPTR(virBitmap) vcpus = NULL;
+ VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
ctxt->node = node;
@@ -19564,7 +19074,6 @@ virDomainCachetuneDefParse(virDomainDefPtr def,
ctxt->node = oldnode;
virDomainResctrlDefFree(resctrl);
virObjectUnref(alloc);
- VIR_FREE(nodes);
return ret;
}
@@ -19575,11 +19084,10 @@ virDomainDefParseCaps(virDomainDefPtr def,
virCapsPtr caps,
unsigned int flags)
{
- int ret = -1;
- char *virttype = NULL;
- char *arch = NULL;
- char *ostype = NULL;
- virCapsDomainDataPtr capsdata = NULL;
+ VIR_AUTOFREE(char *) virttype = NULL;
+ VIR_AUTOFREE(char *) arch = NULL;
+ VIR_AUTOFREE(char *) ostype = NULL;
+ VIR_AUTOFREE(virCapsDomainDataPtr) capsdata = NULL;
virttype = virXPathString("string(./@type)", ctxt);
ostype = virXPathString("string(./os/type[1])", ctxt);
@@ -19593,12 +19101,12 @@ virDomainDefParseCaps(virDomainDefPtr def,
if (!virttype) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("missing domain type attribute"));
- goto cleanup;
+ return -1;
}
if ((def->virtType = virDomainVirtTypeFromString(virttype)) < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("invalid domain type %s"), virttype);
- goto cleanup;
+ return -1;
}
if (!ostype) {
@@ -19607,13 +19115,13 @@ virDomainDefParseCaps(virDomainDefPtr def,
} else {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("an os <type> must be specified"));
- goto cleanup;
+ return -1;
}
} else {
if ((def->os.type = virDomainOSTypeFromString(ostype)) < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown OS type '%s'"), ostype);
- goto cleanup;
+ return -1;
}
}
@@ -19630,7 +19138,7 @@ virDomainDefParseCaps(virDomainDefPtr def,
if (arch && !(def->os.arch = virArchFromString(arch))) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Unknown architecture %s"), arch);
- goto cleanup;
+ return -1;
}
if (!(capsdata = virCapabilitiesDomainDataLookup(caps, def->os.type,
@@ -19638,23 +19146,17 @@ virDomainDefParseCaps(virDomainDefPtr def,
def->virtType,
NULL, NULL))) {
if (!(flags & VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE))
- goto cleanup;
+ return -1;
virResetLastError();
} else {
if (!def->os.arch)
def->os.arch = capsdata->arch;
if ((!def->os.machine &&
VIR_STRDUP(def->os.machine, capsdata->machinetype) < 0))
- goto cleanup;
+ return -1;
}
- ret = 0;
- cleanup:
- VIR_FREE(virttype);
- VIR_FREE(ostype);
- VIR_FREE(arch);
- VIR_FREE(capsdata);
- return ret;
+ return 0;
}
@@ -19666,8 +19168,8 @@ virDomainMemorytuneDefParseMemory(xmlXPathContextPtr ctxt,
xmlNodePtr oldnode = ctxt->node;
unsigned int id;
unsigned int bandwidth;
- char *tmp = NULL;
int ret = -1;
+ VIR_AUTOFREE(char *) tmp = NULL;
ctxt->node = node;
@@ -19697,14 +19199,12 @@ virDomainMemorytuneDefParseMemory(xmlXPathContextPtr ctxt,
tmp);
goto cleanup;
}
- VIR_FREE(tmp);
if (virResctrlAllocSetMemoryBandwidth(alloc, id, bandwidth) < 0)
goto cleanup;
ret = 0;
cleanup:
ctxt->node = oldnode;
- VIR_FREE(tmp);
return ret;
}
@@ -19716,10 +19216,10 @@ virDomainMemorytuneDefParse(virDomainDefPtr def,
unsigned int flags)
{
xmlNodePtr oldnode = ctxt->node;
- xmlNodePtr *nodes = NULL;
virResctrlAllocPtr alloc = NULL;
virDomainResctrlDefPtr resctrl = NULL;
VIR_AUTOPTR(virBitmap) vcpus = NULL;
+ VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
ssize_t i = 0;
int n;
@@ -19778,7 +19278,6 @@ virDomainMemorytuneDefParse(virDomainDefPtr def,
ctxt->node = oldnode;
virDomainResctrlDefFree(resctrl);
virObjectUnref(alloc);
- VIR_FREE(nodes);
return ret;
}
@@ -19791,8 +19290,7 @@ virDomainDefParseXML(xmlDocPtr xml,
virDomainXMLOptionPtr xmlopt,
unsigned int flags)
{
- xmlNodePtr *nodes = NULL, node = NULL;
- char *tmp = NULL;
+ xmlNodePtr node = NULL;
size_t i, j;
int n, gic_version;
long id = -1;
@@ -19802,18 +19300,19 @@ virDomainDefParseXML(xmlDocPtr xml,
bool usb_other = false;
bool usb_master = false;
char *netprefix = NULL;
+ VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
+ VIR_AUTOFREE(char *) tmp = NULL;
if (flags & VIR_DOMAIN_DEF_PARSE_VALIDATE_SCHEMA) {
- char *schema = virFileFindResource("domain.rng",
- abs_topsrcdir "/docs/schemas",
- PKGDATADIR "/schemas");
+ VIR_AUTOFREE(char *) schema = NULL;
+
+ schema = virFileFindResource("domain.rng",
+ abs_topsrcdir "/docs/schemas",
+ PKGDATADIR "/schemas");
if (!schema)
return NULL;
- if (virXMLValidateAgainstSchema(schema, xml) < 0) {
- VIR_FREE(schema);
+ if (virXMLValidateAgainstSchema(schema, xml) < 0)
return NULL;
- }
- VIR_FREE(schema);
}
if (!(def = virDomainDefNew()))
@@ -21439,7 +20938,6 @@ virDomainDefParseXML(xmlDocPtr xml,
def->idmap.ngidmap = n;
}
- VIR_FREE(nodes);
if ((def->idmap.uidmap && !def->idmap.gidmap) ||
(!def->idmap.uidmap && def->idmap.gidmap)) {
@@ -21468,7 +20966,6 @@ virDomainDefParseXML(xmlDocPtr xml,
goto error;
}
def->os.smbios_mode = mode;
- VIR_FREE(tmp);
}
if (virDomainKeyWrapDefParseXML(def, ctxt) < 0)
@@ -21490,8 +20987,6 @@ virDomainDefParseXML(xmlDocPtr xml,
return def;
error:
- VIR_FREE(tmp);
- VIR_FREE(nodes);
virDomainDefFree(def);
return NULL;
}
@@ -21504,17 +20999,17 @@ virDomainObjParseXML(xmlDocPtr xml,
virDomainXMLOptionPtr xmlopt,
unsigned int flags)
{
- char *tmp = NULL;
long val;
xmlNodePtr config;
xmlNodePtr oldnode;
virDomainObjPtr obj;
- xmlNodePtr *nodes = NULL;
size_t i;
int n;
int state;
int reason = 0;
void *parseOpaque = NULL;
+ VIR_AUTOFREE(char *) tmp = NULL;
+ VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
if (!(obj = virDomainObjNew(xmlopt)))
return NULL;
@@ -21540,7 +21035,6 @@ virDomainObjParseXML(xmlDocPtr xml,
if ((state = virDomainStateTypeFromString(tmp)) < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("invalid domain state '%s'"), tmp);
- VIR_FREE(tmp);
goto error;
}
VIR_FREE(tmp);
@@ -21549,10 +21043,8 @@ virDomainObjParseXML(xmlDocPtr xml,
if ((reason = virDomainStateReasonFromString(state, tmp)) < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("invalid domain state reason '%s'"),
tmp);
- VIR_FREE(tmp);
goto error;
}
- VIR_FREE(tmp);
}
virDomainObjSetState(obj, state, reason);
@@ -21580,7 +21072,6 @@ virDomainObjParseXML(xmlDocPtr xml,
virDomainObjTaint(obj, flag);
}
}
- VIR_FREE(nodes);
if (xmlopt->privateData.parse &&
xmlopt->privateData.parse(ctxt, obj, &xmlopt->config) < 0)
@@ -21601,7 +21092,6 @@ virDomainObjParseXML(xmlDocPtr xml,
error:
virObjectUnref(obj);
- VIR_FREE(nodes);
return NULL;
}
@@ -23135,8 +22625,8 @@ virDomainDefCheckABIStabilityFlags(virDomainDefPtr src,
{
size_t i;
virErrorPtr err;
- char *strSrc;
- char *strDst;
+ VIR_AUTOFREE(char *) strSrc = NULL;
+ VIR_AUTOFREE(char *) strDst = NULL;
if (src->virtType != dst->virtType) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
@@ -23605,8 +23095,6 @@ virDomainDefCheckABIStabilityFlags(virDomainDefPtr src,
strDst = virDomainDefFormat(dst, NULL, 0);
VIR_DEBUG("XMLs that failed stability check were: src=\"%s\",
dst=\"%s\"",
NULLSTR(strSrc), NULLSTR(strDst));
- VIR_FREE(strSrc);
- VIR_FREE(strDst);
if (err) {
virSetError(err);
@@ -24066,7 +23554,7 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
unsigned int flags)
{
size_t n;
- char *path = NULL;
+ VIR_AUTOFREE(char *) path = NULL;
virBufferAsprintf(attrBuf, " protocol='%s'",
virStorageNetProtocolTypeToString(src->protocol));
@@ -24078,8 +23566,6 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
virBufferEscapeString(attrBuf, " name='%s'", path ? path :
src->path);
- VIR_FREE(path);
-
if (src->haveTLS != VIR_TRISTATE_BOOL_ABSENT &&
!(flags & VIR_DOMAIN_DEF_FORMAT_MIGRATABLE &&
src->tlsFromConfig))
@@ -26514,8 +26000,7 @@ static int
virDomainMemorySourceDefFormat(virBufferPtr buf,
virDomainMemoryDefPtr def)
{
- char *bitmap = NULL;
- int ret = -1;
+ VIR_AUTOFREE(char *) bitmap = NULL;
if (!def->pagesize && !def->sourceNodes &&
!def->nvdimmPath)
return 0;
@@ -26527,7 +26012,7 @@ virDomainMemorySourceDefFormat(virBufferPtr buf,
case VIR_DOMAIN_MEMORY_MODEL_DIMM:
if (def->sourceNodes) {
if (!(bitmap = virBitmapFormat(def->sourceNodes)))
- goto cleanup;
+ return -1;
virBufferAsprintf(buf, "<nodemask>%s</nodemask>\n",
bitmap);
}
@@ -26556,11 +26041,7 @@ virDomainMemorySourceDefFormat(virBufferPtr buf,
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</source>\n");
- ret = 0;
-
- cleanup:
- VIR_FREE(bitmap);
- return ret;
+ return 0;
}
@@ -27710,7 +27191,7 @@ virDomainResctrlMonDefFormatHelper(virDomainResctrlMonDefPtr
domresmon,
virResctrlMonitorType tag,
virBufferPtr buf)
{
- char *vcpus = NULL;
+ VIR_AUTOFREE(char *) vcpus = NULL;
if (domresmon->tag != tag)
return 0;
@@ -27728,7 +27209,6 @@ virDomainResctrlMonDefFormatHelper(virDomainResctrlMonDefPtr
domresmon,
virBufferAsprintf(buf, "vcpus='%s'/>\n", vcpus);
- VIR_FREE(vcpus);
return 0;
}
@@ -27739,9 +27219,9 @@ virDomainCachetuneDefFormat(virBufferPtr buf,
unsigned int flags)
{
virBuffer childrenBuf = VIR_BUFFER_INITIALIZER;
- char *vcpus = NULL;
size_t i = 0;
int ret = -1;
+ VIR_AUTOFREE(char *) vcpus = NULL;
virBufferSetChildIndent(&childrenBuf, buf);
if (virResctrlAllocForeachCache(resctrl->alloc,
@@ -27785,7 +27265,6 @@ virDomainCachetuneDefFormat(virBufferPtr buf,
ret = 0;
cleanup:
virBufferFreeAndReset(&childrenBuf);
- VIR_FREE(vcpus);
return ret;
}
@@ -27810,8 +27289,8 @@ virDomainMemorytuneDefFormat(virBufferPtr buf,
unsigned int flags)
{
virBuffer childrenBuf = VIR_BUFFER_INITIALIZER;
- char *vcpus = NULL;
int ret = -1;
+ VIR_AUTOFREE(char *) vcpus = NULL;
virBufferSetChildIndent(&childrenBuf, buf);
if (virResctrlAllocForeachMemory(resctrl->alloc,
@@ -27848,7 +27327,6 @@ virDomainMemorytuneDefFormat(virBufferPtr buf,
ret = 0;
cleanup:
virBufferFreeAndReset(&childrenBuf);
- VIR_FREE(vcpus);
return ret;
}
@@ -27983,8 +27461,7 @@ virDomainCpuDefFormat(virBufferPtr buf,
{
virDomainVcpuDefPtr vcpu;
size_t i;
- char *cpumask = NULL;
- int ret = -1;
+ VIR_AUTOFREE(char *) cpumask = NULL;
virBufferAddLit(buf, "<vcpu");
virBufferAsprintf(buf, " placement='%s'",
@@ -27992,7 +27469,7 @@ virDomainCpuDefFormat(virBufferPtr buf,
if (def->cpumask && !virBitmapIsAllSet(def->cpumask)) {
if ((cpumask = virBitmapFormat(def->cpumask)) == NULL)
- goto cleanup;
+ return -1;
virBufferAsprintf(buf, " cpuset='%s'", cpumask);
}
if (virDomainDefHasVcpusOffline(def))
@@ -28020,12 +27497,7 @@ virDomainCpuDefFormat(virBufferPtr buf,
virBufferAddLit(buf, "</vcpus>\n");
}
- ret = 0;
-
- cleanup:
- VIR_FREE(cpumask);
-
- return ret;
+ return 0;
}
@@ -29221,30 +28693,25 @@ virDomainSaveXML(const char *configDir,
const char *xml)
{
char uuidstr[VIR_UUID_STRING_BUFLEN];
- char *configFile = NULL;
- int ret = -1;
+ VIR_AUTOFREE(char *) configFile = NULL;
if (!configDir)
return 0;
if ((configFile = virDomainConfigFile(configDir, def->name)) == NULL)
- goto cleanup;
+ return -1;
if (virFileMakePath(configDir) < 0) {
virReportSystemError(errno,
_("cannot create config directory '%s'"),
configDir);
- goto cleanup;
+ return -1;
}
virUUIDFormat(def->uuid, uuidstr);
- ret = virXMLSaveFile(configFile,
- virXMLPickShellSafeComment(def->name, uuidstr),
"edit",
- xml);
-
- cleanup:
- VIR_FREE(configFile);
- return ret;
+ return virXMLSaveFile(configFile,
+ virXMLPickShellSafeComment(def->name, uuidstr),
"edit",
+ xml);
}
int
@@ -29252,19 +28719,12 @@ virDomainSaveConfig(const char *configDir,
virCapsPtr caps,
virDomainDefPtr def)
{
- int ret = -1;
- char *xml;
+ VIR_AUTOFREE(char *) xml = NULL;
if (!(xml = virDomainDefFormat(def, caps, VIR_DOMAIN_DEF_FORMAT_SECURE)))
- goto cleanup;
-
- if (virDomainSaveXML(configDir, def, xml))
- goto cleanup;
+ return -1;
- ret = 0;
- cleanup:
- VIR_FREE(xml);
- return ret;
+ return virDomainSaveXML(configDir, def, xml);
}
int
@@ -29279,19 +28739,12 @@ virDomainSaveStatus(virDomainXMLOptionPtr xmlopt,
VIR_DOMAIN_DEF_FORMAT_PCI_ORIG_STATES |
VIR_DOMAIN_DEF_FORMAT_CLOCK_ADJUST);
- int ret = -1;
- char *xml;
+ VIR_AUTOFREE(char *) xml = NULL;
if (!(xml = virDomainObjFormat(xmlopt, obj, caps, flags)))
- goto cleanup;
-
- if (virDomainSaveXML(statusDir, obj->def, xml))
- goto cleanup;
+ return -1;
- ret = 0;
- cleanup:
- VIR_FREE(xml);
- return ret;
+ return virDomainSaveXML(statusDir, obj->def, xml);
}
@@ -29300,14 +28753,14 @@ virDomainDeleteConfig(const char *configDir,
const char *autostartDir,
virDomainObjPtr dom)
{
- char *configFile = NULL, *autostartLink = NULL;
- int ret = -1;
+ VIR_AUTOFREE(char *) configFile = NULL;
+ VIR_AUTOFREE(char *) autostartLink = NULL;
if ((configFile = virDomainConfigFile(configDir, dom->def->name)) == NULL)
- goto cleanup;
+ return -1;
if ((autostartLink = virDomainConfigFile(autostartDir,
dom->def->name)) == NULL)
- goto cleanup;
+ return -1;
/* Not fatal if this doesn't work */
unlink(autostartLink);
@@ -29318,15 +28771,10 @@ virDomainDeleteConfig(const char *configDir,
virReportSystemError(errno,
_("cannot remove config %s"),
configFile);
- goto cleanup;
+ return -1;
}
- ret = 0;
-
- cleanup:
- VIR_FREE(configFile);
- VIR_FREE(autostartLink);
- return ret;
+ return 0;
}
char
@@ -29588,20 +29036,19 @@ virDomainDiskDefForeachPath(virDomainDiskDefPtr disk,
virDomainDiskDefPathIterator iter,
void *opaque)
{
- int ret = -1;
size_t depth = 0;
virStorageSourcePtr tmp;
- char *brokenRaw = NULL;
+ VIR_AUTOFREE(char *) brokenRaw = NULL;
if (!ignoreOpenFailure) {
if (virStorageFileChainGetBroken(disk->src, &brokenRaw) < 0)
- goto cleanup;
+ return -1;
if (brokenRaw) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unable to visit backing chain file %s"),
brokenRaw);
- goto cleanup;
+ return -1;
}
}
@@ -29610,17 +29057,13 @@ virDomainDiskDefForeachPath(virDomainDiskDefPtr disk,
if (virStorageSourceIsLocalStorage(tmp) &&
tmp->path) {
if (iter(disk, tmp->path, depth, opaque) < 0)
- goto cleanup;
+ return -1;
}
depth++;
}
- ret = 0;
-
- cleanup:
- VIR_FREE(brokenRaw);
- return ret;
+ return 0;
}
@@ -29635,11 +29078,10 @@ virDomainDefCopy(virDomainDefPtr src,
void *parseOpaque,
bool migratable)
{
- char *xml;
- virDomainDefPtr ret;
unsigned int format_flags = VIR_DOMAIN_DEF_FORMAT_SECURE;
unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE;
+ VIR_AUTOFREE(char *) xml = NULL;
if (migratable)
format_flags |= VIR_DOMAIN_DEF_FORMAT_INACTIVE |
VIR_DOMAIN_DEF_FORMAT_MIGRATABLE;
@@ -29648,10 +29090,7 @@ virDomainDefCopy(virDomainDefPtr src,
if (!(xml = virDomainDefFormat(src, caps, format_flags)))
return NULL;
- ret = virDomainDefParseString(xml, caps, xmlopt, parseOpaque, parse_flags);
-
- VIR_FREE(xml);
- return ret;
+ return virDomainDefParseString(xml, caps, xmlopt, parseOpaque, parse_flags);
}
virDomainDefPtr
@@ -30075,12 +29514,11 @@ virDomainDeviceDefCopy(virDomainDeviceDefPtr src,
virCapsPtr caps,
virDomainXMLOptionPtr xmlopt)
{
- virDomainDeviceDefPtr ret = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
int flags = VIR_DOMAIN_DEF_FORMAT_INACTIVE | VIR_DOMAIN_DEF_FORMAT_SECURE;
- char *xmlStr = NULL;
int rc = -1;
char *netprefix;
+ VIR_AUTOFREE(char *) xmlStr = NULL;
switch ((virDomainDeviceType) src->type) {
case VIR_DOMAIN_DEVICE_DISK:
@@ -30155,20 +29593,16 @@ virDomainDeviceDefCopy(virDomainDeviceDefPtr src,
_("Copying definition of '%d' type "
"is not implemented yet."),
src->type);
- goto cleanup;
+ return NULL;
}
if (rc < 0)
- goto cleanup;
+ return NULL;
xmlStr = virBufferContentAndReset(&buf);
- ret = virDomainDeviceDefParse(xmlStr, def, caps, xmlopt,
- VIR_DOMAIN_DEF_PARSE_INACTIVE |
- VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE);
-
- cleanup:
- VIR_FREE(xmlStr);
- return ret;
+ return virDomainDeviceDefParse(xmlStr, def, caps, xmlopt,
+ VIR_DOMAIN_DEF_PARSE_INACTIVE |
+ VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE);
}
@@ -30498,8 +29932,8 @@ virDomainDefGetShortName(const virDomainDef *def)
{
wchar_t wshortname[VIR_DOMAIN_SHORT_NAME_MAX + 1] = {0};
size_t len = 0;
- char *shortname = NULL;
char *ret = NULL;
+ VIR_AUTOFREE(char *) shortname = NULL;
/* No need to do the whole conversion thing when there are no multibyte
* characters. The same applies for illegal sequences as they can occur
@@ -30541,12 +29975,10 @@ virDomainDefGetShortName(const virDomainDef *def)
virReportSystemError(errno, "%s",
_("Cannot convert wide character string "
"back to multi-byte domain name"));
- goto cleanup;
+ return NULL;
}
ignore_value(virAsprintf(&ret, "%d-%s", def->id, shortname));
- cleanup:
- VIR_FREE(shortname);
return ret;
}
@@ -30825,9 +30257,9 @@ virDomainNetResolveActualType(virDomainNetDefPtr iface)
{
virConnectPtr conn = NULL;
virNetworkPtr net = NULL;
- char *xml = NULL;
virNetworkDefPtr def = NULL;
int ret = -1;
+ VIR_AUTOFREE(char *) xml = NULL;
if (iface->type != VIR_DOMAIN_NET_TYPE_NETWORK)
return iface->type;
@@ -30894,7 +30326,6 @@ virDomainNetResolveActualType(virDomainNetDefPtr iface)
cleanup:
virNetworkDefFree(def);
- VIR_FREE(xml);
virObjectUnref(conn);
virObjectUnref(net);
return ret;
@@ -31023,10 +30454,10 @@ virDomainDiskTranslateSourcePool(virDomainDiskDefPtr def)
virConnectPtr conn = NULL;
virStoragePoolPtr pool = NULL;
virStorageVolPtr vol = NULL;
- char *poolxml = NULL;
virStorageVolInfo info;
int ret = -1;
VIR_AUTOPTR(virStoragePoolDef) pooldef = NULL;
+ VIR_AUTOFREE(char *) poolxml = NULL;
if (def->src->type != VIR_STORAGE_TYPE_VOLUME)
return 0;
@@ -31184,7 +30615,6 @@ virDomainDiskTranslateSourcePool(virDomainDiskDefPtr def)
virObjectUnref(conn);
virObjectUnref(pool);
virObjectUnref(vol);
- VIR_FREE(poolxml);
return ret;
}
--
2.20.1