multiuser_utils: Add bool chngdir option to setup_environment.

This commit is contained in:
Augustin Cavalier 2017-07-23 10:22:25 -04:00
parent 5cc11bf479
commit eed40cb8c5
2 changed files with 10 additions and 7 deletions

View File

@ -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;
}

View File

@ -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