From 11ec2f6895cdeb18c10d8a2e3810402e3d3d78c4 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 12 May 2015 11:05:52 +0200 Subject: [PATCH] build: Use an strv for envp instead of a GPtrArray --- xdg-app-builtins-build.c | 8 +++----- xdg-app-run.c | 25 +++++++++++++++---------- xdg-app-run.h | 3 +-- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/xdg-app-builtins-build.c b/xdg-app-builtins-build.c index 72298f90..d7cdfa12 100644 --- a/xdg-app-builtins-build.c +++ b/xdg-app-builtins-build.c @@ -69,7 +69,7 @@ xdg_app_builtin_build (int argc, char **argv, GCancellable *cancellable, GError g_autoptr (GError) my_error = NULL; g_autoptr (GError) my_error2 = NULL; g_autoptr(GPtrArray) argv_array = NULL; - g_autoptr(GPtrArray) env_array = NULL; + glnx_strfreev char **envp = NULL; gsize metadata_size; const char *directory = NULL; const char *command = "/bin/sh"; @@ -161,11 +161,9 @@ xdg_app_builtin_build (int argc, char **argv, GCancellable *cancellable, GError g_ptr_array_add (argv_array, NULL); - env_array = g_ptr_array_new_with_free_func (g_free); - xdg_app_run_setup_minimal_env (env_array, TRUE); - g_ptr_array_add (env_array, NULL); + envp = xdg_app_run_get_minimal_env (TRUE); - if (!execve (HELPER, (char **)argv_array->pdata, (char **)env_array->pdata)) + if (!execve (HELPER, (char **)argv_array->pdata, envp)) { g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errno), "Unable to start app"); goto out; diff --git a/xdg-app-run.c b/xdg-app-run.c index 47f4f9cd..72525d93 100644 --- a/xdg-app-run.c +++ b/xdg-app-run.c @@ -305,10 +305,10 @@ xdg_app_run_add_environment_args (GPtrArray *argv_array, } } -void -xdg_app_run_setup_minimal_env (GPtrArray *env_array, - gboolean devel) +char ** +xdg_app_run_get_minimal_env (gboolean devel) { + GPtrArray *env_array; static const char const *exports[] = { "PATH=/self/bin:/usr/bin", "_LD_LIBRARY_PATH=/self/lib", @@ -358,31 +358,36 @@ xdg_app_run_setup_minimal_env (GPtrArray *env_array, }; int i; + env_array = g_ptr_array_new_with_free_func (g_free); + for (i = 0; i < G_N_ELEMENTS(exports); i++) g_ptr_array_add (env_array, g_strdup (exports[i])); if (devel) { for (i = 0; i < G_N_ELEMENTS(exports_devel); i++) - g_ptr_array_add (env_array, g_strdup (exports_devel[i])); + g_ptr_array_add (env_array, g_strdup (exports_devel[i])); } for (i = 0; i < G_N_ELEMENTS(copy); i++) { const char *current = g_getenv(copy[i]); if (current) - g_ptr_array_add (env_array, g_strdup_printf ("%s=%s", copy[i], current)); + g_ptr_array_add (env_array, g_strdup_printf ("%s=%s", copy[i], current)); } if (!devel) { for (i = 0; i < G_N_ELEMENTS(copy_nodevel); i++) - { - const char *current = g_getenv(copy_nodevel[i]); - if (current) - g_ptr_array_add (env_array, g_strdup_printf ("%s=%s", copy_nodevel[i], current)); - } + { + const char *current = g_getenv(copy_nodevel[i]); + if (current) + g_ptr_array_add (env_array, g_strdup_printf ("%s=%s", copy_nodevel[i], current)); + } } + + g_ptr_array_add (env_array, NULL); + return (char **)g_ptr_array_free (env_array, FALSE); } GFile * diff --git a/xdg-app-run.h b/xdg-app-run.h index 9ea213c0..ac0c9a21 100644 --- a/xdg-app-run.h +++ b/xdg-app-run.h @@ -30,8 +30,7 @@ void xdg_app_run_add_environment_args (GPtrArray *argv_array, GKeyFile *metakey, const char **allow, const char **forbid); -void xdg_app_run_setup_minimal_env (GPtrArray *env_array, - gboolean devel); +char ** xdg_app_run_get_minimal_env (gboolean devel); void xdg_app_run_add_x11_args (GPtrArray *argv_array); void xdg_app_run_add_no_x11_args (GPtrArray *argv_array);