aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Traina <pst@FreeBSD.org>1996-11-20 22:25:57 +0000
committerPaul Traina <pst@FreeBSD.org>1996-11-20 22:25:57 +0000
commit9808520bd18c5bde21dd4d82a592b7de5ddae9c6 (patch)
tree00ba38ef920f9539718443e4323997c1d995a66e
parent69111243d38262e79d53e64145337c139b17ff4f (diff)
downloadsrc-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.y37
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
{