You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2009/11/18 23:39:48 UTC
svn commit: r881974 - in /directory/shared/branches/shared-schema/ldap/src:
main/antlr/distinguishedName.g
test/java/org/apache/directory/shared/ldap/name/LdapDNTest.java
Author: seelmann
Date: Wed Nov 18 22:39:47 2009
New Revision: 881974
URL: http://svn.apache.org/viewvc?rev=881974&view=rev
Log:
Fix for for DIRSTUDIO-589, DIRSTUDIO-591, DIRSHARED-38
Modified:
directory/shared/branches/shared-schema/ldap/src/main/antlr/distinguishedName.g
directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/name/LdapDNTest.java
Modified: directory/shared/branches/shared-schema/ldap/src/main/antlr/distinguishedName.g
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/antlr/distinguishedName.g?rev=881974&r1=881973&r2=881974&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/antlr/distinguishedName.g (original)
+++ directory/shared/branches/shared-schema/ldap/src/main/antlr/distinguishedName.g Wed Nov 18 22:39:47 2009
@@ -73,14 +73,16 @@
protected DIGIT : '0'..'9' ;
protected ALPHA : 'a'..'z' ;
-HEXPAIR_OR_ESCESC_OR_ESC
+HEXPAIR_OR_ESCESC_ESCSHARP_OR_ESC
: (ESC HEX HEX) => HEXPAIR { $setType(HEXPAIR); }
| ESCESC { $setType(ESCESC); }
+ | ESCSHARP { $setType(ESCSHARP); }
| ESC { $setType(ESC); }
;
protected HEXPAIR : ESC! HEX HEX ;
protected ESC : '\\';
protected ESCESC : ESC ESC;
+protected ESCSHARP : ESC SHARP;
protected HEX: DIGIT | 'a'..'f' ;
HEXVALUE_OR_SHARP
@@ -431,7 +433,7 @@
dq1:DQUOTE { value.upValue += dq1.getText(); }
(
(
- s:~(DQUOTE|ESC|ESCESC|HEXPAIR)
+ s:~(DQUOTE|ESC|ESCESC|ESCSHARP|HEXPAIR)
{
value.upValue += s.getText();
bb.append( StringTools.getBytesUtf8( s.getText() ) );
@@ -659,6 +661,14 @@
}
)
|
+ (
+ ESCSHARP
+ {
+ value.upValue += "\\#";
+ pair = StringTools.getBytesUtf8( "#" );
+ }
+ )
+ |
(
ESC { value.upValue += "\\"; }
tmp = special
Modified: directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/name/LdapDNTest.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/name/LdapDNTest.java?rev=881974&r1=881973&r2=881974&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/name/LdapDNTest.java (original)
+++ directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/name/LdapDNTest.java Wed Nov 18 22:39:47 2009
@@ -363,6 +363,36 @@
/**
+ * Test for DIRSTUDIO-589, DIRSTUDIO-591, DIRSHARED-38
+ *
+ * Check escaped sharp followed by a hex sequence
+ * (without the ESC it would be a valid hexstring).
+ */
+ @Test
+ public void testLdapDNEscSharpNumber() throws InvalidNameException, NamingException
+ {
+ LdapDN dn = new LdapDN( "a = \\#123456" );
+
+ assertTrue( LdapDN.isValid( "a = \\#123456" ) );
+ assertEquals( "a=\\#123456", dn.toString() );
+ assertEquals( "a = \\#123456", dn.getUpName() );
+
+ Rdn rdn = dn.getRdn();
+ assertEquals( "a = \\#123456", rdn.getUpName() );
+
+ assertTrue( LdapDN.isValid( "a = \\#00" ) );
+ assertTrue( LdapDN.isValid( "a = \\#11" ) );
+ assertTrue( LdapDN.isValid( "a = \\#99" ) );
+ assertTrue( LdapDN.isValid( "a = \\#AA" ) );
+ assertTrue( LdapDN.isValid( "a = \\#FF" ) );
+
+ assertTrue( LdapDN.isValid( "uid=\\#123456" ) );
+ assertTrue( LdapDN.isValid( "cn=\\#ACL_AD-Projects_Author,ou=Notes_Group,o=Contacts,c=DE" ) );
+ assertTrue( LdapDN.isValid( "cn=\\#Abraham" ) );
+ }
+
+
+ /**
* test a simple DN with a # on first position
*/
@Test