summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Persch <chpe@src.gnome.org>2023-02-03 21:39:12 +0100
committerChristian Persch <chpe@src.gnome.org>2023-02-03 21:39:12 +0100
commit720927a8cb7f6801b1e1d77cca144c60d868c8d8 (patch)
tree12211936f0caa83bebdd7789463e91fda6552ff3
parentee3e72324e391bdec49b2b5cd637ae0e9d5d496f (diff)
downloadgnome-terminal-720927a8cb7f6801b1e1d77cca144c60d868c8d8.tar.gz
all: Make env filtering uniform
Factor out the method for exclusion from the blocklist, and update the filtering in TerminalScreen to apply the same filtering as the one in the remoting code.
-rw-r--r--src/terminal-client-utils.cc24
-rw-r--r--src/terminal-client-utils.hh2
-rw-r--r--src/terminal-screen.cc3
3 files changed, 18 insertions, 11 deletions
diff --git a/src/terminal-client-utils.cc b/src/terminal-client-utils.cc
index 9e799611..cea473e4 100644
--- a/src/terminal-client-utils.cc
+++ b/src/terminal-client-utils.cc
@@ -293,6 +293,18 @@ terminal_client_get_environment_prefix_filters_excludes(void)
return filters;
}
+bool
+terminal_client_get_environment_prefix_filters_is_excluded(char const* env)
+{
+ auto const excludes = terminal_client_get_environment_prefix_filters_excludes();
+ for (auto j = 0; excludes[j]; ++j) {
+ if (g_str_equal(excludes[j], env))
+ return true;
+ }
+
+ return false;
+}
+
static char**
terminal_environ_unsetenv_prefix (char** envv,
char const* prefix)
@@ -308,17 +320,7 @@ terminal_environ_unsetenv_prefix (char** envv,
g_assert(equal != nullptr);
gs_free char* env = g_strndup(envv[i], equal - envv[i]);
- auto excluded = false;
- auto const excludes = terminal_client_get_environment_prefix_filters_excludes();
- for (auto j = 0; excludes[j]; ++j) {
- if (!g_str_equal(excludes[j], env))
- continue;
-
- excluded = true;
- break;
- }
-
- if (excluded)
+ if (terminal_client_get_environment_prefix_filters_is_excluded(env))
continue;
envv = g_environ_unsetenv (envv, env);
diff --git a/src/terminal-client-utils.hh b/src/terminal-client-utils.hh
index faf0c5ed..4771acf9 100644
--- a/src/terminal-client-utils.hh
+++ b/src/terminal-client-utils.hh
@@ -64,6 +64,8 @@ char const* const* terminal_client_get_environment_filters (void);
char const* const* terminal_client_get_environment_prefix_filters (void);
+bool terminal_client_get_environment_prefix_filters_is_excluded(char const* env);
+
char** terminal_client_filter_environment (char** envv) G_GNUC_MALLOC;
G_END_DECLS
diff --git a/src/terminal-screen.cc b/src/terminal-screen.cc
index 368094d3..ea6bffef 100644
--- a/src/terminal-screen.cc
+++ b/src/terminal-screen.cc
@@ -1416,6 +1416,9 @@ remove_prefixed_cb(void* key,
auto const env = reinterpret_cast<char const*>(key);
auto const prefix = reinterpret_cast<char const*>(user_data);
+ if (terminal_client_get_environment_prefix_filters_is_excluded(env))
+ return false;
+
return g_str_has_prefix(env, prefix);
}