[caja] 02/07: debian/patches: Drop 0004_avoid-automounts-while-screen-is-locked.patch. Applied upstream.

Mike Gabriel sunweaver at debian.org
Mon Jun 15 07:50:46 UTC 2015


This is an automated email from the git hooks/post-receive script.

sunweaver pushed a commit to branch debian/experimental
in repository caja.

commit 9dda97db151855c8cca9cd17d088ed1152d7b876
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Mon Jun 15 09:09:40 2015 +0200

    debian/patches: Drop 0004_avoid-automounts-while-screen-is-locked.patch. Applied upstream.
---
 ...4_avoid-automounts-while-screen-is-locked.patch | 334 ---------------------
 debian/patches/series                              |   1 -
 2 files changed, 335 deletions(-)

diff --git a/debian/patches/0004_avoid-automounts-while-screen-is-locked.patch b/debian/patches/0004_avoid-automounts-while-screen-is-locked.patch
deleted file mode 100644
index 72ce967..0000000
--- a/debian/patches/0004_avoid-automounts-while-screen-is-locked.patch
+++ /dev/null
@@ -1,334 +0,0 @@
-From adc45ec84298f6246d9ed219607bb5c169f50e08 Mon Sep 17 00:00:00 2001
-From: tarakbumba <tarakbumba at gmail.com>
-Date: Tue, 7 Apr 2015 00:07:27 +0300
-Subject: [PATCH 1/2] Fix for https://github.com/mate-desktop/caja/issues/398
-
-On the Shmoocon at 2011 there was a presentation by Jon Larimer demonstrating
-how to abuse vulnerabilities and bugs, or even just creating socially or
-security compromising thumbnails in mounting and thumbnailing, which happens
-on automounting USB drives. This is a particular issue when this happens on a
-locked box where the attacker doesn't otherwise have access to the user
-account:
-
-http://www.net-security.org/secworld.php?id=10544
-
-Disable automounting if the MATE screen saver is currently locked.
-
-See also https://bugzilla.gnome.org/show_bug.cgi?id=642020
-
-This commit is merely based on :
-https://git.gnome.org/browse/nautilus/commit/?h=gnome-2-32&id=b7262fa945ef1ea936c15f0d248ad7a024d97dca
-
-v2: Patch rebased against caja 1.8.x (Mike Gabriel)
----
- src/caja-application.c | 232 ++++++++++++++++++++++++++++++++++++++++++++++++-
- src/caja-application.h |   4 +
- 2 files changed, 232 insertions(+), 4 deletions(-)
-
---- a/src/caja-application.c
-+++ b/src/caja-application.c
-@@ -122,7 +122,10 @@
- static void     volume_added_callback              (GVolumeMonitor           *monitor,
-         GVolume                  *volume,
-         CajaApplication      *application);
--static void     drive_connected_callback           (GVolumeMonitor           *monitor,
-+static void     volume_removed_callback            (GVolumeMonitor           *monitor,
-+	    GVolume                  *volume,
-+	    CajaApplication      *application);
-+ static void     drive_connected_callback           (GVolumeMonitor           *monitor,
-         GDrive                   *drive,
-         CajaApplication      *application);
- static void     drive_listen_for_eject_button      (GDrive *drive,
-@@ -362,7 +365,18 @@
- 
-     g_object_unref (application->unique_app);
- 
--    if (application->automount_idle_id != 0)
-+	if (application->ss_watch_id > 0)
-+	{
-+		g_bus_unwatch_name (application->ss_watch_id);
-+	}
-+	
-+	if (application->volume_queue != NULL)
-+	{
-+		g_list_free_full (application->volume_queue, g_object_unref);
-+		application->volume_queue = NULL;
-+	}
-+
-+ 	if (application->automount_idle_id != 0)
-     {
-         g_source_remove (application->automount_idle_id);
-         application->automount_idle_id = 0;
-@@ -374,6 +388,12 @@
-         fdb_manager = NULL;
-     }
- 
-+    if (application->ss_proxy != NULL)
-+    {
-+		g_object_unref (application->ss_proxy);
-+		application->ss_proxy = NULL;
-+	}
-+
-     G_OBJECT_CLASS (caja_application_parent_class)->finalize (object);
- }
- 
-@@ -554,6 +574,180 @@
- }
- 
- static void
-+check_volume_queue (CajaApplication *application)
-+{
-+        GList *l, *next;
-+        GVolume *volume;
-+
-+        l = application->volume_queue;
-+
-+        if (application->screensaver_active)
-+        {
-+                return;
-+        }
-+
-+        while (l != NULL) {
-+		volume = l->data;
-+		next = l->next;
-+
-+		caja_file_operations_mount_volume (NULL, volume, TRUE);
-+		application->volume_queue =
-+			g_list_remove (application->volume_queue, volume);
-+
-+		g_object_unref (volume);
-+		l = next;
-+        }
-+
-+        application->volume_queue = NULL;
-+}
-+
-+#define SCREENSAVER_NAME "org.mate.ScreenSaver"
-+#define SCREENSAVER_PATH "/org/mate/ScreenSaver"
-+#define SCREENSAVER_INTERFACE "org.mate.ScreenSaver"
-+
-+static void
-+screensaver_signal_callback (GDBusProxy *proxy,
-+                             const gchar *sender_name,
-+                             const gchar *signal_name,
-+                             GVariant *parameters,
-+                             gpointer user_data)
-+{
-+	CajaApplication *application = user_data;
-+
-+	if (g_strcmp0 (signal_name, "ActiveChanged") == 0)
-+	{
-+		g_variant_get (parameters, "(b)", &application->screensaver_active);
-+		g_debug ("Screensaver active changed to %d", application->screensaver_active);
-+
-+		check_volume_queue (application);
-+	}
-+}
-+
-+static void
-+screensaver_get_active_ready_cb (GObject *source,
-+				 GAsyncResult *res,
-+				 gpointer user_data)
-+{
-+	CajaApplication *application = user_data;
-+	GDBusProxy *proxy = application->ss_proxy;
-+	GVariant *result;
-+	GError *error = NULL;
-+
-+	result = g_dbus_proxy_call_finish (proxy,
-+					   res,
-+					   &error);
-+
-+	if (error != NULL) {
-+		g_warning ("Can't call GetActive() on the ScreenSaver object: %s",
-+			   error->message);
-+		g_error_free (error);
-+
-+		return;
-+	}
-+
-+	g_variant_get (result, "(b)", &application->screensaver_active);
-+	g_variant_unref (result);
-+
-+	g_debug ("Screensaver GetActive() returned %d", application->screensaver_active);
-+}
-+
-+static void
-+screensaver_proxy_ready_cb (GObject *source,
-+			    GAsyncResult *res,
-+			    gpointer user_data)
-+{
-+	CajaApplication *application = user_data;
-+	GError *error = NULL;
-+	GDBusProxy *ss_proxy;
-+	
-+	ss_proxy = g_dbus_proxy_new_finish (res, &error);
-+
-+	if (error != NULL)
-+	{
-+		g_warning ("Can't get proxy for the ScreenSaver object: %s",
-+			   error->message);
-+		g_error_free (error);
-+
-+		return;
-+	}
-+
-+	g_debug ("ScreenSaver proxy ready");
-+
-+	application->ss_proxy = ss_proxy;
-+
-+	g_signal_connect (ss_proxy, "g-signal",
-+			  G_CALLBACK (screensaver_signal_callback), application);
-+
-+	g_dbus_proxy_call (ss_proxy,
-+			   "GetActive",
-+			   NULL,
-+			   G_DBUS_CALL_FLAGS_NO_AUTO_START,
-+			   -1,
-+			   NULL,
-+			   screensaver_get_active_ready_cb,
-+			   application);
-+}
-+
-+static void
-+screensaver_appeared_callback (GDBusConnection *connection,
-+			       const gchar *name,
-+			       const gchar *name_owner,
-+			       gpointer user_data)
-+{
-+	CajaApplication *application = user_data;
-+
-+	g_debug ("ScreenSaver name appeared");
-+
-+	application->screensaver_active = FALSE;
-+
-+	g_dbus_proxy_new (connection,
-+			  G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
-+			  NULL,
-+			  name,
-+			  SCREENSAVER_PATH,
-+			  SCREENSAVER_INTERFACE,
-+			  NULL,
-+			  screensaver_proxy_ready_cb,
-+			  application);
-+}
-+
-+static void
-+screensaver_vanished_callback (GDBusConnection *connection,
-+			       const gchar *name,
-+			       gpointer user_data)
-+{
-+	CajaApplication *application = user_data;
-+
-+	g_debug ("ScreenSaver name vanished");
-+
-+	application->screensaver_active = FALSE;
-+	g_object_unref (&application->ss_proxy);
-+
-+	/* in this case force a clear of the volume queue, without
-+	 * mounting them.
-+	 */
-+	if (application->volume_queue != NULL)
-+	{
-+		g_list_free_full (application->volume_queue, g_object_unref);
-+		application->volume_queue = NULL;
-+	}
-+}
-+
-+static void
-+do_initialize_screensaver (CajaApplication *application)
-+{
-+	application->ss_watch_id =
-+		g_bus_watch_name (G_BUS_TYPE_SESSION,
-+				  SCREENSAVER_NAME,
-+				  G_BUS_NAME_WATCHER_FLAGS_NONE,
-+				  screensaver_appeared_callback,
-+				  screensaver_vanished_callback,
-+				  application,
-+				  NULL);
-+}
-+
-+
-+static void
- do_upgrades_once (CajaApplication *application,
-                   gboolean no_desktop)
- {
-@@ -601,7 +795,11 @@
-     /* Initialize the desktop link monitor singleton */
-     caja_desktop_link_monitor_get ();
- 
--    /* Watch for mounts so we can restore open windows This used
-+    /* Initialize MATE screen saver listener to control automount
-+	 * permission */
-+	do_initialize_screensaver (application);
-+
-+ 	/* Watch for mounts so we can restore open windows This used
-      * to be for showing new window on mount, but is not used
-      * anymore */
- 
-@@ -616,6 +814,8 @@
-                              G_CALLBACK (mount_added_callback), application, 0);
-     g_signal_connect_object (application->volume_monitor, "volume_added",
-                              G_CALLBACK (volume_added_callback), application, 0);
-+    g_signal_connect_object (application->volume_monitor, "volume_removed",
-+                             G_CALLBACK (volume_removed_callback), application, 0);
-     g_signal_connect_object (application->volume_monitor, "drive_connected",
-                              G_CALLBACK (drive_connected_callback), application, 0);
- 
-@@ -1477,6 +1677,34 @@
- }
- 
- static void
-+check_screen_lock_and_mount (CajaApplication *application,
-+                             GVolume *volume)
-+{
-+        if (application->screensaver_active)
-+        {
-+                /* queue the volume, to mount it after the screensaver state changed */
-+                g_debug ("Queuing volume %p", volume);
-+                application->volume_queue = g_list_prepend (application->volume_queue,
-+                                                              g_object_ref (volume));
-+        } else {
-+                /* mount it immediately */
-+		caja_file_operations_mount_volume (NULL, volume, TRUE);
-+        }       
-+}
-+
-+static void
-+volume_removed_callback (GVolumeMonitor *monitor,
-+                         GVolume *volume,
-+                         CajaApplication *application)
-+{
-+        g_debug ("Volume %p removed, removing from the queue", volume);
-+
-+        /* clear it from the queue, if present */
-+        application->volume_queue =
-+                g_list_remove (application->volume_queue, volume);
-+}
-+
-+static void
- volume_added_callback (GVolumeMonitor *monitor,
-                        GVolume *volume,
-                        CajaApplication *application)
-@@ -1485,7 +1713,7 @@
-             g_volume_should_automount (volume) &&
-             g_volume_can_mount (volume))
-     {
--        caja_file_operations_mount_volume (NULL, volume, TRUE);
-+        check_screen_lock_and_mount (application, volume);
-     }
-     else
-     {
---- a/src/caja-application.h
-+++ b/src/caja-application.h
-@@ -66,6 +66,10 @@
-     EggSMClient* smclient;
-     GVolumeMonitor* volume_monitor;
-     unsigned int automount_idle_id;
-+    gboolean screensaver_active;
-+    guint ss_watch_id;
-+    GDBusProxy *ss_proxy;
-+    GList *volume_queue;
- } CajaApplication;
- 
- typedef struct
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644
index d1c3b7e..0000000
--- a/debian/patches/series
+++ /dev/null
@@ -1 +0,0 @@
-0004_avoid-automounts-while-screen-is-locked.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mate/caja.git



More information about the pkg-mate-commits mailing list