summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Holy <oholy@redhat.com>2018-02-16 10:22:57 +0100
committerOndrej Holy <oholy@redhat.com>2018-02-19 13:24:39 +0100
commite147e48f91c208aa2517b52a9dfeb62daa4ffb26 (patch)
tree8d98754fdbf538ea78fde41ce8e970947c4915b5
parentdec2f32531872014a99a318fb18f9bb889e6c8d0 (diff)
downloadgvfs-e147e48f91c208aa2517b52a9dfeb62daa4ffb26.tar.gz
daemon: Add missing guards for job_sources
Use daemon->lock when accessing daemon->job_sources as on other places. This might potentially help to fix some segfaults. https://bugzilla.gnome.org/show_bug.cgi?id=787992
-rw-r--r--daemon/gvfsdaemon.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/daemon/gvfsdaemon.c b/daemon/gvfsdaemon.c
index 69e5687d..09336ec8 100644
--- a/daemon/gvfsdaemon.c
+++ b/daemon/gvfsdaemon.c
@@ -1067,6 +1067,8 @@ g_vfs_daemon_get_blocking_processes (GVfsDaemon *daemon)
GArray *processes;
GList *l;
+ g_mutex_lock (&daemon->lock);
+
processes = g_array_new (FALSE, FALSE, sizeof (GPid));
for (l = daemon->job_sources; l != NULL; l = l->next)
{
@@ -1078,6 +1080,8 @@ g_vfs_daemon_get_blocking_processes (GVfsDaemon *daemon)
}
}
+ g_mutex_unlock (&daemon->lock);
+
return processes;
}
@@ -1122,8 +1126,12 @@ g_vfs_daemon_close_active_channels (GVfsDaemon *daemon,
{
GList *l;
- for (l = daemon->job_sources; l != NULL; l = l->next)
- if (G_VFS_IS_CHANNEL (l->data) &&
- g_vfs_channel_get_backend (G_VFS_CHANNEL (l->data)) == backend)
- g_vfs_channel_force_close (G_VFS_CHANNEL (l->data));
+ g_mutex_lock (&daemon->lock);
+
+ for (l = daemon->job_sources; l != NULL; l = l->next)
+ if (G_VFS_IS_CHANNEL (l->data) &&
+ g_vfs_channel_get_backend (G_VFS_CHANNEL (l->data)) == backend)
+ g_vfs_channel_force_close (G_VFS_CHANNEL (l->data));
+
+ g_mutex_unlock (&daemon->lock);
}