diff options
author | Paul Traina <pst@FreeBSD.org> | 1996-11-20 22:25:57 +0000 |
---|---|---|
committer | Paul Traina <pst@FreeBSD.org> | 1996-11-20 22:25:57 +0000 |
commit | 9808520bd18c5bde21dd4d82a592b7de5ddae9c6 (patch) | |
tree | 00ba38ef920f9539718443e4323997c1d995a66e | |
parent | 69111243d38262e79d53e64145337c139b17ff4f (diff) | |
download | src-9808520bd18c5bde21dd4d82a592b7de5ddae9c6.tar.gz src-9808520bd18c5bde21dd4d82a592b7de5ddae9c6.zip |
Disable certain commands before login.
Notes
Notes:
svn path=/stable/2.1/; revision=19905
-rw-r--r-- | libexec/ftpd/ftpcmd.y | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/libexec/ftpd/ftpcmd.y b/libexec/ftpd/ftpcmd.y index 151c3d7c81fb..3b64c87f5db7 100644 --- a/libexec/ftpd/ftpcmd.y +++ b/libexec/ftpd/ftpcmd.y @@ -148,18 +148,21 @@ cmd pass($3); free($3); } - | PORT SP host_port CRLF + | PORT check_login SP host_port CRLF { - usedefault = 0; - if (pdata >= 0) { - (void) close(pdata); - pdata = -1; + if ($2) { + usedefault = 0; + if (pdata >= 0) { + (void) close(pdata); + pdata = -1; + } + reply(200, "PORT command successful."); } - reply(200, "PORT command successful."); } - | PASV CRLF + | PASV check_login CRLF { - passive(); + if ($2) + passive(); } | TYPE SP type_code CRLF { @@ -291,16 +294,18 @@ cmd if ($4 != NULL) free($4); } - | RNTO SP pathname CRLF + | RNTO check_login SP pathname CRLF { - if (fromname) { - renamecmd(fromname, $3); - free(fromname); - fromname = (char *) 0; - } else { - reply(503, "Bad sequence of commands."); + if ($2) { + if (fromname) { + renamecmd(fromname, $4); + free(fromname); + fromname = (char *) 0; + } else { + reply(503, "Bad sequence of commands."); + } + free($4); } - free($3); } | ABOR CRLF { |