summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Berg <bberg@redhat.com>2021-01-10 19:26:07 +0100
committerBenjamin Berg <bberg@redhat.com>2021-01-14 14:54:00 +0100
commit3b57d117f78ad06e56974b9512a394fd9ef13a07 (patch)
treea1cd4f98c5878a62d57368d4fc1bf706ef4b7b72
parent87d92fece1bbc67146631330649cee2353bd6761 (diff)
downloadgnome-session-3b57d117f78ad06e56974b9512a394fd9ef13a07.tar.gz
util: Disable capturing of subpatterns
It seems that the pattern we use will create a subpattern match for every character of the value. This appears to then result in a stack overflow when matching very long values. It might be an idea to limit the overall length of an environment variable that is uploaded. But, this should fix the issue of crashes. Fixes: #42
-rw-r--r--gnome-session/gsm-util.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gnome-session/gsm-util.c b/gnome-session/gsm-util.c
index 070fa75b..cdf67610 100644
--- a/gnome-session/gsm-util.c
+++ b/gnome-session/gsm-util.c
@@ -550,7 +550,7 @@ gsm_util_export_activation_environment (GError **error)
return FALSE;
}
- value_regex = g_regex_new ("^([ \t\n]|[^[:cntrl:]])*$", G_REGEX_OPTIMIZE, 0, error);
+ value_regex = g_regex_new ("^(?:[ \t\n]|[^[:cntrl:]])*$", G_REGEX_OPTIMIZE, 0, error);
if (value_regex == NULL) {
return FALSE;
@@ -630,7 +630,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 ("^[a-zA-Z_][a-zA-Z0-9_]*=(?:[ \t\n]|[^[:cntrl:]])*$", G_REGEX_OPTIMIZE, 0, error);
if (regex == NULL) {
return FALSE;