]> xenbits.xensource.com Git - libvirt.git/commitdiff
virGetConnectGeneric: Fix memleak of 'identparams' when connecting between split...
authorPeter Krempa <pkrempa@redhat.com>
Wed, 18 May 2022 08:49:34 +0000 (10:49 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 18 May 2022 11:46:30 +0000 (13:46 +0200)
The 'identparams' typed parameter list obtained from
virIdentityGetParameters is leaked when called from
'virGetConnectGeneric'.

Use 'virTypedParamListFromParams' to absorb it into a virTypedParamList
which can be autofreed.

Note that the memleak is observable only when running in split-daemon
mode.

Closes: https://gitlab.com/libvirt/libvirt/-/issues/314
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
src/driver.c

index 41b4f0055b1a3ee81beafc0655d49ac9132a5d6d..d4136c438fe179b7dd4ca98c47f2e5503f18eef2 100644 (file)
@@ -36,6 +36,7 @@
 #include "viridentity.h"
 #include "datatypes.h"
 #include "configmake.h"
+#include "virtypedparam.h"
 
 VIR_LOG_INIT("driver");
 
@@ -159,6 +160,7 @@ virGetConnectGeneric(virThreadLocal *threadPtr, const char *name)
 
         if (conn->driver->connectSetIdentity != NULL) {
             g_autoptr(virIdentity) ident = NULL;
+            g_autoptr(virTypedParamList) paramlist = NULL;
             virTypedParameterPtr identparams = NULL;
             int nidentparams = 0;
 
@@ -169,7 +171,9 @@ virGetConnectGeneric(virThreadLocal *threadPtr, const char *name)
             if (virIdentityGetParameters(ident, &identparams, &nidentparams) < 0)
                 goto error;
 
-            if (virConnectSetIdentity(conn, identparams, nidentparams, 0) < 0)
+            paramlist = virTypedParamListFromParams(&identparams, nidentparams);
+
+            if (virConnectSetIdentity(conn, paramlist->par, paramlist->npar, 0) < 0)
                 goto error;
         }
     }