summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;