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",
ret = 0;
cleanup:
- VIR_FREE(name);
- VIR_FREE(state);
return ret;
}
{
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;
cleanup:
if (ret < 0)
VIR_FREE(def->keywrap);
- VIR_FREE(nodes);
return ret;
}
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;
ret = 0;
cleanup:
- VIR_FREE(str);
return ret;
}
virDomainBlkioDeviceParseXML(xmlNodePtr root,
virBlkioDevicePtr dev)
{
- char *c = NULL;
xmlNodePtr node;
+ VIR_AUTOFREE(char *) c = NULL;
node = root->children;
while (node) {
return 0;
error:
- VIR_FREE(c);
VIR_FREE(dev->path);
return -1;
}
void *data)
{
virHashTablePtr bootHash = data;
- char *order = NULL;
int ret = -1;
+ VIR_AUTOFREE(char *) order = NULL;
if (info->bootIndex == 0)
return 0;
ret = 0;
cleanup:
- VIR_FREE(order);
return ret;
}
virDomainDeviceUSBMasterParseXML(xmlNodePtr node,
virDomainDeviceUSBMasterPtr master)
{
- char *startport;
int ret = -1;
+ VIR_AUTOFREE(char *) startport = NULL;
memset(master, 0, sizeof(*master));
ret = 0;
cleanup:
- VIR_FREE(startport);
return ret;
}
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,
ret = 0;
cleanup:
- VIR_FREE(order);
- VIR_FREE(loadparm);
return ret;
}
virDomainDeviceISAAddressPtr addr)
{
int ret = -1;
- char *iobase;
- char *irq;
+ VIR_AUTOFREE(char *) iobase = NULL;
+ VIR_AUTOFREE(char *) irq = NULL;
memset(addr, 0, sizeof(*addr));
ret = 0;
cleanup:
- VIR_FREE(iobase);
- VIR_FREE(irq);
return ret;
}
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) {
_("invalid dimm base address '%s'"), tmp);
goto cleanup;
}
-
- VIR_FREE(tmp);
}
ret = 0;
cleanup:
- VIR_FREE(tmp);
-
return ret;
}
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) {
ret = 0;
cleanup:
- VIR_FREE(type);
return ret;
}
xmlNodePtr alias = NULL;
xmlNodePtr boot = NULL;
xmlNodePtr rom = NULL;
- char *romenabled = NULL;
- char *rombar = NULL;
- char *aliasStr = NULL;
int ret = -1;
+ VIR_AUTOFREE(char *) romenabled = NULL;
+ VIR_AUTOFREE(char *) rombar = NULL;
+ VIR_AUTOFREE(char *) aliasStr = NULL;
virDomainDeviceInfoClear(info);
cleanup:
if (ret < 0)
virDomainDeviceInfoClear(info);
- VIR_FREE(rombar);
- VIR_FREE(romenabled);
- VIR_FREE(aliasStr);
return ret;
}
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 =
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
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;
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"));
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"));
} 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;
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;
cleanup:
virStorageNetHostDefClear(&host);
- VIR_FREE(transport);
- VIR_FREE(port);
return ret;
}
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) {
ret = 0;
cleanup:
- VIR_FREE(bus);
- VIR_FREE(target);
- VIR_FREE(unit);
return ret;
}
virDomainHostdevSubsysSCSIPtr scsisrc,
xmlXPathContextPtr ctxt)
{
- char *protocol = NULL;
int ret = -1;
+ VIR_AUTOFREE(char *) protocol = NULL;
if ((protocol = virXMLPropString(sourcenode, "protocol"))) {
scsisrc->protocol =
ret = virDomainHostdevSubsysSCSIHostDefParseXML(sourcenode, scsisrc);
cleanup:
- VIR_FREE(protocol);
return ret;
}
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",
ret = 0;
cleanup:
- VIR_FREE(wwpn);
- VIR_FREE(protocol);
return ret;
}
{
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",
virUUIDFormat(uuid, mdevsrc->uuidstr);
ret = 0;
cleanup:
- VIR_FREE(uuidxml);
return ret;
}
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
ret = 0;
cleanup:
- VIR_FREE(managed);
- VIR_FREE(sgio);
- VIR_FREE(rawio);
- VIR_FREE(backendStr);
- VIR_FREE(model);
- VIR_FREE(display);
return ret;
}
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",
VIR_STEAL_PTR(ret, ip);
cleanup:
- VIR_FREE(prefixStr);
- VIR_FREE(familyStr);
- VIR_FREE(address);
- VIR_FREE(peer);
- VIR_FREE(ip);
return ret;
}
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;
cleanup:
if (ret < 0)
virNetDevIPInfoClear(def);
- VIR_FREE(ip);
virNetDevIPRouteFree(route);
- VIR_FREE(nodes);
return ret;
}
{
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;
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,
ret->rx_max_coalesced_frames = tmp;
cleanup:
- VIR_FREE(str);
ctxt->node = save;
return ret;
{
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)
}
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
virSecurityLabelDefFree(def->seclabels[i - 1]);
VIR_FREE(def->seclabels);
def->nseclabels = 0;
- VIR_FREE(list);
return -1;
}
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;
goto error;
}
}
- VIR_FREE(list);
*nseclabels_rtn = nseclabels;
*seclabels_rtn = seclabels;
for (i = 0; i < nseclabels; i++)
virSecurityDeviceLabelDefFree(seclabels[i]);
VIR_FREE(seclabels);
- VIR_FREE(list);
return -1;
}
{
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;
VIR_STEAL_PTR(def->path, path);
cleanup:
- VIR_FREE(lockspace);
- VIR_FREE(key);
- VIR_FREE(path);
- VIR_FREE(offset);
-
return def;
error:
virDomainDiskSourcePoolDefParse(xmlNodePtr node,
virStorageSourcePoolDefPtr *srcpool)
{
- char *mode = NULL;
virStorageSourcePoolDefPtr source;
int ret = -1;
+ VIR_AUTOFREE(char *) mode = NULL;
*srcpool = NULL;
cleanup:
virStorageSourcePoolDefFree(source);
- VIR_FREE(mode);
return ret;
}
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",
ret = 0;
cleanup:
- VIR_FREE(tlsCfg);
- VIR_FREE(haveTLS);
- VIR_FREE(protocol);
return ret;
}
{
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;
ret = 0;
cleanup:
- VIR_FREE(type);
- VIR_FREE(format);
- VIR_FREE(idx);
ctxt->node = save_ctxt;
return ret;
}
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;
ret = 0;
cleanup:
- VIR_FREE(ready);
- VIR_FREE(blockJob);
- VIR_FREE(mirrorType);
- VIR_FREE(mirrorFormat);
return ret;
}
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) {
tmp);
goto error;
}
- VIR_FREE(tmp);
}
return 0;
error:
- VIR_FREE(tmp);
return -1;
}
virDomainDiskDefDriverParseXML(virDomainDiskDefPtr def,
xmlNodePtr cur)
{
- char *tmp = NULL;
int ret = -1;
+ VIR_AUTOFREE(char *) tmp = NULL;
def->driverName = virXMLPropString(cur, "name");
tmp);
goto cleanup;
}
- VIR_FREE(tmp);
ret = 0;
cleanup:
- VIR_FREE(tmp);
-
return ret;
}
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;
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;
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)
*val = bytes;
ret = 1;
cleanup:
- VIR_FREE(bytes_str);
- VIR_FREE(xpath_full);
- VIR_FREE(unit);
return ret;
}
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;
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: {
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:
{
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;
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:
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;
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) {
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;
{
int ret = -1;
int tmpVal;
- char *tmp = NULL;
xmlNodePtr saveNode = ctxt->node;
xmlNodePtr cur;
+ VIR_AUTOFREE(char *) tmp = NULL;
ctxt->node = node;
tmp);
goto cleanup;
}
- VIR_FREE(tmp);
} else {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("missing timeout for chardev with "
ret = 0;
cleanup:
ctxt->node = saveNode;
- VIR_FREE(tmp);
return ret;
}
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;
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:
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,
ret = 0;
error:
- VIR_FREE(targetType);
- VIR_FREE(targetModel);
- VIR_FREE(addrStr);
- VIR_FREE(portStr);
- VIR_FREE(stateStr);
-
return ret;
}
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;
_("Unknown source mode '%s'"), mode);
}
- VIR_FREE(mode);
return ret;
}
unsigned int flags)
{
int mode;
- char *tmp = NULL;
int tmpVal;
+ VIR_AUTOFREE(char *) tmp = NULL;
if ((mode = virDomainChrSourceDefParseMode(source)) < 0)
goto error;
goto error;
}
def->data.tcp.tlsFromConfig = !!tmpVal;
- VIR_FREE(tmp);
}
if (virDomainChrSourceReconnectDefParseXML(&def->data.tcp.reconnect,
return 0;
error:
- VIR_FREE(tmp);
return -1;
}
virDomainChrSourceDefParseFile(virDomainChrSourceDefPtr def,
xmlNodePtr source)
{
- char *append = NULL;
+ VIR_AUTOFREE(char *) append = NULL;
def->data.file.path = virXMLPropString(source, "path");
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Invalid append attribute value '%s'"),
append);
- VIR_FREE(append);
return -1;
}
- VIR_FREE(append);
return 0;
}
virDomainChrSourceDefParseProtocol(virDomainChrSourceDefPtr def,
xmlNodePtr protocol)
{
- char *prot = NULL;
+ VIR_AUTOFREE(char *) prot = NULL;
if (def->type != VIR_DOMAIN_CHR_TYPE_TCP)
return 0;
virDomainChrTcpProtocolTypeFromString(prot)) < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Unknown protocol '%s'"), prot);
- VIR_FREE(prot);
return -1;
}
- VIR_FREE(prot);
return 0;
}
virDomainChrSourceDefParseLog(virDomainChrSourceDefPtr def,
xmlNodePtr log)
{
- char *append = NULL;
+ VIR_AUTOFREE(char *) append = NULL;
def->logfile = virXMLPropString(log, "file");
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Invalid append attribute value '%s'"),
append);
- VIR_FREE(append);
return -1;
}
- VIR_FREE(append);
return 0;
}
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;
}
cleanup:
- VIR_FREE(type);
-
return def;
error:
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;
}
cleanup:
- VIR_FREE(mode);
- VIR_FREE(type);
-
return def;
error:
xmlXPathContextPtr ctxt,
unsigned int flags)
{
- 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 *) 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;
goto error;
cleanup:
- VIR_FREE(path);
- VIR_FREE(model);
- VIR_FREE(backend);
- VIR_FREE(backends);
- VIR_FREE(version);
ctxt->node = save;
return def;
unsigned int flags)
{
virDomainPanicDefPtr panic;
- char *model = NULL;
+ VIR_AUTOFREE(char *) model = NULL;
if (VIR_ALLOC(panic) < 0)
return NULL;
}
cleanup:
- VIR_FREE(model);
return panic;
error:
{
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;
goto error;
cleanup:
- VIR_FREE(evdev);
- VIR_FREE(type);
- VIR_FREE(bus);
-
ctxt->node = save;
return def;
unsigned int flags)
{
virDomainHubDefPtr def;
- char *type = NULL;
+ VIR_AUTOFREE(char *) type = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
goto error;
cleanup:
- VIR_FREE(type);
-
return def;
error:
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;
}
cleanup:
- VIR_FREE(name);
- VIR_FREE(present);
- VIR_FREE(tickpolicy);
- VIR_FREE(track);
- VIR_FREE(mode);
ctxt->node = oldnode;
return def;
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");
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 */
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 &&
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");
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;
}
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;
def->nListens++;
}
- VIR_FREE(listenNodes);
}
/* If no <listen/> element was found in XML for backward compatibility
ret = 0;
cleanup:
virDomainGraphicsListenDefClear(&newListen);
- VIR_FREE(listenNodes);
- VIR_FREE(socketPath);
ctxt->node = save;
return ret;
}
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;
ret = 0;
cleanup:
- VIR_FREE(port);
- VIR_FREE(autoport);
- VIR_FREE(websocket);
- VIR_FREE(websocketGenerated);
- VIR_FREE(sharePolicy);
return ret;
}
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;
ret = 0;
cleanup:
- VIR_FREE(fullscreen);
- VIR_FREE(enable);
ctxt->node = save;
return ret;
}
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;
ret = 0;
error:
- VIR_FREE(port);
- VIR_FREE(autoport);
- VIR_FREE(replaceUser);
- VIR_FREE(multiUser);
return ret;
}
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")) {
ret = 0;
cleanup:
- VIR_FREE(fullscreen);
return ret;
}
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;
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;
}
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown spice channel name %s"),
name);
- VIR_FREE(name);
- VIR_FREE(mode);
goto error;
}
if ((modeval = virDomainGraphicsSpiceChannelModeTypeFromString(mode)) < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown spice channel mode %s"),
mode);
- VIR_FREE(name);
- VIR_FREE(mode);
goto error;
}
- 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",
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown spice image compression %s"),
compression);
- VIR_FREE(compression);
goto error;
}
- 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",
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown spice jpeg compression %s"),
compression);
- VIR_FREE(compression);
goto error;
}
- 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",
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown spice zlib compression %s"),
compression);
- VIR_FREE(compression);
goto error;
}
- 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",
virTristateSwitchTypeFromString(compression)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("unknown spice playback compression"));
- VIR_FREE(compression);
goto error;
}
- 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",
virDomainGraphicsSpiceStreamingModeTypeFromString(mode)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("unknown spice streaming mode"));
- VIR_FREE(mode);
goto error;
}
- 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",
virTristateBoolTypeFromString(copypaste)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown copypaste value '%s'"), copypaste);
- VIR_FREE(copypaste);
goto error;
}
- 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",
virTristateBoolTypeFromString(enable)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown enable value '%s'"), enable);
- VIR_FREE(enable);
goto error;
}
- 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;
}
virTristateBoolTypeFromString(enable)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown enable value '%s'"), enable);
- VIR_FREE(enable);
- VIR_FREE(rendernode);
goto error;
}
- 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",
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown mouse mode value '%s'"),
mode);
- VIR_FREE(mode);
goto error;
}
- VIR_FREE(mode);
def->data.spice.mousemode = modeVal;
}
ret = 0;
error:
- VIR_FREE(port);
- VIR_FREE(tlsPort);
- VIR_FREE(autoport);
- VIR_FREE(defaultMode);
return ret;
}
unsigned int flags)
{
virDomainGraphicsDefPtr def;
- char *type = NULL;
int typeVal;
+ VIR_AUTOFREE(char *) type = NULL;
if (!(def = virDomainGraphicsDefNew(xmlopt)))
return NULL;
}
cleanup:
- VIR_FREE(type);
-
return def;
error:
static virDomainSoundCodecDefPtr
virDomainSoundCodecDefParseXML(xmlNodePtr node)
{
- char *type;
virDomainSoundCodecDefPtr def;
+ VIR_AUTOFREE(char *) type = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
}
cleanup:
- VIR_FREE(type);
-
return def;
error:
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;
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);
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);
}
}
goto error;
cleanup:
- VIR_FREE(model);
-
ctxt->node = save;
return def;
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;
goto error;
cleanup:
- VIR_FREE(action);
- VIR_FREE(model);
-
return def;
error:
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;
goto error;
cleanup:
- VIR_FREE(model);
- VIR_FREE(backend);
- VIR_FREE(type);
- VIR_FREE(backends);
ctxt->node = save;
return def;
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;
goto error;
cleanup:
- VIR_FREE(model);
- VIR_FREE(deflate);
-
ctxt->node = save;
return def;
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;
}
def->msi.ioeventfd = val;
}
- VIR_FREE(tmp);
}
/* msi option is only relevant with a server */
VIR_STEAL_PTR(ret, def);
cleanup:
ctxt->node = save;
- VIR_FREE(tmp);
virDomainShmemDefFree(def);
return ret;
}
{
int ret = -1;
virSysinfoSystemDefPtr def;
- char *tmpUUID = NULL;
+ VIR_AUTOFREE(char *) tmpUUID = NULL;
if (!virXMLNodeNameEqual(node, "system")) {
virReportError(VIR_ERR_XML_ERROR, "%s",
ret = 0;
cleanup:
virSysinfoSystemDefFree(def);
- VIR_FREE(tmpUUID);
return ret;
}
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;
*nbaseBoard = nboards;
ret = 0;
cleanup:
- VIR_FREE(boards);
- VIR_FREE(nodes);
ctxt->node = oldnode;
return ret;
}
{
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)
VIR_STEAL_PTR(*oem, def);
ret = 0;
cleanup:
- VIR_FREE(strings);
virSysinfoOEMStringsDefFree(def);
return ret;
}
{
virSysinfoDefPtr def;
xmlNodePtr oldnode, tmpnode;
- char *type;
+ VIR_AUTOFREE(char *) type = NULL;
if (!virXMLNodeNameEqual(node, "sysinfo")) {
virReportError(VIR_ERR_XML_ERROR, "%s",
}
cleanup:
- VIR_FREE(type);
return def;
error:
{
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) {
}
cleanup:
- VIR_FREE(accel2d);
- VIR_FREE(accel3d);
return def;
}
{
xmlNodePtr cur;
virDomainVideoDriverDefPtr def;
- char *vgaconf = NULL;
int val;
+ VIR_AUTOFREE(char *) vgaconf = NULL;
cur = node->children;
while (cur != NULL) {
def->vgaconf = val;
cleanup:
- VIR_FREE(vgaconf);
return def;
}
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;
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:
{
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;
}
cleanup:
- VIR_FREE(type);
- VIR_FREE(mode);
ctxt->node = save;
return def;
{
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;
cleanup:
- VIR_FREE(bus);
- VIR_FREE(type);
return def;
error:
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;
}
cleanup:
- VIR_FREE(class);
- VIR_FREE(vendor);
- VIR_FREE(product);
- VIR_FREE(version);
- VIR_FREE(allow);
return def;
error:
{
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;
goto error;
def->usbdevs[def->nusbdevs++] = usbdev;
}
- VIR_FREE(nodes);
ctxt->node = save;
return def;
error:
- VIR_FREE(nodes);
virDomainRedirFilterDefFree(def);
return NULL;
}
int defaultVal,
virEventActionFromStringFunc convFunc)
{
- char *tmp = virXPathString(xpath, ctxt);
+ VIR_AUTOFREE(char *) tmp = virXPathString(xpath, ctxt);
+
if (tmp == NULL) {
*val = defaultVal;
} else {
if (*val < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown %s action: %s"), name, tmp);
- VIR_FREE(tmp);
return -1;
}
- VIR_FREE(tmp);
}
return 0;
}
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) {
ret = 0;
cleanup:
- VIR_FREE(tmp);
return ret;
}
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"));
ret = 0;
cleanup:
- VIR_FREE(name);
- VIR_FREE(enabled);
return ret;
}
{
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;
ret = 0;
cleanup:
- VIR_FREE(nodes);
return ret;
}
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:
ret = 0;
cleanup:
- VIR_FREE(nodemask);
ctxt->node = save;
return ret;
}
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;
def->session = virXPathString("string(./session)", ctxt);
cleanup:
- VIR_FREE(type);
ctxt->node = save;
return def;
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;
def->discard = val;
}
- VIR_FREE(tmp);
/* source */
if ((node = virXPathNode("./source", ctxt)) &&
return def;
error:
- VIR_FREE(tmp);
virDomainMemoryDefFree(def);
ctxt->node = save;
return NULL;
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;
cleanup:
ctxt->node = save;
- VIR_FREE(iommu);
- VIR_FREE(tmp);
return ret;
}
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;
cleanup:
ctxt->node = save;
- VIR_FREE(vsock);
- VIR_FREE(tmp);
return ret;
}
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;
}
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)
ret = 0;
cleanup:
- VIR_FREE(tmp);
- VIR_FREE(nodes);
return ret;
}
virDomainIOThreadIDDefParseXML(xmlNodePtr node)
{
virDomainIOThreadIDDefPtr iothrid;
- char *tmp = NULL;
+ VIR_AUTOFREE(char *) tmp = NULL;
if (VIR_ALLOC(iothrid) < 0)
return NULL;
}
cleanup:
- VIR_FREE(tmp);
return iothrid;
error:
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) {
_("invalid iothreads count '%s'"), tmp);
goto error;
}
- VIR_FREE(tmp);
/* Extract any iothread id's defined */
if ((n = virXPathNodeSet("./iothreadids/iothread", ctxt, &nodes)) < 0)
}
def->iothreadids[def->niothreadids++] = iothrid;
}
- VIR_FREE(nodes);
if (virDomainIOThreadIDDefArrayInit(def, iothreads) < 0)
goto error;
return 0;
error:
- VIR_FREE(nodes);
return -1;
}
{
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"));
ret = 0;
cleanup:
- VIR_FREE(tmp);
return ret;
}
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"))) {
ret = 0;
cleanup:
- VIR_FREE(tmp);
return ret;
}
virDomainEmulatorPinDefParseXML(xmlNodePtr node)
{
virBitmapPtr ret = NULL;
- char *tmp = NULL;
+ VIR_AUTOFREE(char *) tmp = NULL;
VIR_AUTOPTR(virBitmap) def = NULL;
if (!(tmp = virXMLPropString(node, "cpuset"))) {
VIR_STEAL_PTR(ret, def);
cleanup:
- VIR_FREE(tmp);
return ret;
}
{
int ret = -1;
xmlNodePtr oldnode = ctxt->node;
- char *nodeset = NULL;
+ VIR_AUTOFREE(char *) nodeset = NULL;
ctxt->node = node;
ret = 0;
cleanup:
- VIR_FREE(nodeset);
ctxt->node = oldnode;
return ret;
}
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");
ret = 0;
cleanup:
- VIR_FREE(readonly_str);
- VIR_FREE(secure_str);
- VIR_FREE(type_str);
return ret;
}
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,
_("Invalid value for element priority"));
goto error;
}
- VIR_FREE(tmp);
}
return ret;
error:
- VIR_FREE(tmp);
virBitmapFree(ret);
return NULL;
}
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;
ret = 0;
cleanup:
- VIR_FREE(nodes);
- VIR_FREE(tmp);
-
return ret;
}
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....
ret = 0;
error:
- VIR_FREE(nodes);
- VIR_FREE(tmp);
return ret;
}
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) {
ret = 0;
cleanup:
- VIR_FREE(vcpus_str);
return ret;
}
unsigned int cache;
int type;
unsigned long long size;
- char *tmp = NULL;
int ret = -1;
+ VIR_AUTOFREE(char *) tmp = NULL;
ctxt->node = node;
tmp);
goto cleanup;
}
- VIR_FREE(tmp);
if (virDomainParseScaledValue("./@size", "./@unit",
ctxt, &size, 1024,
ret = 0;
cleanup:
ctxt->node = oldnode;
- VIR_FREE(tmp);
return ret;
}
{
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;
ret = 0;
cleanup:
ctxt->node = oldnode;
- VIR_FREE(id);
- VIR_FREE(tmp);
- VIR_FREE(nodes);
virDomainResctrlMonDefFree(domresmon);
return ret;
}
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. */
VIR_STEAL_PTR(ret, resctrl);
cleanup:
virDomainResctrlDefFree(resctrl);
- VIR_FREE(alloc_id);
- VIR_FREE(vcpus_str);
return ret;
}
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;
ctxt->node = oldnode;
virDomainResctrlDefFree(resctrl);
virObjectUnref(alloc);
- VIR_FREE(nodes);
return ret;
}
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);
ret = 0;
cleanup:
- VIR_FREE(virttype);
- VIR_FREE(ostype);
- VIR_FREE(arch);
- VIR_FREE(capsdata);
return ret;
}
xmlNodePtr oldnode = ctxt->node;
unsigned int id;
unsigned int bandwidth;
- char *tmp = NULL;
int ret = -1;
+ VIR_AUTOFREE(char *) tmp = NULL;
ctxt->node = node;
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;
}
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;
ctxt->node = oldnode;
virDomainResctrlDefFree(resctrl);
virObjectUnref(alloc);
- VIR_FREE(nodes);
return ret;
}
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;
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()))
def->idmap.ngidmap = n;
}
- VIR_FREE(nodes);
if ((def->idmap.uidmap && !def->idmap.gidmap) ||
(!def->idmap.uidmap && def->idmap.gidmap)) {
goto error;
}
def->os.smbios_mode = mode;
- VIR_FREE(tmp);
}
if (virDomainKeyWrapDefParseXML(def, ctxt) < 0)
return def;
error:
- VIR_FREE(tmp);
- VIR_FREE(nodes);
virDomainDefFree(def);
return NULL;
}
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;
if ((state = virDomainStateTypeFromString(tmp)) < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("invalid domain state '%s'"), tmp);
- VIR_FREE(tmp);
goto error;
}
VIR_FREE(tmp);
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);
virDomainObjTaint(obj, flag);
}
}
- VIR_FREE(nodes);
if (xmlopt->privateData.parse &&
xmlopt->privateData.parse(ctxt, obj, &xmlopt->config) < 0)
error:
virObjectUnref(obj);
- VIR_FREE(nodes);
return NULL;
}
case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_GUESTFWD:
if (memcmp(src->target.addr, dst->target.addr,
sizeof(*src->target.addr)) != 0) {
- char *saddr = virSocketAddrFormatFull(src->target.addr, true, ":");
- char *daddr = virSocketAddrFormatFull(dst->target.addr, true, ":");
+ VIR_AUTOFREE(char *) saddr = virSocketAddrFormatFull(src->target.addr, true, ":");
+ VIR_AUTOFREE(char *) daddr = virSocketAddrFormatFull(dst->target.addr, true, ":");
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Target channel addr %s does not match source %s"),
NULLSTR(daddr), NULLSTR(saddr));
- VIR_FREE(saddr);
- VIR_FREE(daddr);
return false;
}
break;
{
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,
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);
unsigned int flags)
{
size_t n;
- char *path = NULL;
+ VIR_AUTOFREE(char *) path = NULL;
virBufferAsprintf(attrBuf, " protocol='%s'",
virStorageNetProtocolTypeToString(src->protocol));
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))
virBufferEscapeString(buf, "<model type='%s'/>\n",
def->model);
if (virDomainNetIsVirtioModel(def)) {
- char *str = NULL, *gueststr = NULL, *hoststr = NULL;
int rc = 0;
+ VIR_AUTOFREE(char *) str = NULL;
+ VIR_AUTOFREE(char *) gueststr = NULL;
+ VIR_AUTOFREE(char *) hoststr = NULL;
if (virDomainVirtioNetDriverFormat(&str, def) < 0 ||
virDomainVirtioNetGuestOptsFormat(&gueststr, def) < 0 ||
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</driver>\n");
}
- VIR_FREE(str);
- VIR_FREE(hoststr);
- VIR_FREE(gueststr);
if (rc < 0)
return -1;
switch (def->targetType) {
case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_GUESTFWD: {
int port = virSocketAddrGetPort(def->target.addr);
+ VIR_AUTOFREE(char *) addr = NULL;
if (port < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Unable to format guestfwd port"));
return -1;
}
- char *addr = virSocketAddrFormat(def->target.addr);
+ addr = virSocketAddrFormat(def->target.addr);
if (addr == NULL)
return -1;
virBufferAsprintf(buf, " address='%s' port='%d'",
addr, port);
- VIR_FREE(addr);
break;
}
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;
ret = 0;
cleanup:
- VIR_FREE(bitmap);
return ret;
}
hugepage->size);
if (hugepage->nodemask) {
- char *nodeset = NULL;
+ VIR_AUTOFREE(char *) nodeset = NULL;
if (!(nodeset = virBitmapFormat(hugepage->nodemask)))
goto cleanup;
virBufferAsprintf(buf, " nodeset='%s'", nodeset);
- VIR_FREE(nodeset);
}
virBufferAddLit(buf, "/>\n");
virResctrlMonitorType tag,
virBufferPtr buf)
{
- char *vcpus = NULL;
+ VIR_AUTOFREE(char *) vcpus = NULL;
if (domresmon->tag != tag)
return 0;
virBufferAsprintf(buf, "vcpus='%s'/>\n", vcpus);
- VIR_FREE(vcpus);
return 0;
}
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,
ret = 0;
cleanup:
virBufferFreeAndReset(&childrenBuf);
- VIR_FREE(vcpus);
return ret;
}
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,
ret = 0;
cleanup:
virBufferFreeAndReset(&childrenBuf);
- VIR_FREE(vcpus);
return ret;
}
{
virDomainVcpuDefPtr vcpu;
size_t i;
- char *cpumask = NULL;
int ret = -1;
+ VIR_AUTOFREE(char *) cpumask = NULL;
virBufferAddLit(buf, "<vcpu");
virBufferAsprintf(buf, " placement='%s'",
ret = 0;
cleanup:
- VIR_FREE(cpumask);
-
return ret;
}
const char *xml)
{
char uuidstr[VIR_UUID_STRING_BUFLEN];
- char *configFile = NULL;
int ret = -1;
+ VIR_AUTOFREE(char *) configFile = NULL;
if (!configDir)
return 0;
xml);
cleanup:
- VIR_FREE(configFile);
return ret;
}
virDomainDefPtr def)
{
int ret = -1;
- char *xml;
+ VIR_AUTOFREE(char *) xml = NULL;
if (!(xml = virDomainDefFormat(def, caps, VIR_DOMAIN_DEF_FORMAT_SECURE)))
goto cleanup;
ret = 0;
cleanup:
- VIR_FREE(xml);
return ret;
}
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;
ret = 0;
cleanup:
- VIR_FREE(xml);
return ret;
}
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;
ret = 0;
cleanup:
- VIR_FREE(configFile);
- VIR_FREE(autostartLink);
return ret;
}
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)
ret = 0;
cleanup:
- VIR_FREE(brokenRaw);
return ret;
}
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;
ret = virDomainDefParseString(xml, caps, xmlopt, parseOpaque, parse_flags);
- VIR_FREE(xml);
return ret;
}
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:
VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE);
cleanup:
- VIR_FREE(xmlStr);
return ret;
}
{
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
ignore_value(virAsprintf(&ret, "%d-%s", def->id, shortname));
cleanup:
- VIR_FREE(shortname);
return ret;
}
{
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;
cleanup:
virNetworkDefFree(def);
- VIR_FREE(xml);
virObjectUnref(conn);
virObjectUnref(net);
return ret;
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;
virObjectUnref(conn);
virObjectUnref(pool);
virObjectUnref(vol);
- VIR_FREE(poolxml);
return ret;
}