Don't reuse 'tmp' over and over, but switch to single use automaticaly freed variables instead. Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> --- src/qemu/qemu_migration_cookie.c | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_cookie.c index 22705874e0..f313b6d00e 100644 --- a/src/qemu/qemu_migration_cookie.c +++ b/src/qemu/qemu_migration_cookie.c @@ -1210,8 +1210,10 @@ qemuMigrationCookieXMLParse(qemuMigrationCookiePtr mig, xmlXPathContextPtr ctxt, unsigned int flags) { - char uuidstr[VIR_UUID_STRING_BUFLEN]; - char *tmp = NULL; + g_autofree char *name = NULL; + g_autofree char *uuid = NULL; + g_autofree char *hostuuid = NULL; + char localdomuuid[VIR_UUID_STRING_BUFLEN]; xmlNodePtr *nodes = NULL; int n; @@ -1221,34 +1223,31 @@ qemuMigrationCookieXMLParse(qemuMigrationCookiePtr mig, */ /* Extract domain name */ - if (!(tmp = virXPathString("string(./name[1])", ctxt))) { + if (!(name = virXPathString("string(./name[1])", ctxt))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("missing name element in migration data")); goto error; } - if (STRNEQ(tmp, mig->name)) { + if (STRNEQ(name, mig->name)) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Incoming cookie data had unexpected name %s vs %s"), - tmp, mig->name); + name, mig->name); goto error; } - VIR_FREE(tmp); /* Extract domain uuid */ - tmp = virXPathString("string(./uuid[1])", ctxt); - if (!tmp) { + if (!(uuid = virXPathString("string(./uuid[1])", ctxt))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("missing uuid element in migration data")); goto error; } - virUUIDFormat(mig->uuid, uuidstr); - if (STRNEQ(tmp, uuidstr)) { + virUUIDFormat(mig->uuid, localdomuuid); + if (STRNEQ(uuid, localdomuuid)) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Incoming cookie data had unexpected UUID %s vs %s"), - tmp, uuidstr); + uuid, localdomuuid); goto error; } - VIR_FREE(tmp); if (!(mig->remoteHostname = virXPathString("string(./hostname[1])", ctxt))) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -1261,12 +1260,12 @@ qemuMigrationCookieXMLParse(qemuMigrationCookiePtr mig, * for sure. */ /* Check & forbid localhost migration */ - if (!(tmp = virXPathString("string(./hostuuid[1])", ctxt))) { + if (!(hostuuid = virXPathString("string(./hostuuid[1])", ctxt))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("missing hostuuid element in migration data")); goto error; } - if (virUUIDParse(tmp, mig->remoteHostuuid) < 0) { + if (virUUIDParse(hostuuid, mig->remoteHostuuid) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("malformed hostuuid element in migration data")); goto error; @@ -1274,11 +1273,9 @@ qemuMigrationCookieXMLParse(qemuMigrationCookiePtr mig, if (memcmp(mig->remoteHostuuid, mig->localHostuuid, VIR_UUID_BUFLEN) == 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Attempt to migrate guest to the same host %s"), - tmp); + hostuuid); goto error; } - VIR_FREE(tmp); - if (qemuMigrationCookieXMLParseMandatoryFeatures(ctxt, flags) < 0) return -1; @@ -1353,7 +1350,6 @@ qemuMigrationCookieXMLParse(qemuMigrationCookiePtr mig, return 0; error: - VIR_FREE(tmp); VIR_FREE(nodes); return -1; } -- 2.26.2