Skip pam if running as root
Reported-by: Piotr Karbowski <piotr.karbowski@gmail.com> X-Gentoo-Bug: 386623 X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=386623
This commit is contained in:
parent
3247184d86
commit
3272261479
@ -1178,12 +1178,9 @@ start_stop_daemon(int argc, char **argv)
|
||||
}
|
||||
|
||||
#ifdef HAVE_PAM
|
||||
if (changeuser != NULL)
|
||||
if (changeuser != NULL) {
|
||||
pamr = pam_start("start-stop-daemon",
|
||||
changeuser, &conv, &pamh);
|
||||
else
|
||||
pamr = pam_start("start-stop-daemon",
|
||||
"nobody", &conv, &pamh);
|
||||
|
||||
if (pamr == PAM_SUCCESS)
|
||||
pamr = pam_acct_mgmt(pamh, PAM_SILENT);
|
||||
@ -1192,6 +1189,7 @@ start_stop_daemon(int argc, char **argv)
|
||||
if (pamr != PAM_SUCCESS)
|
||||
eerrorx("%s: pam error: %s",
|
||||
applet, pam_strerror(pamh, pamr));
|
||||
}
|
||||
#endif
|
||||
|
||||
if (gid && setgid(gid))
|
||||
@ -1219,6 +1217,7 @@ start_stop_daemon(int argc, char **argv)
|
||||
rc_stringlist_add(env_list, environ[i++]);
|
||||
|
||||
#ifdef HAVE_PAM
|
||||
if (changeuser != NULL) {
|
||||
pamenv = (const char *const *)pam_getenvlist(pamh);
|
||||
if (pamenv) {
|
||||
while (*pamenv) {
|
||||
@ -1230,6 +1229,7 @@ start_stop_daemon(int argc, char **argv)
|
||||
pamenv++;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
TAILQ_FOREACH(env, env_list, entries) {
|
||||
@ -1304,7 +1304,7 @@ start_stop_daemon(int argc, char **argv)
|
||||
setsid();
|
||||
execvp(exec, argv);
|
||||
#ifdef HAVE_PAM
|
||||
if (pamr == PAM_SUCCESS)
|
||||
if (changeuser != NULL && pamr == PAM_SUCCESS)
|
||||
pam_close_session(pamh, PAM_SILENT);
|
||||
#endif
|
||||
eerrorx("%s: failed to exec `%s': %s",
|
||||
|
Loading…
x
Reference in New Issue
Block a user