From nobody Sun Feb 8 16:24:16 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 15494605876871000.6217455417708; Wed, 6 Feb 2019 05:43:07 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D972CC01DDF5; Wed, 6 Feb 2019 13:43:05 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 41BAC6154A; Wed, 6 Feb 2019 13:43:05 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id BAE113D3A5; Wed, 6 Feb 2019 13:43:04 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x16DgArR002019 for ; Wed, 6 Feb 2019 08:42:10 -0500 Received: by smtp.corp.redhat.com (Postfix) id 74BE25C5FD; Wed, 6 Feb 2019 13:42:10 +0000 (UTC) Received: from unknown0050b6a41c42.attlocal.net.com (ovpn-116-19.phx2.redhat.com [10.3.116.19]) by smtp.corp.redhat.com (Postfix) with ESMTP id 293E05C26D for ; Wed, 6 Feb 2019 13:42:10 +0000 (UTC) From: John Ferlan To: libvir-list@redhat.com Date: Wed, 6 Feb 2019 08:41:44 -0500 Message-Id: <20190206134147.18032-13-jferlan@redhat.com> In-Reply-To: <20190206134147.18032-1-jferlan@redhat.com> References: <20190206134147.18032-1-jferlan@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 12/15] test: Use VIR_AUTOFREE for test driver X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Wed, 06 Feb 2019 13:43:06 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Let's make use of the auto __cleanup capabilities cleaning up any now unnecessary goto paths. Signed-off-by: John Ferlan Reviewed-by: Erik Skultety --- src/test/test_driver.c | 179 ++++++++++++++++------------------------- 1 file changed, 69 insertions(+), 110 deletions(-) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index ff773f39b0..dc2b72d31a 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -200,7 +200,7 @@ testDomainDefNamespaceParse(xmlDocPtr xml ATTRIBUTE_UNU= SED, void **data) { testDomainNamespaceDefPtr nsdata =3D NULL; - xmlNodePtr *nodes =3D NULL; + VIR_AUTOFREE(xmlNodePtr *) nodes =3D NULL; int tmp, n; size_t i; unsigned int tmpuint; @@ -233,7 +233,6 @@ testDomainDefNamespaceParse(xmlDocPtr xml ATTRIBUTE_UNU= SED, nsdata->snap_nodes[nsdata->num_snap_nodes] =3D newnode; nsdata->num_snap_nodes++; } - VIR_FREE(nodes); =20 tmp =3D virXPathBoolean("boolean(./test:transient)", ctxt); if (tmp =3D=3D -1) { @@ -280,7 +279,6 @@ testDomainDefNamespaceParse(xmlDocPtr xml ATTRIBUTE_UNU= SED, return 0; =20 error: - VIR_FREE(nodes); testDomainDefNamespaceFree(nsdata); return -1; } @@ -695,11 +693,10 @@ testParseXMLDocFromFile(xmlNodePtr node, const char *= file, const char *type) xmlNodePtr ret =3D NULL; xmlDocPtr doc =3D NULL; char *absFile =3D NULL; - char *relFile =3D virXMLPropString(node, "file"); + VIR_AUTOFREE(char *) relFile =3D NULL; =20 - if (relFile !=3D NULL) { + if ((relFile =3D virXMLPropString(node, "file"))) { absFile =3D testBuildFilename(file, relFile); - VIR_FREE(relFile); if (!absFile) { virReportError(VIR_ERR_INTERNAL_ERROR, _("resolving %s filename"), type); @@ -722,14 +719,13 @@ testParseXMLDocFromFile(xmlNodePtr node, const char *= file, const char *type) =20 error: xmlFreeDoc(doc); - VIR_FREE(absFile); return ret; } =20 static int testParseNodeInfo(virNodeInfoPtr nodeInfo, xmlXPathContextPtr ctxt) { - char *str; + VIR_AUTOFREE(char *) str =3D NULL; long l; int ret; =20 @@ -794,10 +790,8 @@ testParseNodeInfo(virNodeInfoPtr nodeInfo, xmlXPathCon= textPtr ctxt) if (virStrcpyStatic(nodeInfo->model, str) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Model %s too big for destination"), str); - VIR_FREE(str); goto error; } - VIR_FREE(str); } =20 ret =3D virXPathLong("string(/node/memory[1])", ctxt, &l); @@ -877,12 +871,12 @@ testParseDomains(testDriverPtr privconn, { int num, ret =3D -1; size_t i; - xmlNodePtr *nodes =3D NULL; + VIR_AUTOFREE(xmlNodePtr *) nodes =3D NULL; virDomainObjPtr obj =3D NULL; =20 num =3D virXPathNodeSet("/node/domain", ctxt, &nodes); if (num < 0) - goto error; + return -1; =20 for (i =3D 0; i < num; i++) { virDomainDefPtr def; @@ -928,7 +922,6 @@ testParseDomains(testDriverPtr privconn, ret =3D 0; error: virDomainObjEndAPI(&obj); - VIR_FREE(nodes); return ret; } =20 @@ -938,38 +931,35 @@ testParseNetworks(testDriverPtr privconn, const char *file, xmlXPathContextPtr ctxt) { - int num, ret =3D -1; + int num; size_t i; - xmlNodePtr *nodes =3D NULL; + VIR_AUTOFREE(xmlNodePtr *) nodes =3D NULL; virNetworkObjPtr obj; =20 num =3D virXPathNodeSet("/node/network", ctxt, &nodes); if (num < 0) - goto error; + return -1; =20 for (i =3D 0; i < num; i++) { virNetworkDefPtr def; xmlNodePtr node =3D testParseXMLDocFromFile(nodes[i], file, "netwo= rk"); if (!node) - goto error; + return -1; =20 def =3D virNetworkDefParseNode(ctxt->doc, node); if (!def) - goto error; + return -1; =20 if (!(obj =3D virNetworkObjAssignDef(privconn->networks, def, 0)))= { virNetworkDefFree(def); - goto error; + return -1; } =20 virNetworkObjSetActive(obj, true); virNetworkObjEndAPI(&obj); } =20 - ret =3D 0; - error: - VIR_FREE(nodes); - return ret; + return 0; } =20 =20 @@ -978,39 +968,36 @@ testParseInterfaces(testDriverPtr privconn, const char *file, xmlXPathContextPtr ctxt) { - int num, ret =3D -1; + int num; size_t i; - xmlNodePtr *nodes =3D NULL; + VIR_AUTOFREE(xmlNodePtr *) nodes =3D NULL; virInterfaceObjPtr obj; =20 num =3D virXPathNodeSet("/node/interface", ctxt, &nodes); if (num < 0) - goto error; + return -1; =20 for (i =3D 0; i < num; i++) { virInterfaceDefPtr def; xmlNodePtr node =3D testParseXMLDocFromFile(nodes[i], file, "interface"); if (!node) - goto error; + return -1; =20 def =3D virInterfaceDefParseNode(ctxt->doc, node); if (!def) - goto error; + return -1; =20 if (!(obj =3D virInterfaceObjListAssignDef(privconn->ifaces, def))= ) { virInterfaceDefFree(def); - goto error; + return -1; } =20 virInterfaceObjSetActive(obj, true); virInterfaceObjEndAPI(&obj); } =20 - ret =3D 0; - error: - VIR_FREE(nodes); - return ret; + return 0; } =20 =20 @@ -1021,51 +1008,47 @@ testOpenVolumesForPool(const char *file, int objidx) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(obj); - char *vol_xpath; size_t i; - int num, ret =3D -1; - xmlNodePtr *nodes =3D NULL; + int num; + VIR_AUTOFREE(char *) vol_xpath =3D NULL; + VIR_AUTOFREE(xmlNodePtr *) nodes =3D NULL; VIR_AUTOPTR(virStorageVolDef) volDef =3D NULL; =20 /* Find storage volumes */ if (virAsprintf(&vol_xpath, "/node/pool[%d]/volume", objidx) < 0) - goto error; + return -1; =20 num =3D virXPathNodeSet(vol_xpath, ctxt, &nodes); - VIR_FREE(vol_xpath); if (num < 0) - goto error; + return -1; =20 for (i =3D 0; i < num; i++) { xmlNodePtr node =3D testParseXMLDocFromFile(nodes[i], file, "volume"); if (!node) - goto error; + return -1; =20 if (!(volDef =3D virStorageVolDefParseNode(def, ctxt->doc, node, 0= ))) - goto error; + return -1; =20 if (!volDef->target.path) { if (virAsprintf(&volDef->target.path, "%s/%s", def->target.path, volDef->name) < 0) - goto error; + return -1; } =20 if (!volDef->key && VIR_STRDUP(volDef->key, volDef->target.path) <= 0) - goto error; + return -1; =20 if (virStoragePoolObjAddVol(obj, volDef) < 0) - goto error; + return -1; =20 def->allocation +=3D volDef->target.allocation; def->available =3D (def->capacity - def->allocation); volDef =3D NULL; } =20 - ret =3D 0; - error: - VIR_FREE(nodes); - return ret; + return 0; } =20 =20 @@ -1074,50 +1057,47 @@ testParseStorage(testDriverPtr privconn, const char *file, xmlXPathContextPtr ctxt) { - int num, ret =3D -1; + int num; size_t i; - xmlNodePtr *nodes =3D NULL; + VIR_AUTOFREE(xmlNodePtr *) nodes =3D NULL; virStoragePoolObjPtr obj; =20 num =3D virXPathNodeSet("/node/pool", ctxt, &nodes); if (num < 0) - goto error; + return -1; =20 for (i =3D 0; i < num; i++) { virStoragePoolDefPtr def; xmlNodePtr node =3D testParseXMLDocFromFile(nodes[i], file, "pool"); if (!node) - goto error; + return -1; =20 def =3D virStoragePoolDefParseNode(ctxt->doc, node); if (!def) - goto error; + return -1; =20 if (!(obj =3D virStoragePoolObjAssignDef(privconn->pools, def, fal= se))) { virStoragePoolDefFree(def); - goto error; + return -1; } =20 if (testStoragePoolObjSetDefaults(obj) =3D=3D -1) { virStoragePoolObjEndAPI(&obj); - goto error; + return -1; } virStoragePoolObjSetActive(obj, true); =20 /* Find storage volumes */ if (testOpenVolumesForPool(file, ctxt, obj, i+1) < 0) { virStoragePoolObjEndAPI(&obj); - goto error; + return -1; } =20 virStoragePoolObjEndAPI(&obj); } =20 - ret =3D 0; - error: - VIR_FREE(nodes); - return ret; + return 0; } =20 =20 @@ -1126,79 +1106,70 @@ testParseNodedevs(testDriverPtr privconn, const char *file, xmlXPathContextPtr ctxt) { - int num, ret =3D -1; + int num; size_t i; - xmlNodePtr *nodes =3D NULL; + VIR_AUTOFREE(xmlNodePtr *) nodes =3D NULL; virNodeDeviceObjPtr obj; =20 num =3D virXPathNodeSet("/node/device", ctxt, &nodes); if (num < 0) - goto error; + return -1; =20 for (i =3D 0; i < num; i++) { virNodeDeviceDefPtr def; xmlNodePtr node =3D testParseXMLDocFromFile(nodes[i], file, "nodedev"); if (!node) - goto error; + return -1; =20 def =3D virNodeDeviceDefParseNode(ctxt->doc, node, 0, NULL); if (!def) - goto error; + return -1; =20 if (!(obj =3D virNodeDeviceObjListAssignDef(privconn->devs, def)))= { virNodeDeviceDefFree(def); - goto error; + return -1; } =20 virNodeDeviceObjSetSkipUpdateCaps(obj, true); virNodeDeviceObjEndAPI(&obj); } =20 - ret =3D 0; - error: - VIR_FREE(nodes); - return ret; + return 0; } =20 static int testParseAuthUsers(testDriverPtr privconn, xmlXPathContextPtr ctxt) { - int num, ret =3D -1; + int num; size_t i; - xmlNodePtr *nodes =3D NULL; + VIR_AUTOFREE(xmlNodePtr *) nodes =3D NULL; =20 num =3D virXPathNodeSet("/node/auth/user", ctxt, &nodes); if (num < 0) - goto error; + return -1; =20 privconn->numAuths =3D num; if (num && VIR_ALLOC_N(privconn->auths, num) < 0) - goto error; + return -1; =20 for (i =3D 0; i < num; i++) { - char *username, *password; + VIR_AUTOFREE(char *) username =3D NULL; =20 ctxt->node =3D nodes[i]; username =3D virXPathString("string(.)", ctxt); if (!username || STREQ(username, "")) { virReportError(VIR_ERR_XML_ERROR, "%s", _("missing username in /node/auth/user field")); - VIR_FREE(username); - goto error; + return -1; } /* This field is optional. */ - password =3D virXMLPropString(nodes[i], "password"); - - privconn->auths[i].username =3D username; - privconn->auths[i].password =3D password; + privconn->auths[i].password =3D virXMLPropString(nodes[i], "passwo= rd"); + VIR_STEAL_PTR(privconn->auths[i].username, username); } =20 - ret =3D 0; - error: - VIR_FREE(nodes); - return ret; + return 0; } =20 static int @@ -1348,7 +1319,8 @@ testConnectAuthenticate(virConnectPtr conn, testDriverPtr privconn =3D conn->privateData; int ret =3D -1; ssize_t i; - char *username =3D NULL, *password =3D NULL; + VIR_AUTOFREE(char *) username =3D NULL; + VIR_AUTOFREE(char *) password =3D NULL; =20 virObjectLock(privconn); if (privconn->numAuths =3D=3D 0) { @@ -1388,8 +1360,6 @@ testConnectAuthenticate(virConnectPtr conn, ret =3D 0; cleanup: virObjectUnlock(privconn); - VIR_FREE(username); - VIR_FREE(password); return ret; } =20 @@ -1977,7 +1947,7 @@ testDomainSaveFlags(virDomainPtr domain, const char *= path, const char *dxml, unsigned int flags) { testDriverPtr privconn =3D domain->conn->privateData; - char *xml =3D NULL; + VIR_AUTOFREE(char *) xml =3D NULL; int fd =3D -1; int len; virDomainObjPtr privdom; @@ -2052,8 +2022,6 @@ testDomainSaveFlags(virDomainPtr domain, const char *= path, =20 ret =3D 0; cleanup: - VIR_FREE(xml); - /* Don't report failure in close or unlink, because * in either case we're already in a failure scenario * and have reported an earlier error */ @@ -2080,7 +2048,7 @@ testDomainRestoreFlags(virConnectPtr conn, unsigned int flags) { testDriverPtr privconn =3D conn->privateData; - char *xml =3D NULL; + VIR_AUTOFREE(char *) xml =3D NULL; char magic[15]; int fd =3D -1; int len; @@ -2162,7 +2130,6 @@ testDomainRestoreFlags(virConnectPtr conn, =20 cleanup: virDomainDefFree(def); - VIR_FREE(xml); VIR_FORCE_CLOSE(fd); virDomainObjEndAPI(&dom); virObjectEventStateQueue(privconn->eventState, event); @@ -2578,8 +2545,7 @@ testDomainRenameCallback(virDomainObjPtr privdom, virObjectEventPtr event_new =3D NULL; virObjectEventPtr event_old =3D NULL; int ret =3D -1; - char *new_dom_name =3D NULL; - char *old_dom_name =3D NULL; + VIR_AUTOFREE(char *) new_dom_name =3D NULL; =20 virCheckFlags(0, -1); =20 @@ -2597,9 +2563,8 @@ testDomainRenameCallback(virDomainObjPtr privdom, VIR_DOMAIN_EVENT_UNDEFIN= ED_RENAMED); =20 /* Switch name in domain definition. */ - old_dom_name =3D privdom->def->name; - privdom->def->name =3D new_dom_name; - new_dom_name =3D NULL; + VIR_FREE(privdom->def->name); + VIR_STEAL_PTR(privdom->def->name, new_dom_name); =20 event_new =3D virDomainEventLifecycleNewFromObj(privdom, VIR_DOMAIN_EVENT_DEFINED, @@ -2607,8 +2572,6 @@ testDomainRenameCallback(virDomainObjPtr privdom, ret =3D 0; =20 cleanup: - VIR_FREE(old_dom_name); - VIR_FREE(new_dom_name); virObjectEventStateQueue(driver->eventState, event_old); virObjectEventStateQueue(driver->eventState, event_new); return ret; @@ -5471,7 +5434,7 @@ testNodeDeviceMockCreateVport(testDriverPtr driver, const char *wwnn, const char *wwpn) { - char *xml =3D NULL; + VIR_AUTOFREE(char *) xml =3D NULL; virNodeDeviceDefPtr def =3D NULL; virNodeDevCapsDefPtr caps; virNodeDeviceObjPtr obj =3D NULL, objcopy =3D NULL; @@ -5540,7 +5503,6 @@ testNodeDeviceMockCreateVport(testDriverPtr driver, virObjectEventStateQueue(driver->eventState, event); =20 cleanup: - VIR_FREE(xml); virNodeDeviceDefFree(def); return obj; } @@ -5553,7 +5515,8 @@ testNodeDeviceCreateXML(virConnectPtr conn, { testDriverPtr driver =3D conn->privateData; virNodeDeviceDefPtr def =3D NULL; - char *wwnn =3D NULL, *wwpn =3D NULL; + VIR_AUTOFREE(char *) wwnn =3D NULL; + VIR_AUTOFREE(char *) wwpn =3D NULL; virNodeDevicePtr dev =3D NULL, ret =3D NULL; virNodeDeviceObjPtr obj =3D NULL; virNodeDeviceDefPtr objdef; @@ -5597,8 +5560,6 @@ testNodeDeviceCreateXML(virConnectPtr conn, virNodeDeviceObjEndAPI(&obj); virNodeDeviceDefFree(def); virObjectUnref(dev); - VIR_FREE(wwnn); - VIR_FREE(wwpn); return ret; } =20 @@ -5610,7 +5571,8 @@ testNodeDeviceDestroy(virNodeDevicePtr dev) virNodeDeviceObjPtr obj =3D NULL; virNodeDeviceObjPtr parentobj =3D NULL; virNodeDeviceDefPtr def; - char *wwnn =3D NULL, *wwpn =3D NULL; + VIR_AUTOFREE(char *) wwnn =3D NULL; + VIR_AUTOFREE(char *) wwpn =3D NULL; virObjectEventPtr event =3D NULL; =20 if (!(obj =3D testNodeDeviceObjFindByName(driver, dev->name))) @@ -5649,8 +5611,6 @@ testNodeDeviceDestroy(virNodeDevicePtr dev) cleanup: virNodeDeviceObjEndAPI(&obj); virObjectEventStateQueue(driver->eventState, event); - VIR_FREE(wwnn); - VIR_FREE(wwpn); return ret; } =20 @@ -6342,7 +6302,7 @@ testDomainSnapshotCreateXML(virDomainPtr domain, virDomainSnapshotObjPtr snap =3D NULL; virDomainSnapshotPtr snapshot =3D NULL; virObjectEventPtr event =3D NULL; - char *xml =3D NULL; + VIR_AUTOFREE(char *) xml =3D NULL; bool update_current =3D true; bool redefine =3D flags & VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE; unsigned int parse_flags =3D VIR_DOMAIN_SNAPSHOT_PARSE_DISKS; @@ -6427,7 +6387,6 @@ testDomainSnapshotCreateXML(virDomainPtr domain, =20 snapshot =3D virGetDomainSnapshot(domain, snap->def->name); cleanup: - VIR_FREE(xml); if (vm) { if (snapshot) { virDomainSnapshotObjPtr other; --=20 2.20.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list