X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fexecute.c;h=a806d42827a8afa5389bc52948e6498b7cfee884;hb=039f0e70a0fcd71dcf7cc2f3ba2cea2e3b186a60;hp=5e4135e03086b1732cc5d806800291cea2abd27e;hpb=7b3fd6313c4b07b6f822a9f979d0c22350a401d9;p=elogind.git diff --git a/src/core/execute.c b/src/core/execute.c index 5e4135e03..a806d4282 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -84,7 +84,7 @@ #include "mkdir.h" #include "apparmor-util.h" #include "smack-util.h" -#include "bus-kernel.h" +#include "bus-endpoint.h" #include "label.h" #include "cap-list.h" @@ -130,7 +130,7 @@ static int shift_fds(int fds[], unsigned n_fds) { fds[i] = nfd; /* Hmm, the fd we wanted isn't free? Then - * let's remember that and try again from here*/ + * let's remember that and try again from here */ if (nfd != i+3 && restart_from < 0) restart_from = i; } @@ -1984,7 +1984,7 @@ int exec_context_destroy_runtime_directory(ExecContext *c, const char *runtime_p /* We execute this synchronously, since we need to be * sure this is gone when we start the service * next. */ - rm_rf_dangerous(p, false, true, false); + rm_rf(p, false, true, false); } return 0; @@ -2007,7 +2007,7 @@ void exec_command_done_array(ExecCommand *c, unsigned n) { exec_command_done(c+i); } -void exec_command_free_list(ExecCommand *c) { +ExecCommand* exec_command_free_list(ExecCommand *c) { ExecCommand *i; while ((i = c)) { @@ -2015,15 +2015,26 @@ void exec_command_free_list(ExecCommand *c) { exec_command_done(i); free(i); } + + return NULL; } void exec_command_free_array(ExecCommand **c, unsigned n) { unsigned i; - for (i = 0; i < n; i++) { - exec_command_free_list(c[i]); - c[i] = NULL; - } + for (i = 0; i < n; i++) + c[i] = exec_command_free_list(c[i]); +} + +typedef struct InvalidEnvInfo { + const char *unit_id; + const char *path; +} InvalidEnvInfo; + +static void invalid_env(const char *p, void *userdata) { + InvalidEnvInfo *info = userdata; + + log_unit_error(info->unit_id, "Ignoring invalid environment assignment '%s': %s", p, info->path); } int exec_context_load_environment(const ExecContext *c, const char *unit_id, char ***l) { @@ -2082,8 +2093,14 @@ int exec_context_load_environment(const ExecContext *c, const char *unit_id, cha return k; } /* Log invalid environment variables with filename */ - if (p) - p = strv_env_clean_log(p, unit_id, pglob.gl_pathv[n]); + if (p) { + InvalidEnvInfo info = { + .unit_id = unit_id, + .path = pglob.gl_pathv[n] + }; + + p = strv_env_clean_with_callback(p, invalid_env, &info); + } if (r == NULL) r = p;