54 |
|
|
55 |
if (username) |
if (username) |
56 |
{ |
{ |
57 |
struct passwd *pw = mu_getpwnam (username); |
struct passwd *pw = mu_getpwnam (username); |
58 |
if (pw == NULL) |
if (pw == NULL) |
59 |
return util_finish (command, RESP_NO, |
return util_finish (command, RESP_NO, |
60 |
"User name or passwd rejected"); |
"User name or passwd rejected"); |
61 |
|
|
62 |
if (pw->pw_uid > 0 && !mu_virtual_domain) |
if (pw->pw_uid > 0 && !mu_virtual_domain) |
63 |
setuid (pw->pw_uid); |
setuid (pw->pw_uid); |
64 |
|
|
65 |
homedir = mu_normalize_path (strdup (pw->pw_dir), "/"); |
homedir = mu_normalize_path (strdup (pw->pw_dir), "/"); |
66 |
/* FIXME: Check for errors. */ |
/* FIXME: Check for errors. */ |
67 |
chdir (homedir); |
chdir (homedir); |
68 |
namespace_init(pw->pw_dir); |
namespace_init(pw->pw_dir); |
69 |
syslog (LOG_INFO, "User '%s' logged in", username); |
syslog (LOG_INFO, "User '%s' logged in", username); |
70 |
return 0; |
return 0; |
71 |
} |
} |
72 |
|
|
73 |
return util_finish (command, RESP_NO, |
return util_finish (command, RESP_NO, |