debian/patches: Add 0006_util-Blacklist-some-session-specific-variables.patch. Fix systemd-logind originated problems when unlocking screen saver. (Closes: #986100).
This commit is contained in:
parent
86508ceb95
commit
09d3bf1742
73
debian/patches/0006_util-Blacklist-some-session-specific-variables.patch
vendored
Normal file
73
debian/patches/0006_util-Blacklist-some-session-specific-variables.patch
vendored
Normal file
@ -0,0 +1,73 @@
|
||||
From 29bd7ce251aa617d9f93c8ed95ee7ab49c8684ef Mon Sep 17 00:00:00 2001
|
||||
From: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
|
||||
Date: Mon, 17 May 2021 00:05:16 +0200
|
||||
Forwarded: https://github.com/mate-desktop/mate-session-manager/pull/282
|
||||
Subject: [PATCH] util: Blacklist some session-specific variables
|
||||
|
||||
Things like XDG_SESSION_ID should not be uploaded to the environment.
|
||||
For example this is broken currently:
|
||||
|
||||
1. SSH to your machine
|
||||
2. Log in to MATE Shell
|
||||
3. Log out
|
||||
4. Log in again
|
||||
5. Lock the screen
|
||||
6. Try to unlock
|
||||
|
||||
You can't, and this is because the XDG_SESSION_ID from the first session
|
||||
(step 2) has leaked through to the second one (step 4), and so MATE
|
||||
Shell is listening to the `logind` `UnlockSession` signal for the wrong
|
||||
session. The SSH session established in step 1 serves to keep the
|
||||
`systemd --user` instance alive, so that the state is not torn down
|
||||
between logins.
|
||||
|
||||
Original patch for GNOME by Iain Lane <iainl@gnome.org>.
|
||||
|
||||
Patch ported over to MATE's session manager by Mike Gabriel
|
||||
<sunweaver@debian.org>.
|
||||
|
||||
---
|
||||
mate-session/gsm-util.c | 17 ++++++++++++++++-
|
||||
1 file changed, 16 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/mate-session/gsm-util.c
|
||||
+++ b/mate-session/gsm-util.c
|
||||
@@ -38,6 +38,13 @@
|
||||
|
||||
static gchar *_saved_session_dir = NULL;
|
||||
|
||||
+static const char * const variable_blacklist[] = {
|
||||
+ "XDG_SEAT",
|
||||
+ "XDG_SESSION_ID",
|
||||
+ "XDG_VTNR",
|
||||
+ NULL
|
||||
+};
|
||||
+
|
||||
char *
|
||||
gsm_util_find_desktop_file_for_app_name (const char *name,
|
||||
char **autostart_dirs)
|
||||
@@ -509,6 +516,9 @@
|
||||
const char *entry_name = entry_names[i];
|
||||
const char *entry_value = g_getenv (entry_name);
|
||||
|
||||
+ if (g_strv_contains (variable_blacklist, entry_name))
|
||||
+ continue;
|
||||
+
|
||||
if (!g_utf8_validate (entry_name, -1, NULL))
|
||||
continue;
|
||||
|
||||
@@ -576,8 +586,13 @@
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+ entries = g_get_environ ();
|
||||
+
|
||||
+ for (; variable_blacklist[i] != NULL; i++)
|
||||
+ entries = g_environ_unsetenv (entries, variable_blacklist[i]);
|
||||
+
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("as"));
|
||||
- for (entries = g_get_environ (); entries[i] != NULL; i++) {
|
||||
+ for (i = 0; entries[i] != NULL; i++) {
|
||||
const char *entry = entries[i];
|
||||
|
||||
if (!g_utf8_validate (entry, -1, NULL))
|
1
debian/patches/series
vendored
1
debian/patches/series
vendored
@ -1 +1,2 @@
|
||||
0005_lock-session-before-user-switch.patch
|
||||
0006_util-Blacklist-some-session-specific-variables.patch
|
||||
|
Loading…
Reference in New Issue
Block a user