aboutsummaryrefslogtreecommitdiff
path: root/libexec/ftpd/ftpcmd.y
diff options
context:
space:
mode:
authorYaroslav Tykhiy <ytykhiy@gmail.com>2002-07-31 10:55:31 +0000
committerYaroslav Tykhiy <ytykhiy@gmail.com>2002-07-31 10:55:31 +0000
commit781cfb93488059a19b3090b5d5a723e46b97967f (patch)
tree43c6579306afeeb06db9f56163775a4c58c1d242 /libexec/ftpd/ftpcmd.y
parent5e33115f056783c6bf2a457c7cd893998bcda431 (diff)
downloadsrc-781cfb93488059a19b3090b5d5a723e46b97967f.tar.gz
src-781cfb93488059a19b3090b5d5a723e46b97967f.zip
Deny the SIZE command on large files when in ASCII mode.
This eliminates an opportunity for DoS attack. Pointed out by: maxim Inspired by: lukemftpd, OpenBSD MFC after: 2 weeks
Notes
Notes: svn path=/head/; revision=101034
Diffstat (limited to 'libexec/ftpd/ftpcmd.y')
-rw-r--r--libexec/ftpd/ftpcmd.y6
1 files changed, 6 insertions, 0 deletions
diff --git a/libexec/ftpd/ftpcmd.y b/libexec/ftpd/ftpcmd.y
index 2ddbf75cd056..d7ffc73ff6c0 100644
--- a/libexec/ftpd/ftpcmd.y
+++ b/libexec/ftpd/ftpcmd.y
@@ -1068,6 +1068,8 @@ check_login_ro
#define MAXGLOBARGS 1000
+#define MAXASIZE 10240 /* Deny ASCII SIZE on files larger than that */
+
struct tab {
char *name;
short token;
@@ -1589,6 +1591,10 @@ sizecmd(char *filename)
reply(550, "%s: not a plain file.", filename);
(void) fclose(fin);
return;
+ } else if (stbuf.st_size > MAXASIZE) {
+ reply(550, "%s: too large for type A SIZE.", filename);
+ (void) fclose(fin);
+ return;
}
count = 0;