ftpserver.pl: Reworked fix from commit 7a36b2abc0

This commit is contained in:
Steve Holme 2013-11-23 22:14:34 +00:00
Родитель 7a36b2abc0
Коммит 23fabf8dea
1 изменённых файлов: 32 добавлений и 10 удалений

Просмотреть файл

@ -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;
}
}
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="";
}
elsif(($proto eq "smtp") && ($full =~ /^[A-Z0-9+\/]{0,512}={0,2}$/i)) {
# SMTP long "commands" are base64 authentication data.
$FTPCMD=$full;
$FTPARG="";
else {
sendcontrol "500 Unrecognized command\r\n";
last;
}
}
else {
sendcontrol "500 Unrecognized command\r\n";