[gvfs] dnssd: Free client object on finalize
- From: Ondrej Holy <oholy src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gvfs] dnssd: Free client object on finalize
- Date: Fri, 18 Nov 2016 15:24:43 +0000 (UTC)
commit ccf7b9181d322f30979b6245d046d13615e6b1c7
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 c7f53b0..e3f3318 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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]