[libvirt PATCH] virnetdaemon: fix memory leak in virNetDaemonCallInhibit

Pavel Hrdina phrdina at redhat.com
Wed Sep 23 14:37:48 UTC 2020


g_variant_new() returns a weak reference which can be consumed by passing
to other g_variant* functions or to g_dbus_connection_call* functions.

This make it possible to call g_variant_new() directly as argument to
the functions above. Because this might be confusing I explicitly call
g_variant_ref_sink() to make it normal reference in both
virGDBusCallMethod() and virGDBusCallMethodWithFD() so the caller is
always responsible for the data.

Reported-by: Peter Krempa <pkrempa at redhat.com>
Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
---
 src/rpc/virnetdaemon.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/rpc/virnetdaemon.c b/src/rpc/virnetdaemon.c
index f3a5e9f75c..2e01244f74 100644
--- a/src/rpc/virnetdaemon.c
+++ b/src/rpc/virnetdaemon.c
@@ -469,7 +469,7 @@ virNetDaemonCallInhibit(virNetDaemonPtr dmn,
 {
     g_autoptr(GVariant) reply = NULL;
     g_autoptr(GUnixFDList) replyFD = NULL;
-    GVariant *message = NULL;
+    g_autoptr(GVariant) message = NULL;
     GDBusConnection *systemBus;
     int fd;
     int rc;
-- 
2.26.2




More information about the libvir-list mailing list