[gvfs/gnome-3-22] dnssd: Free client object on finalize



commit 7435ecc7fc104176a41a12dfe9078b8860f8a3b0
Author: Ondrej Holy <oholy redhat com>
Date:   Thu Oct 13 12:36:27 2016 +0200

    dnssd: Free client object on finalize
    
    Client object is not freed even if there isn't more backends.
    Free the client in order to avoid potential use-after-free crashes
    caused by some avahi client activity.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=631023

 daemon/gvfsbackenddnssd.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
---
diff --git a/daemon/gvfsbackenddnssd.c b/daemon/gvfsbackenddnssd.c
index ed88af5..e5d57ec 100644
--- a/daemon/gvfsbackenddnssd.c
+++ b/daemon/gvfsbackenddnssd.c
@@ -813,6 +813,12 @@ g_vfs_backend_dns_sd_finalize (GObject *object)
   remove_browsers (backend);
   remove_resolvers (backend);
 
+  if (dnssd_backends == NULL && global_client)
+    {
+      avahi_client_free (global_client);
+      global_client = NULL;
+    }
+
   if (backend->mount_spec)
     g_mount_spec_unref (backend->mount_spec);
   


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]