]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
remote: Fix memory leak in remoteDomainMigrateFinish3*
authorJiri Denemark <jdenemar@redhat.com>
Thu, 26 Jan 2023 15:54:06 +0000 (16:54 +0100)
committerJiri Denemark <jdenemar@redhat.com>
Mon, 30 Jan 2023 15:02:41 +0000 (16:02 +0100)
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 <jdenemar@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
src/remote/remote_driver.c

index 2f421fb5e06f919dc47476279357df2b0a88e73a..9fc73f6d888f22607a8484e31e2a6b8c1bc79575 100644 (file)
@@ -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);