diff options
-rwxr-xr-x | tests/ftpserver.pl | 42 |
1 files changed, 32 insertions, 10 deletions
diff --git a/tests/ftpserver.pl b/tests/ftpserver.pl index 38f0f3d3a..5c62c241b 100755 --- a/tests/ftpserver.pl +++ b/tests/ftpserver.pl @@ -3167,9 +3167,14 @@ while(1) { $FTPCMD=$2; $FTPARG=$3; } + # IMAP authentication cancellation + elsif($full =~ /^\*$/) { + # Command id has already been set + $FTPCMD="*"; + $FTPARG=""; + } # IMAP long "commands" are base64 authentication data - elsif(($full =~ /^[A-Z0-9+\/]*={0,2}$/i) || - ($full == "*")) { + elsif($full =~ /^[A-Z0-9+\/]*={0,2}$/i) { # Command id has already been set $FTPCMD=$full; $FTPARG=""; @@ -3184,19 +3189,36 @@ while(1) { $FTPARG=$3; } elsif($proto eq "pop3") { + # POP3 authentication cancellation + if($full =~ /^\*$/) { + $FTPCMD="*"; + $FTPARG=""; + } # POP3 long "commands" are base64 authentication data - unless($full =~ /^[A-Z0-9+\/]*={0,2}$/i) { + elsif($full =~ /^[A-Z0-9+\/]*={0,2}$/i) { + $FTPCMD=$full; + $FTPARG=""; + } + else { sendcontrol "-ERR Unrecognized command\r\n"; last; } - - $FTPCMD=$full; - $FTPARG=""; } - elsif(($proto eq "smtp") && ($full =~ /^[A-Z0-9+\/]{0,512}={0,2}$/i)) { - # SMTP long "commands" are base64 authentication data. - $FTPCMD=$full; - $FTPARG=""; + elsif($proto eq "smtp") { + # SMTP authentication cancellation + if($full =~ /^\*$/) { + $FTPCMD="*"; + $FTPARG=""; + } + # SMTP long "commands" are base64 authentication data + elsif($full =~ /^[A-Z0-9+\/]{0,512}={0,2}$/i) { + $FTPCMD=$full; + $FTPARG=""; + } + else { + sendcontrol "500 Unrecognized command\r\n"; + last; + } } else { sendcontrol "500 Unrecognized command\r\n"; |