]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
esx: Fix @doms pointer steal in esxConnectListAllDomains()
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 24 Mar 2021 09:33:45 +0000 (10:33 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 24 Mar 2021 12:57:51 +0000 (13:57 +0100)
The ESX implementation of virConnectListAllDomains() follows
pretty much implementations in other drivers: it has local array
of virDomainPtr-s which (if requested by caller) is filled by
actual domains or not (if the caller is interested only in the
count of domains).

Anyway, in case of the former, the passed @domains argument is
set to the local array, which is then set to NULL to prevent it
from freeing under cleanup label. Pretty standard pattern.
Except, the local array is set to NULL always. Even if the local
array is not stolen. Fortunately, this doesn't lead to a memory
leak, because if caller is not interested in the array, none is
allocated. But it doesn't set good example and also breaks my
spatch rules.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
src/esx/esx_driver.c

index 21705ef6e3ae37da95fd5226b2341ca1ba9b7bb8..1c68776c186d40577ae8cfbb86add7bdd5063703 100644 (file)
@@ -4929,9 +4929,10 @@ esxConnectListAllDomains(virConnectPtr conn,
         doms[count++] = dom;
     }
 
-    if (doms)
+    if (doms) {
         *domains = doms;
-    doms = NULL;
+        doms = NULL;
+    }
     ret = count;
 
  cleanup: