summaryrefslogtreecommitdiff
path: root/src/core/execute.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2016-08-25 10:24:10 +0200
committerDjalal Harouni <tixxdz@opendz.org>2016-09-25 10:18:57 +0200
commitbe39ccf3a0d4d15324af1de4d8552a1d65f40808 (patch)
tree545aff804a0f5c9ac541ca249af60af9a4a357ff /src/core/execute.c
parent07689d5d2c07ee434437de5e39bf0abaa772818b (diff)
execute: move suppression of HOME=/ and SHELL=/bin/nologin into user-util.c
This adds a new call get_user_creds_clean(), which is just like get_user_creds() but returns NULL in the home/shell parameters if they contain no useful information. This code previously lived in execute.c, but by generalizing this we can reuse it in run.c.
Diffstat (limited to 'src/core/execute.c')
-rw-r--r--src/core/execute.c14
1 files changed, 3 insertions, 11 deletions
diff --git a/src/core/execute.c b/src/core/execute.c
index 3877293b4f..c7a3ea39e7 100644
--- a/src/core/execute.c
+++ b/src/core/execute.c
@@ -2051,22 +2051,14 @@ static int exec_child(
} else {
if (context->user) {
username = context->user;
- r = get_user_creds(&username, &uid, &gid, &home, &shell);
+ r = get_user_creds_clean(&username, &uid, &gid, &home, &shell);
if (r < 0) {
*exit_status = EXIT_USER;
return r;
}
- /* Don't set $HOME or $SHELL if they are are not particularly enlightening anyway. */
- if (isempty(home) || path_equal(home, "/"))
- home = NULL;
-
- if (isempty(shell) || PATH_IN_SET(shell,
- "/bin/nologin",
- "/sbin/nologin",
- "/usr/bin/nologin",
- "/usr/sbin/nologin"))
- shell = NULL;
+ /* Note that we don't set $HOME or $SHELL if they are are not particularly enlightening anyway
+ * (i.e. are "/" or "/bin/nologin"). */
}
if (context->group) {