ftpserver.pl: Fixed processing of IMAP authentication strings
authorSteve Holme <steve_holme@hotmail.com>
Sun, 10 Nov 2013 10:08:32 +0000 (10:08 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Sun, 10 Nov 2013 10:08:32 +0000 (10:08 +0000)
tests/ftpserver.pl

index b6ed583..410bbd4 100755 (executable)
@@ -3049,15 +3049,22 @@ while(1) {
         my $FTPARG;
         if($proto eq "imap") {
             # IMAP is different with its identifier first on the command line
-            unless(($full =~ /^([^ ]+) ([^ ]+) (.*)/) ||
-                   ($full =~ /^([^ ]+) ([^ ]+)/)) {
+            if(($full =~ /^([^ ]+) ([^ ]+) (.*)/) ||
+               ($full =~ /^([^ ]+) ([^ ]+)/)) {
+                $cmdid=$1; # set the global variable
+                $FTPCMD=$2;
+                $FTPARG=$3;
+            }
+            # IMAP long "commands" are base64 authentication data
+            elsif($full =~ /^[A-Z0-9+\/]*={0,2}$/i) {
+                # Command id has already been set
+                $FTPCMD=$full;
+                $FTPARG="";
+            }
+            else {
                 sendcontrol "$1 '$full': command not understood.\r\n";
                 last;
             }
-
-            $cmdid=$1; # set the global variable
-            $FTPCMD=$2;
-            $FTPARG=$3;
         }
         elsif($full =~ /^([A-Z]{3,4})(\s(.*))?$/i) {
             $FTPCMD=$1;