diff --git a/session.c b/session.c index 93babf9..318945f 100644 --- a/session.c +++ b/session.c @@ -1420,7 +1420,7 @@ safely_chroot(const char *path, uid_t uid) memcpy(component, path, cp - path); component[cp - path] = '\0'; } - + debug3("%s: checking '%s'", __func__, component); if (stat(component, &st) != 0) @@ -1428,7 +1428,7 @@ safely_chroot(const char *path, uid_t uid) component, strerror(errno)); if (st.st_uid != 0 || (st.st_mode & 022) != 0) fatal("bad ownership or modes for chroot " - "directory %s\"%s\"", + "directory %s\"%s\"", cp == NULL ? "" : "component ", component); if (!S_ISDIR(st.st_mode)) fatal("chroot path %s\"%s\" is not a directory", @@ -1796,7 +1796,7 @@ do_child(Session *s, const char *command) argv[i] = NULL; optind = optreset = 1; __progname = argv[0]; - exit(sftp_server_main(i, argv, s->pw)); + exit(sftp_server_main(i, argv)); } if (options.use_login) { diff --git a/sftp-server-main.c b/sftp-server-main.c index 2b14569..f0b0254 100644 --- a/sftp-server-main.c +++ b/sftp-server-main.c @@ -36,15 +36,5 @@ cleanup_exit(int i) int main(int argc, char **argv) { - struct passwd *user_pw; - - /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */ - sanitise_stdfd(); - - if ((user_pw = getpwuid(getuid())) == NULL) { - fprintf(stderr, "No user found for uid %lu", (u_long)getuid()); - return 1; - } - - return (sftp_server_main(argc, argv, user_pw)); + return (sftp_server_main(argc, argv)); } diff --git a/sftp-server.c b/sftp-server.c index 24c4ff7..bd5dbdc 100644 --- a/sftp-server.c +++ b/sftp-server.c @@ -33,11 +33,9 @@ #include #include #include -#include #include #include #include -#include #include #include #include @@ -60,7 +58,6 @@ LogLevel log_level = SYSLOG_LEVEL_ERROR; /* Our client */ -struct passwd *pw = NULL; char *client_addr = NULL; /* input and output queue */ @@ -1216,8 +1213,8 @@ process(void) cp = buffer_ptr(&iqueue); msg_len = get_u32(cp); if (msg_len > SFTP_MAX_MSG_LENGTH) { - error("bad message from %s local user %s", - client_addr, pw->pw_name); + error("bad message from %s local user", + client_addr); sftp_server_cleanup_exit(11); } if (buf_len < msg_len + 4) @@ -1308,10 +1305,9 @@ process(void) void sftp_server_cleanup_exit(int i) { - if (pw != NULL && client_addr != NULL) { + if (client_addr != NULL) { handle_log_exit(); - logit("session closed for local user %s from [%s]", - pw->pw_name, client_addr); + logit("session closed for local user from [%s]", client_addr); } _exit(i); } @@ -1327,7 +1323,7 @@ sftp_server_usage(void) } int -sftp_server_main(int argc, char **argv, struct passwd *user_pw) +sftp_server_main(int argc, char **argv) { fd_set *rset, *wset; int in, out, max, ch, skipargs = 0, log_stderr = 0; @@ -1382,10 +1378,7 @@ sftp_server_main(int argc, char **argv, struct passwd *user_pw) } else client_addr = xstrdup("UNKNOWN"); - pw = pwcopy(user_pw); - - logit("session opened for local user %s from [%s]", - pw->pw_name, client_addr); + logit("session opened for local user from [%s]", client_addr); in = dup(STDIN_FILENO); out = dup(STDOUT_FILENO); diff --git a/sftp.h b/sftp.h index 2bde8bb..807e8ff 100644 --- a/sftp.h +++ b/sftp.h @@ -95,7 +95,5 @@ #define SSH2_FX_OP_UNSUPPORTED 8 #define SSH2_FX_MAX 8 -struct passwd; - -int sftp_server_main(int, char **, struct passwd *); +int sftp_server_main(int, char **); void sftp_server_cleanup_exit(int) __attribute__((noreturn));