ftpserver.pl: Added SELECT check to IMAP SEARCH command
authorSteve Holme <steve_holme@hotmail.com>
Wed, 28 Aug 2013 17:56:19 +0000 (18:56 +0100)
committerSteve Holme <steve_holme@hotmail.com>
Wed, 28 Aug 2013 17:56:19 +0000 (18:56 +0100)
tests/ftpserver.pl

index d5ae6bbf678719af9e17e8716b09e3c98ba992db..2732b1696fed0a9888ec9fc2bb33b2c34ba845d7 100755 (executable)
@@ -1034,27 +1034,32 @@ sub STATUS_imap {
 
 sub SEARCH_imap {
     my ($what) = @_;
-    my $testno = $selected;
     fix_imap_params($what);
 
-    logmsg "SEARCH_imap got test $testno\n";
+    if ($selected eq "") {
+        sendcontrol "$cmdid BAD Command received in Invalid state\r\n";
+    else {
+        my $testno = $selected;
 
-    $testno =~ s/^([^0-9]*)//;
-    my $testpart = "";
-    if ($testno > 10000) {
-        $testpart = $testno % 10000;
-        $testno = int($testno / 10000);
-    }
+        logmsg "SEARCH_imap got test $testno\n";
 
-    loadtest("$srcdir/data/test$testno");
+        $testno =~ s/^([^0-9]*)//;
+        my $testpart = "";
+        if ($testno > 10000) {
+            $testpart = $testno % 10000;
+            $testno = int($testno / 10000);
+        }
 
-    my @data = getpart("reply", "data$testpart");
+        loadtest("$srcdir/data/test$testno");
 
-    for my $d (@data) {
-        sendcontrol $d;
-    }
+        my @data = getpart("reply", "data$testpart");
 
-    sendcontrol "$cmdid OK SEARCH completed\r\n";
+        for my $d (@data) {
+            sendcontrol $d;
+        }
+
+        sendcontrol "$cmdid OK SEARCH completed\r\n";
+    }
 
     return 0;
 }