From 02d8e2b208323d19b6fc75fb1a39d03f8cacbd29 Mon Sep 17 00:00:00 2001 From: yar Date: Fri, 31 Jan 2003 13:18:55 +0000 Subject: Let real users access special files through FTP if allowed by their filesystem permissions. This doesn't break anything since using sendfile(2) is triggered later by a separate S_ISREG conditional. PR: bin/20824 MFC after: 1 week --- libexec/ftpd/ftpd.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'libexec') diff --git a/libexec/ftpd/ftpd.c b/libexec/ftpd/ftpd.c index cf7d73d..477102a 100644 --- a/libexec/ftpd/ftpd.c +++ b/libexec/ftpd/ftpd.c @@ -1663,9 +1663,19 @@ retrieve(char *cmd, char *name) return; } byte_count = -1; - if (cmd == 0 && (fstat(fileno(fin), &st) < 0 || !S_ISREG(st.st_mode))) { - reply(550, "%s: not a plain file.", name); - goto done; + if (cmd == 0) { + if (fstat(fileno(fin), &st) < 0) { + perror_reply(550, name); + goto done; + } + if (!S_ISREG(st.st_mode)) { + if (guest) { + reply(550, "%s: not a plain file.", name); + goto done; + } + st.st_size = -1; + /* st.st_blksize is set for all descriptor types */ + } } if (restart_point) { if (type == TYPE_A) { -- cgit v1.1