diff options
author | Benjamin Berg <bberg@redhat.com> | 2021-01-10 19:26:07 +0100 |
---|---|---|
committer | Benjamin Berg <bberg@redhat.com> | 2021-01-14 14:54:00 +0100 |
commit | 3b57d117f78ad06e56974b9512a394fd9ef13a07 (patch) | |
tree | a1cd4f98c5878a62d57368d4fc1bf706ef4b7b72 | |
parent | 87d92fece1bbc67146631330649cee2353bd6761 (diff) | |
download | gnome-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.c | 4 |
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; |