From eed40cb8c5ebb056ffaf3df9616c72ea8e1453d1 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Sun, 23 Jul 2017 10:22:25 -0400 Subject: [PATCH] multiuser_utils: Add bool chngdir option to setup_environment. --- src/bin/multiuser/multiuser_utils.cpp | 14 ++++++++------ src/bin/multiuser/multiuser_utils.h | 3 ++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/bin/multiuser/multiuser_utils.cpp b/src/bin/multiuser/multiuser_utils.cpp index 10eb4d96a0..0d916ff2bc 100644 --- a/src/bin/multiuser/multiuser_utils.cpp +++ b/src/bin/multiuser/multiuser_utils.cpp @@ -172,7 +172,7 @@ authenticate_user(const char* prompt, const char* user, passwd** _passwd, status_t -setup_environment(struct passwd* passwd, bool preserveEnvironment) +setup_environment(struct passwd* passwd, bool preserveEnvironment, bool chngdir) { const char* term = getenv("TERM"); if (!preserveEnvironment) { @@ -200,12 +200,14 @@ setup_environment(struct passwd* passwd, bool preserveEnvironment) if (passwd->pw_uid && setuid(passwd->pw_uid) != 0) return errno; - const char* home = getenv("HOME"); - if (home == NULL) - return B_ENTRY_NOT_FOUND; + if (chngdir) { + const char* home = getenv("HOME"); + if (home == NULL) + return B_ENTRY_NOT_FOUND; - if (chdir(home) != 0) - return errno; + if (chdir(home) != 0) + return errno; + } return B_OK; } diff --git a/src/bin/multiuser/multiuser_utils.h b/src/bin/multiuser/multiuser_utils.h index fe56f00bd1..63263fbae1 100644 --- a/src/bin/multiuser/multiuser_utils.h +++ b/src/bin/multiuser/multiuser_utils.h @@ -22,7 +22,8 @@ status_t authenticate_user(const char* prompt, passwd* passwd, spwd* spwd, status_t authenticate_user(const char* prompt, const char* user, passwd** _passwd, spwd** _spwd, int maxTries, bool useStdio); -status_t setup_environment(struct passwd* passwd, bool preserveEnvironment); +status_t setup_environment(struct passwd* passwd, bool preserveEnvironment, + bool chngdir = true); #endif // MULTIUSER_UTILS_H