jdk/test/com/sun/jndi/ldap/InvalidLdapFilters.java
author xuelei
Thu, 25 Feb 2010 13:32:40 +0800
changeset 4978 6bee79de5db6
child 5506 202f599c92aa
permissions -rw-r--r--
6916202: More cases of invalid ldap filters accepted and processed Reviewed-by: vinnie, weijun
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4978
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
     1
/*
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
     2
 * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
     4
 *
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
     7
 * published by the Free Software Foundation.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
     8
 *
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    13
 * accompanied this code).
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    14
 *
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    18
 *
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    19
 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    20
 * CA 95054 USA or visit www.sun.com if you need additional information or
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    21
 * have any questions.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    22
 */
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    23
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    24
/**
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    25
 * @test
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    26
 * @bug 6916202
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    27
 * @summary More cases of invalid ldap filters accepted and processed
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    28
 * @run main/othervm InvalidLdapFilters valid (cn=Babs)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    29
 * @run main/othervm InvalidLdapFilters valid (&(cn=Bob))
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    30
 * @run main/othervm InvalidLdapFilters valid (&(objectClass=*)(uid=*))
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    31
 * @run main/othervm InvalidLdapFilters valid (|(cn=Bob))
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    32
 * @run main/othervm InvalidLdapFilters valid (|(objectClass=*)(uid=*))
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    33
 * @run main/othervm InvalidLdapFilters valid (!(cn=Tim))
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    34
 * @run main/othervm InvalidLdapFilters valid (!(!(cn=Tim)))
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    35
 * @run main/othervm InvalidLdapFilters valid (!(&(objectClass=*)(uid=*)))
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    36
 * @run main/othervm InvalidLdapFilters valid (!(|(objectClass=*)(uid=*)))
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    37
 * @run main/othervm InvalidLdapFilters valid (o=univ*of*mich*)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    38
 * @run main/othervm InvalidLdapFilters valid (seeAlso=)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    39
 * @run main/othervm InvalidLdapFilters valid (cn:caseExactMatch:=Flintstone)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    40
 * @run main/othervm InvalidLdapFilters valid (cn:=Betty)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    41
 * @run main/othervm InvalidLdapFilters valid (sn:dn:2.4.6.8.10:=Barney)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    42
 * @run main/othervm InvalidLdapFilters valid (o:dn:=Ace)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    43
 * @run main/othervm InvalidLdapFilters valid (:1.2.3:=Wilma)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    44
 * @run main/othervm InvalidLdapFilters valid (:DN:2.4.6.8.10:=Dino)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    45
 * @run main/othervm InvalidLdapFilters valid (1.2.3=abc)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    46
 * @run main/othervm InvalidLdapFilters valid (cn;lang-de;lang-en=abc)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    47
 * @run main/othervm InvalidLdapFilters valid (owner=abc)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    48
 * @run main/othervm InvalidLdapFilters valid (sn;lang-en:dn:2.4.6.8.10:=Barney)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    49
 * @run main/othervm InvalidLdapFilters valid
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    50
         (&(objectClass=Person)(|(sn=Jensen)(cn=Bab*)))
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    51
 * @run main/othervm InvalidLdapFilters invalid "(&(cn=Robert Dean)))"
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    52
 * @run main/othervm InvalidLdapFilters invalid (&|(cn=Bob))
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    53
 * @run main/othervm InvalidLdapFilters invalid (&&(cn=Bob))
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    54
 * @run main/othervm InvalidLdapFilters invalid (|&(cn=Bob))
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    55
 * @run main/othervm InvalidLdapFilters invalid (||(cn=Bob))
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    56
 * @run main/othervm InvalidLdapFilters invalid (:1.2.:=Wilma)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    57
 * @run main/othervm InvalidLdapFilters invalid (::DN:2.4.6.8.10:=Dino)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    58
 * @run main/othervm InvalidLdapFilters invalid (:DN::2.4.6.8.10:=Dino)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    59
 * @run main/othervm InvalidLdapFilters invalid (:DN:2.4.6.8.10::=Dino)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    60
 * @run main/othervm InvalidLdapFilters invalid (:DN:2.4.6..8.10:=Dino)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    61
 * @run main/othervm InvalidLdapFilters invalid (:DN:2.4.6.8.:=Dino)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    62
 * @run main/othervm InvalidLdapFilters invalid (1.2.;::=abc)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    63
 * @run main/othervm InvalidLdapFilters invalid (1.2.3;::=abc)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    64
 * @run main/othervm InvalidLdapFilters invalid (1.2.3;x;=abc)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    65
 * @run main/othervm InvalidLdapFilters invalid (1.2.3:x::=abc)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    66
 * @run main/othervm InvalidLdapFilters invalid (1.2.3:x=abc)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    67
 * @run main/othervm InvalidLdapFilters invalid (sn;:dn:2.4.6.8.10:=Barney)
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    68
 * @run main/othervm InvalidLdapFilters invalid "\"((objectClass=*)&(uid=*))\""
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    69
 * @run main/othervm InvalidLdapFilters invalid "&(objectClass=*)(uid=*)"
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    70
 * @run main/othervm InvalidLdapFilters invalid "(:DN:2.4.6.8.10:cn:=Dino)"
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    71
 * @run main/othervm InvalidLdapFilters invalid "(:DN:2.4.6.8.10:cn=Dino)"
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    72
 * @run main/othervm InvalidLdapFilters invalid
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    73
         "((objectCategory=person)(cn=u)(!(cn=u2*)))"
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    74
 * @run main/othervm InvalidLdapFilters invalid
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    75
         "((&(objectClass=user)(cn=andy*)(cn=steve*)(cn=bob*)))"
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    76
 *
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    77
 * @author Xuelei Fan
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    78
 */
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    79
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    80
import java.io.*;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    81
import javax.naming.*;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    82
import javax.naming.directory.*;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    83
import java.util.Properties;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    84
import java.util.Hashtable;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    85
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    86
import java.net.Socket;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    87
import java.net.ServerSocket;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    88
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    89
public class InvalidLdapFilters {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    90
    // Should we run the client or server in a separate thread?
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    91
    //
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    92
    // Both sides can throw exceptions, but do you have a preference
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    93
    // as to which side should be the main thread.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    94
    static boolean separateServerThread = true;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    95
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    96
    // use any free port by default
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    97
    volatile int serverPort = 0;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    98
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
    99
    // Is the server ready to serve?
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   100
    volatile static boolean serverReady = false;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   101
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   102
    // Define the server side of the test.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   103
    //
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   104
    // If the server prematurely exits, serverReady will be set to true
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   105
    // to avoid infinite hangs.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   106
    void doServerSide() throws Exception {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   107
        ServerSocket serverSock = new ServerSocket(serverPort);
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   108
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   109
        // signal client, it's ready to accecpt connection
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   110
        serverPort = serverSock.getLocalPort();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   111
        serverReady = true;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   112
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   113
        // accept a connection
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   114
        Socket socket = serverSock.accept();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   115
        System.out.println("Server: Connection accepted");
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   116
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   117
        InputStream is = socket.getInputStream();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   118
        OutputStream os = socket.getOutputStream();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   119
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   120
        // read the bindRequest
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   121
        while (is.read() != -1) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   122
            // ignore
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   123
            is.skip(is.available());
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   124
            break;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   125
        }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   126
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   127
        byte[] bindResponse = {0x30, 0x0C, 0x02, 0x01, 0x01, 0x61, 0x07, 0x0A,
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   128
                               0x01, 0x00, 0x04, 0x00, 0x04, 0x00};
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   129
        // write bindResponse
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   130
        os.write(bindResponse);
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   131
        os.flush();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   132
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   133
        // ignore any more request.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   134
        while (is.read() != -1) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   135
            // ignore
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   136
            is.skip(is.available());
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   137
        }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   138
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   139
        is.close();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   140
        os.close();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   141
        socket.close();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   142
        serverSock.close();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   143
    }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   144
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   145
    //  Define the client side of the test.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   146
    //
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   147
    // If the server prematurely exits, serverReady will be set to true
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   148
    // to avoid infinite hangs.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   149
    void doClientSide() throws Exception {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   150
        // Wait for server to get started.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   151
        while (!serverReady) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   152
            Thread.sleep(50);
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   153
        }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   154
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   155
        // set up the environment for creating the initial context
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   156
        Hashtable<Object, Object> env = new Hashtable<Object, Object>();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   157
        env.put(Context.INITIAL_CONTEXT_FACTORY,
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   158
                                "com.sun.jndi.ldap.LdapCtxFactory");
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   159
        env.put(Context.PROVIDER_URL, "ldap://localhost:" + serverPort);
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   160
        env.put("com.sun.jndi.ldap.read.timeout", "1000");
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   161
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   162
        // env.put(Context.SECURITY_AUTHENTICATION, "simple");
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   163
        // env.put(Context.SECURITY_PRINCIPAL,"cn=root");
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   164
        // env.put(Context.SECURITY_CREDENTIALS,"root");
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   165
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   166
        // create initial context
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   167
        DirContext context = new InitialDirContext(env);
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   168
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   169
        // searching
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   170
        SearchControls scs = new SearchControls();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   171
        scs.setSearchScope(SearchControls.SUBTREE_SCOPE);
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   172
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   173
        try {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   174
            NamingEnumeration answer =
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   175
                    context.search("o=sun,c=us", searchFilter, scs);
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   176
        } catch (InvalidSearchFilterException isfe) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   177
            if (filterIsValid) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   178
                // unexpected filter exception.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   179
                throw new Exception("Unexpected ISFE", isfe);
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   180
            } else {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   181
                // ignore, it is the expected filter exception.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   182
                System.out.println("Expected exception: " + isfe.getMessage());
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   183
            }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   184
        } catch (NamingException ne) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   185
            // maybe a read timeout exception, as the server does not response.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   186
            if (filterIsValid) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   187
                System.out.println("Expected exception: " + ne.getMessage());
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   188
            } else {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   189
                throw new Exception("Not an InvalidSearchFilterException", ne);
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   190
            }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   191
        }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   192
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   193
        context.close();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   194
    }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   195
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   196
    private static boolean filterIsValid;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   197
    private static String searchFilter;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   198
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   199
    private static void parseArguments(String[] args) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   200
        System.out.println("arguments length: " + args.length);
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   201
        if (args[0].equals("valid")) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   202
          filterIsValid = true;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   203
        }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   204
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   205
        searchFilter = args[1];
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   206
    }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   207
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   208
    /*
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   209
     * ============================================================
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   210
     * The remainder is just support stuff
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   211
     */
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   212
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   213
    // client and server thread
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   214
    Thread clientThread = null;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   215
    Thread serverThread = null;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   216
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   217
    // client and server exceptions
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   218
    volatile Exception serverException = null;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   219
    volatile Exception clientException = null;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   220
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   221
    void startServer(boolean newThread) throws Exception {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   222
        if (newThread) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   223
            serverThread = new Thread() {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   224
                public void run() {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   225
                    try {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   226
                        doServerSide();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   227
                    } catch (Exception e) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   228
                        /*
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   229
                         * Our server thread just died.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   230
                         *
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   231
                         * Release the client, if not active already...
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   232
                         */
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   233
                        System.err.println("Server died...");
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   234
                        System.err.println(e);
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   235
                        serverReady = true;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   236
                        serverException = e;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   237
                    }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   238
                }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   239
            };
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   240
            serverThread.start();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   241
        } else {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   242
            doServerSide();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   243
        }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   244
    }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   245
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   246
    void startClient(boolean newThread) throws Exception {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   247
        if (newThread) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   248
            clientThread = new Thread() {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   249
                public void run() {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   250
                    try {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   251
                        doClientSide();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   252
                    } catch (Exception e) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   253
                        /*
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   254
                         * Our client thread just died.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   255
                         */
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   256
                        System.err.println("Client died...");
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   257
                        clientException = e;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   258
                    }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   259
                }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   260
            };
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   261
            clientThread.start();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   262
        } else {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   263
            doClientSide();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   264
        }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   265
    }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   266
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   267
    // Primary constructor, used to drive remainder of the test.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   268
    InvalidLdapFilters() throws Exception {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   269
        if (separateServerThread) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   270
            startServer(true);
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   271
            startClient(false);
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   272
        } else {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   273
            startClient(true);
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   274
            startServer(false);
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   275
        }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   276
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   277
        /*
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   278
         * Wait for other side to close down.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   279
         */
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   280
        if (separateServerThread) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   281
            serverThread.join();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   282
        } else {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   283
            clientThread.join();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   284
        }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   285
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   286
        /*
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   287
         * When we get here, the test is pretty much over.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   288
         *
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   289
         * If the main thread excepted, that propagates back
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   290
         * immediately.  If the other thread threw an exception, we
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   291
         * should report back.
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   292
         */
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   293
        if (serverException != null) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   294
            System.out.print("Server Exception:");
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   295
            throw serverException;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   296
        }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   297
        if (clientException != null) {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   298
            System.out.print("Client Exception:");
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   299
            throw clientException;
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   300
        }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   301
    }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   302
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   303
    public static void main(String[] args) throws Exception {
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   304
        // parse the customized arguments
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   305
        parseArguments(args);
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   306
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   307
        // start the test
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   308
        new InvalidLdapFilters();
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   309
    }
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   310
6bee79de5db6 6916202: More cases of invalid ldap filters accepted and processed
xuelei
parents:
diff changeset
   311
}