summaryrefslogtreecommitdiff
path: root/mate-session/gsm-util.c
diff options
context:
space:
mode:
Diffstat (limited to 'mate-session/gsm-util.c')
-rw-r--r--mate-session/gsm-util.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/mate-session/gsm-util.c b/mate-session/gsm-util.c
index a760fc3..5c812c2 100644
--- a/mate-session/gsm-util.c
+++ b/mate-session/gsm-util.c
@@ -39,6 +39,13 @@
static gchar *_saved_session_dir = NULL;
+static const char * const variable_blacklist[] = {
+ "XDG_SEAT",
+ "XDG_SESSION_ID",
+ "XDG_VTNR",
+ NULL
+};
+
gchar **
gsm_get_screen_locker_command (void)
{
@@ -536,6 +543,9 @@ gsm_util_export_activation_environment (GError **error)
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;
@@ -603,8 +613,13 @@ gsm_util_export_user_environment (GError **error)
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))