multiuser_utils: Add bool chngdir option to setup_environment.

This commit is contained in:
Augustin Cavalier
2017-07-23 11:07:36 -04:00
parent 5cc11bf479
commit eed40cb8c5
2 changed files with 10 additions and 7 deletions
+8 -6
View File
@@ -172,7 +172,7 @@ authenticate_user(const char* prompt, const char* user, passwd** _passwd,
status_t status_t
setup_environment(struct passwd* passwd, bool preserveEnvironment) setup_environment(struct passwd* passwd, bool preserveEnvironment, bool chngdir)
{ {
const char* term = getenv("TERM"); const char* term = getenv("TERM");
if (!preserveEnvironment) { if (!preserveEnvironment) {
@@ -200,12 +200,14 @@ setup_environment(struct passwd* passwd, bool preserveEnvironment)
if (passwd->pw_uid && setuid(passwd->pw_uid) != 0) if (passwd->pw_uid && setuid(passwd->pw_uid) != 0)
return errno; return errno;
const char* home = getenv("HOME"); if (chngdir) {
if (home == NULL) const char* home = getenv("HOME");
return B_ENTRY_NOT_FOUND; if (home == NULL)
return B_ENTRY_NOT_FOUND;
if (chdir(home) != 0) if (chdir(home) != 0)
return errno; return errno;
}
return B_OK; return B_OK;
} }
+2 -1
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, status_t authenticate_user(const char* prompt, const char* user,
passwd** _passwd, spwd** _spwd, int maxTries, bool useStdio); 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 #endif // MULTIUSER_UTILS_H