You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by qi...@apache.org on 2009/07/15 10:04:53 UTC

svn commit: r794172 - in /harmony/enhanced/classlib/trunk/modules: jndi/src/test/java/org/apache/harmony/jndi/tests/javax/naming/ldap/LdapNameTest.java security/src/main/java/common/org/apache/harmony/security/x509/DNParser.java

Author: qiuxx
Date: Wed Jul 15 08:04:52 2009
New Revision: 794172

URL: http://svn.apache.org/viewvc?rev=794172&view=rev
Log:
Fix defect of DNParser, %,*,_ should be escaped when it is in a LdapName after '\'

Modified:
    harmony/enhanced/classlib/trunk/modules/jndi/src/test/java/org/apache/harmony/jndi/tests/javax/naming/ldap/LdapNameTest.java
    harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/DNParser.java

Modified: harmony/enhanced/classlib/trunk/modules/jndi/src/test/java/org/apache/harmony/jndi/tests/javax/naming/ldap/LdapNameTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/jndi/src/test/java/org/apache/harmony/jndi/tests/javax/naming/ldap/LdapNameTest.java?rev=794172&r1=794171&r2=794172&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/jndi/src/test/java/org/apache/harmony/jndi/tests/javax/naming/ldap/LdapNameTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/jndi/src/test/java/org/apache/harmony/jndi/tests/javax/naming/ldap/LdapNameTest.java Wed Jul 15 08:04:52 2009
@@ -782,6 +782,99 @@
     
     /**
      * <p>
+     * Test method for 'javax.naming.ldap.LdapName(String)'
+     * </p>
+     * <p>
+     * Here we are testing the constructor, this method should accept a
+     * String notice here that here that we are testing the special case
+     * in which the name contains \\*, \\%, \\_
+     * </p>
+     * <p>
+     * The expected result is an instance of the class.
+     * </p>
+     */
+    public void testLdapNameString055() throws Exception {
+        LdapName ldapName;
+        String stringName;
+        String expectedName;
+        String expectedRndName;
+        List<Rdn> rdns;
+        
+        // Test \\*
+        stringName = "dc=\\*";
+        expectedName = "dc=\\*";
+        expectedRndName = "dc=*";
+        ldapName = new LdapName(stringName);
+        assertEquals(expectedName, ldapName.toString());
+        rdns = ldapName.getRdns();
+        assertEquals(expectedRndName, rdns.get(0).toString());
+        
+        stringName = "dc=\"\\*\"";
+        expectedName = "dc=\"\\*\"";
+        expectedRndName = "dc=*";
+        ldapName = new LdapName(stringName);
+        assertEquals(expectedName, ldapName.toString());
+        rdns = ldapName.getRdns();
+        assertEquals(expectedRndName, rdns.get(0).toString());
+        
+        stringName = "dc=\\\\*";
+        expectedName = "dc=\\\\*";
+        ldapName = new LdapName(stringName);
+        assertEquals(expectedName, ldapName.toString());
+        rdns = ldapName.getRdns();
+        assertEquals(expectedName, rdns.get(0).toString());
+        
+        // Test \\%
+        stringName = "dc=\\%";
+        expectedName = "dc=\\%";
+        expectedRndName = "dc=%";       
+        ldapName = new LdapName(stringName);
+        assertEquals(expectedName, ldapName.toString());
+        rdns = ldapName.getRdns();
+        assertEquals(expectedRndName, rdns.get(0).toString());
+        
+        stringName = "dc=\"\\%\"";
+        expectedName = "dc=\"\\%\"";
+        expectedRndName = "dc=%";
+        ldapName = new LdapName(stringName);
+        assertEquals(expectedName, ldapName.toString());
+        rdns = ldapName.getRdns();
+        assertEquals(expectedRndName, rdns.get(0).toString());
+        
+        stringName = "dc=\\\\%";
+        expectedName = "dc=\\\\%";
+        ldapName = new LdapName(stringName);
+        assertEquals(expectedName, ldapName.toString());
+        rdns = ldapName.getRdns();
+        assertEquals(expectedName, rdns.get(0).toString());
+        
+        // Test \\_
+        stringName = "dc=\\_";
+        expectedName = "dc=\\_";
+        expectedRndName = "dc=_";       
+        ldapName = new LdapName(stringName);
+        assertEquals(expectedName, ldapName.toString());
+        rdns = ldapName.getRdns();
+        assertEquals(expectedRndName, rdns.get(0).toString());
+        
+        stringName = "dc=\"\\_\"";
+        expectedName = "dc=\"\\_\"";
+        expectedRndName = "dc=_";
+        ldapName = new LdapName(stringName);
+        assertEquals(expectedName, ldapName.toString());
+        rdns = ldapName.getRdns();
+        assertEquals(expectedRndName, rdns.get(0).toString());
+        
+        stringName = "dc=\\\\_";
+        expectedName = "dc=\\\\_";
+        ldapName = new LdapName(stringName);
+        assertEquals(expectedName, ldapName.toString());
+        rdns = ldapName.getRdns();
+        assertEquals(expectedName, rdns.get(0).toString());
+    }
+    
+    /**
+     * <p>
      * Test method for 'javax.naming.ldap.LdapName.LdapName(List<Rdn>)'
      * </p>
      * <p>

Modified: harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/DNParser.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/DNParser.java?rev=794172&r1=794171&r2=794172&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/DNParser.java (original)
+++ harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/DNParser.java Wed Jul 15 08:04:52 2009
@@ -293,6 +293,9 @@
         case '#':
         case ';':
         case ' ':
+        case '*':
+        case '%':
+        case '_':
             //FIXME: escaping is allowed only for leading or trailing space char 
             return chars[pos];
         default: