aboutsummaryrefslogtreecommitdiff
path: root/libexec/rshd
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>1995-11-12 18:31:23 +0000
committerPeter Wemm <peter@FreeBSD.org>1995-11-12 18:31:23 +0000
commitb048c7358804f515335c8d5d0b7f1a9265a7aa65 (patch)
tree206875b98a4a846c369352cc15899629214162b9 /libexec/rshd
parenta07ffb0cda32561318c6df1c66c2af635a622a31 (diff)
downloadsrc-b048c7358804f515335c8d5d0b7f1a9265a7aa65.tar.gz
src-b048c7358804f515335c8d5d0b7f1a9265a7aa65.zip
Move the setlogin() call a little earlier.. It was being done in the child
process - which would be no longer allowed if the setlogin() changes go through. Now the parent (the session leader, when started by inetd) does it.
Notes
Notes: svn path=/head/; revision=12240
Diffstat (limited to 'libexec/rshd')
-rw-r--r--libexec/rshd/rshd.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/libexec/rshd/rshd.c b/libexec/rshd/rshd.c
index 77636015f340..4469d4acf7e0 100644
--- a/libexec/rshd/rshd.c
+++ b/libexec/rshd/rshd.c
@@ -469,6 +469,11 @@ fail:
error("Logins currently disabled.\n");
exit(1);
}
+#if BSD > 43
+ /* before fork, while we're session leader */
+ if (setlogin(pwd->pw_name) < 0)
+ syslog(LOG_ERR, "setlogin() failed: %m");
+#endif
(void) write(STDERR_FILENO, "\0", 1);
sent_null = 1;
@@ -643,10 +648,6 @@ fail:
}
if (*pwd->pw_shell == '\0')
pwd->pw_shell = _PATH_BSHELL;
-#if BSD > 43
- if (setlogin(pwd->pw_name) < 0)
- syslog(LOG_ERR, "setlogin() failed: %m");
-#endif
(void) setgid((gid_t)pwd->pw_gid);
initgroups(pwd->pw_name, pwd->pw_gid);
(void) setuid((uid_t)pwd->pw_uid);