From ccf7b9181d322f30979b6245d046d13615e6b1c7 Mon Sep 17 00:00:00 2001 From: Ondrej Holy Date: Thu, 13 Oct 2016 12:36:27 +0200 Subject: 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 file changed, 6 insertions(+) diff --git a/daemon/gvfsbackenddnssd.c b/daemon/gvfsbackenddnssd.c index c7f53b01..e3f33189 100644 --- a/daemon/gvfsbackenddnssd.c +++ b/daemon/gvfsbackenddnssd.c @@ -804,6 +804,12 @@ g_vfs_backend_dns_sd_finalize (GObject *object) remove_browsers (backend); g_list_free_full (backend->resolvers, (GDestroyNotify)avahi_service_resolver_free); + 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); -- cgit v1.2.1