summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Kareh <[email protected]>2025-10-09 09:41:37 -0400
committerVictor Kareh <[email protected]>2025-10-15 14:50:37 +0000
commit6df44358e1e1688a32c63d840ea50e21491ffc0a (patch)
tree09953dd712b34a5e69661d2d10fbb99f66082a4c
parent7258f4630cd15e74278e7dd5cbd6c9170c748ddb (diff)
downloadmate-session-manager-6df44358e1e1688a32c63d840ea50e21491ffc0a.tar.bz2
mate-session-manager-6df44358e1e1688a32c63d840ea50e21491ffc0a.tar.xz
manager: Loosen environment variable restrictionsHEADmaster
This loosens mate-session's env var value restrictions to match systemd's modern restrictions. Backported from https://gitlab.gnome.org/GNOME/gnome-session/-/commit/cbc5e5de421359ee5642e44fa9ab670d705d23ea
-rw-r--r--configure.ac6
-rw-r--r--mate-session/gsm-util.c14
2 files changed, 17 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac
index fd7f6a0..0bf02ca 100644
--- a/configure.ac
+++ b/configure.ac
@@ -120,6 +120,12 @@ if test "x$with_systemd" != "xno" ; then
AC_DEFINE(HAVE_SYSTEMD, 1, [systemd support])
AC_SUBST(SYSTEMD_CFLAGS)
AC_SUBST(SYSTEMD_LIBS)
+ PKG_CHECK_EXISTS([libsystemd],
+ [systemd_pkgconfig=libsystemd],
+ [systemd_pkgconfig=libsystemd-login])
+ PKG_CHECK_EXISTS([$systemd_pkgconfig >= 248],,
+ [AC_DEFINE([SYSTEMD_STRICT_ENV], [1],
+ [Use strict environment variable validation for systemd < 248])])
fi
fi
AM_CONDITIONAL(HAVE_SYSTEMD, test "x$use_systemd" = "xyes")
diff --git a/mate-session/gsm-util.c b/mate-session/gsm-util.c
index 6b7f7db..5da30d2 100644
--- a/mate-session/gsm-util.c
+++ b/mate-session/gsm-util.c
@@ -501,6 +501,13 @@ gsm_util_update_activation_environment (const char *variable,
return environment_updated;
}
+#define ENV_NAME_PATTERN "[a-zA-Z_][a-zA-Z0-9_]*"
+#ifdef SYSTEMD_STRICT_ENV
+#define ENV_VALUE_PATTERN "(?:[ \t\n]|[^[:cntrl:]])*"
+#else
+#define ENV_VALUE_PATTERN ".*"
+#endif
+
gboolean
gsm_util_export_activation_environment (GError **error)
{
@@ -519,13 +526,14 @@ gsm_util_export_activation_environment (GError **error)
return FALSE;
}
- name_regex = g_regex_new ("^[a-zA-Z_][a-zA-Z0-9_]*$", G_REGEX_OPTIMIZE, 0, error);
+ name_regex = g_regex_new ("^" ENV_NAME_PATTERN "$", G_REGEX_OPTIMIZE, 0, error);
if (name_regex == NULL) {
return FALSE;
}
- value_regex = g_regex_new ("^(?:[ \t\n]|[^[:cntrl:]])*$", G_REGEX_OPTIMIZE, 0, error);
+
+ value_regex = g_regex_new ("^" ENV_VALUE_PATTERN "$", G_REGEX_OPTIMIZE, 0, error);
if (value_regex == NULL) {
return FALSE;
@@ -597,7 +605,7 @@ gsm_util_export_user_environment (GError **error)
return FALSE;
}
- regex = g_regex_new ("^[a-zA-Z_][a-zA-Z0-9_]*=(?:[ \t\n]|[^[:cntrl:]])*$", G_REGEX_OPTIMIZE, 0, error);
+ regex = g_regex_new ("^" ENV_NAME_PATTERN "=" ENV_VALUE_PATTERN "$", G_REGEX_OPTIMIZE, 0, error);
if (regex == NULL) {
return FALSE;