Support the empty "PASS\r\n" command.

This commit is contained in:
Brian Feldman 2001-04-16 22:20:26 +00:00
parent b952dabaa1
commit 7d6505e64e

View File

@ -166,6 +166,10 @@ cmd
pass($3); pass($3);
free($3); free($3);
} }
| PASS CRLF
{
pass("");
}
| PORT check_login SP host_port CRLF | PORT check_login SP host_port CRLF
{ {
if (epsvall) { if (epsvall) {
@ -1028,7 +1032,7 @@ extern jmp_buf errcatch;
#define STR1 2 /* expect SP followed by STRING */ #define STR1 2 /* expect SP followed by STRING */
#define STR2 3 /* expect STRING */ #define STR2 3 /* expect STRING */
#define OSTR 4 /* optional SP then STRING */ #define OSTR 4 /* optional SP then STRING */
#define ZSTR1 5 /* SP then optional STRING */ #define ZSTR1 5 /* optional SP then optional STRING */
#define ZSTR2 6 /* optional STRING after SP */ #define ZSTR2 6 /* optional STRING after SP */
#define SITECMD 7 /* SITE command */ #define SITECMD 7 /* SITE command */
#define NSTR 8 /* Number followed by a string */ #define NSTR 8 /* Number followed by a string */
@ -1043,7 +1047,7 @@ struct tab {
struct tab cmdtab[] = { /* In order defined in RFC 765 */ struct tab cmdtab[] = { /* In order defined in RFC 765 */
{ "USER", USER, STR1, 1, "<sp> username" }, { "USER", USER, STR1, 1, "<sp> username" },
{ "PASS", PASS, ZSTR1, 1, "<sp> password" }, { "PASS", PASS, ZSTR1, 1, "[<sp> [password]]" },
{ "ACCT", ACCT, STR1, 0, "(specify account)" }, { "ACCT", ACCT, STR1, 0, "(specify account)" },
{ "SMNT", SMNT, ARGS, 0, "(structure mount)" }, { "SMNT", SMNT, ARGS, 0, "(structure mount)" },
{ "REIN", REIN, ARGS, 0, "(reinitialize server state)" }, { "REIN", REIN, ARGS, 0, "(reinitialize server state)" },
@ -1298,6 +1302,7 @@ yylex()
state = CMD; state = CMD;
break; break;
case ZSTR1:
case OSTR: case OSTR:
if (cbuf[cpos] == '\n') { if (cbuf[cpos] == '\n') {
state = CMD; state = CMD;
@ -1306,7 +1311,6 @@ yylex()
/* FALLTHROUGH */ /* FALLTHROUGH */
case STR1: case STR1:
case ZSTR1:
dostr1: dostr1:
if (cbuf[cpos] == ' ') { if (cbuf[cpos] == ' ') {
cpos++; cpos++;