From: Jiri Denemark Date: Thu, 26 Jan 2023 15:54:06 +0000 (+0100) Subject: remote: Fix memory leak in remoteDomainMigrateFinish3* X-Git-Tag: v9.1.0-rc1~143 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=648391f170ddbb0e92832d543a940bcc84fc2309;p=thirdparty%2Flibvirt.git remote: Fix memory leak in remoteDomainMigrateFinish3* Theoretically, when remoteDomainMigrateFinish3* is called without a pointer for storing migration cookie or its length (i.e., either cookieout == NULL or cookieoutlen == NULL), we would leak the freshly created virDomain object referenced by rv. Signed-off-by: Jiri Denemark Reviewed-by: Erik Skultety --- diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 2f421fb5e0..9fc73f6d88 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -5917,8 +5917,6 @@ remoteDomainMigrateFinish3(virConnectPtr dconn, (xdrproc_t) xdr_remote_domain_migrate_finish3_ret, (char *) &ret) == -1) return NULL; - rv = get_nonnull_domain(dconn, ret.dom); - if (ret.cookie_out.cookie_out_len > 0) { if (!cookieout || !cookieoutlen) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -5930,6 +5928,8 @@ remoteDomainMigrateFinish3(virConnectPtr dconn, ret.cookie_out.cookie_out_len = 0; } + rv = get_nonnull_domain(dconn, ret.dom); + xdr_free((xdrproc_t) &xdr_remote_domain_migrate_finish3_ret, (char *) &ret); return rv; @@ -6770,8 +6770,6 @@ remoteDomainMigrateFinish3Params(virConnectPtr dconn, (char *) &ret) == -1) goto cleanup; - rv = get_nonnull_domain(dconn, ret.dom); - if (ret.cookie_out.cookie_out_len > 0) { if (!cookieout || !cookieoutlen) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -6783,6 +6781,8 @@ remoteDomainMigrateFinish3Params(virConnectPtr dconn, ret.cookie_out.cookie_out_len = 0; } + rv = get_nonnull_domain(dconn, ret.dom); + xdr_free((xdrproc_t) &xdr_remote_domain_migrate_finish3_params_ret, (char *) &ret);