diff options
author | Peter Wemm <peter@FreeBSD.org> | 1995-11-12 18:31:23 +0000 |
---|---|---|
committer | Peter Wemm <peter@FreeBSD.org> | 1995-11-12 18:31:23 +0000 |
commit | b048c7358804f515335c8d5d0b7f1a9265a7aa65 (patch) | |
tree | 206875b98a4a846c369352cc15899629214162b9 /libexec/rshd | |
parent | a07ffb0cda32561318c6df1c66c2af635a622a31 (diff) | |
download | src-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.c | 9 |
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); |