You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2017/08/23 15:33:41 UTC

[directory-ldap-api] branch shared-value updated: A space after a ':' wasn't discarded and the null value was not considered as null. That led to some bug when converting the config(DIRSERVER-2077)

This is an automated email from the ASF dual-hosted git repository.

elecharny pushed a commit to branch shared-value
in repository https://gitbox.apache.org/repos/asf/directory-ldap-api.git


The following commit(s) were added to refs/heads/shared-value by this push:
     new d81e587  A space after a ':' wasn't discarded and the null value was not considered as null. That led to some bug when converting the config(DIRSERVER-2077)
d81e587 is described below

commit d81e587885309f1f5b5e5efbf30220e8c7c61b1d
Author: Emmanuel Lécharny <el...@symas.com>
AuthorDate: Wed Aug 23 17:31:23 2017 +0200

    A space after a ':' wasn't discarded and the null value was not
    considered as null. That led to some bug when converting the
    config(DIRSERVER-2077)
---
 .../directory/api/ldap/model/ldif/LdifReader.java  |   5 +-
 .../api/ldap/model/ldif/LdifReaderTest.java        | 180 +++++++++++++--------
 2 files changed, 113 insertions(+), 72 deletions(-)

diff --git a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/LdifReader.java b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/LdifReader.java
index b3a1165..ff6f3c1 100644
--- a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/LdifReader.java
+++ b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/LdifReader.java
@@ -764,7 +764,10 @@ public class LdifReader implements Iterable<LdifEntry>, Closeable
 
                 String result = null;
 
-                result = value.substring( 0, end );
+                if ( end > 0 )
+                {
+                    result = value.substring( 0, end );
+                }
 
                 return result;
             }
diff --git a/ldap/model/src/test/java/org/apache/directory/api/ldap/model/ldif/LdifReaderTest.java b/ldap/model/src/test/java/org/apache/directory/api/ldap/model/ldif/LdifReaderTest.java
index 8eb9015..8770b90 100644
--- a/ldap/model/src/test/java/org/apache/directory/api/ldap/model/ldif/LdifReaderTest.java
+++ b/ldap/model/src/test/java/org/apache/directory/api/ldap/model/ldif/LdifReaderTest.java
@@ -2249,59 +2249,60 @@ public class LdifReaderTest
                 "changetype: delete\n" +
                 "attr1: test";
 
-        LdifReader reader = new LdifReader();
-
-        try
-        {
-            reader.parseLdif( ldif );
-            fail();
-        }
-        catch ( Exception e )
+        try ( LdifReader reader = new LdifReader() )
         {
+            try
+            {
+                reader.parseLdif( ldif );
+                fail();
+            }
+            catch ( Exception e )
+            {
+            }
+            
+            assertEquals( 1, reader.getLineNumber() );
         }
-        
-        assertEquals( 1, reader.getLineNumber() );
-
-        reader.close();
 
         ldif =
             "version:   1\n" +
                 "d n: dc=example,dc=com\n" + // wrong name "d n"
                 "changetype: delete\n" +
                 "attr1: test";
-        reader = new LdifReader();
 
-        try
-        {
-            reader.parseLdif( ldif );
-            fail();
-        }
-        catch ( Exception e )
+        try ( LdifReader reader = new LdifReader() )
         {
+            try
+            {
+                reader.parseLdif( ldif );
+                fail();
+            }
+            catch ( Exception e )
+            {
+            }
+    
+            assertEquals( 2, reader.getLineNumber() );
         }
 
-        assertEquals( 2, reader.getLineNumber() );
-        
-        reader.close();
-
         // wrong changetype
         ldif =
             "version:   1\n" +
                 "dn: dc=example,dc=com\n" +
                 "changetype: delete\n" +
                 "attr1: test";
-        reader = new LdifReader();
-
-        try
-        {
-            reader.parseLdif( ldif );
-            fail();
-        }
-        catch ( Exception e )
+        
+        try ( LdifReader reader = new LdifReader() )
         {
+            try
+            {
+                reader.parseLdif( ldif );
+                fail();
+            }
+            catch ( Exception e )
+            {
+            }
+            
+            assertEquals( 4, reader.getLineNumber() );
         }
-        
-        assertEquals( 4, reader.getLineNumber() );
 
         ldif =
             "version:   1\n" +
@@ -2320,19 +2321,19 @@ public class LdifReaderTest
                 "dependencies:\n" +
                 "envVars:";
         
-        reader = new LdifReader();
-
-        try
-        {
-            reader.parseLdif( ldif );
-            fail( "shouldn't be parsed" );
-        }
-        catch ( Exception e )
+        try ( LdifReader reader = new LdifReader() )
         {
+            try
+            {
+                reader.parseLdif( ldif );
+                fail( "shouldn't be parsed" );
+            }
+            catch ( Exception e )
+            {
+            }
+    
+            assertEquals( 10, reader.getLineNumber() );
         }
-
-        assertEquals( 10, reader.getLineNumber() );
-        reader.close();
     }
 
 
@@ -2349,32 +2350,33 @@ public class LdifReaderTest
                 "dependencies:\n" +
                 "envVars:";
 
-        LdifReader reader = new LdifReader();
-        List<LdifEntry> entries = reader.parseLdif( ldif );
-        reader.close();
-
-        assertNotNull( entries );
-
-        LdifEntry entry = entries.get( 0 );
-        assertTrue( entry.isLdifContent() );
-
-        assertEquals( "", entry.getDn().getName() );
-
-        Attribute attr = entry.get( "cn" );
-        assertTrue( attr.contains( "app1" ) );
-
-        attr = entry.get( "objectclass" );
-        assertTrue( attr.contains( "top" ) );
-        assertTrue( attr.contains( "apApplication" ) );
-
-        attr = entry.get( "displayname" );
-        assertTrue( attr.contains( "app1" ) );
-
-        attr = entry.get( "dependencies" );
-        assertEquals( "", attr.get().getValue() );
-
-        attr = entry.get( "envvars" );
-        assertEquals( "", attr.get().getValue() );
+        try ( LdifReader reader = new LdifReader() )
+        {
+            List<LdifEntry> entries = reader.parseLdif( ldif );
+    
+            assertNotNull( entries );
+    
+            LdifEntry entry = entries.get( 0 );
+            assertTrue( entry.isLdifContent() );
+    
+            assertEquals( "", entry.getDn().getName() );
+    
+            Attribute attr = entry.get( "cn" );
+            assertTrue( attr.contains( "app1" ) );
+    
+            attr = entry.get( "objectclass" );
+            assertTrue( attr.contains( "top" ) );
+            assertTrue( attr.contains( "apApplication" ) );
+    
+            attr = entry.get( "displayname" );
+            assertTrue( attr.contains( "app1" ) );
+    
+            attr = entry.get( "dependencies" );
+            assertEquals( "", attr.get().getValue() );
+    
+            attr = entry.get( "envvars" );
+            assertEquals( "", attr.get().getValue() );
+        }
     }
 
 
@@ -2500,7 +2502,6 @@ public class LdifReaderTest
     }
 
 
-
     @Test
     public void testLdifParserWithReplaceEmptyValue() throws Exception, Exception
     {
@@ -2526,4 +2527,41 @@ public class LdifReaderTest
         assertEquals( ldif, entry.toString() );
         reader.close();
     }
+
+
+    @Test
+    public void testLdifParserWithNullDn() throws Exception, Exception
+    {
+        String ldif1 =
+            "dn: ads-authenticatorid=anonymousauthenticator,ou=authenticators,ads-interceptorId=authenticationInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config\n" +
+            "ads-authenticatorid: anonymousauthenticator\n" +
+            "objectclass: top\n" +
+            "objectclass: ads-base\n" +
+            "objectClass: ads-authenticator\n" +
+            "objectClass: ads-authenticatorImpl\n" +
+            "ads-authenticatorClass: org.apache.directory.server.core.authn.AnonymousAuthenticator\n" +
+            "ads-baseDn: \n" +
+            "ads-enabled: TRUE";
+
+        String ldif2 =
+            "dn: ads-authenticatorid=anonymousauthenticator,ou=authenticators,ads-interceptorId=authenticationInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config\n" +
+            "ads-authenticatorid: anonymousauthenticator\n" +
+            "objectclass: top\n" +
+            "objectclass: ads-base\n" +
+            "objectClass: ads-authenticator\n" +
+            "objectClass: ads-authenticatorImpl\n" +
+            "ads-authenticatorClass: org.apache.directory.server.core.authn.AnonymousAuthenticator\n" +
+            "ads-baseDn:\n" +
+            "ads-enabled: TRUE";
+
+        try ( LdifReader reader = new LdifReader() )
+        {
+            List<LdifEntry> entries1 = reader.parseLdif( ldif1 );
+            LdifEntry entry1 = entries1.get( 0 );
+    
+            List<LdifEntry> entries2 = reader.parseLdif( ldif2 );
+            LdifEntry entry2 = entries2.get( 0 );
+            assertEquals( entry1, entry2 );
+        }
+    }
 }

-- 
To stop receiving notification emails like this one, please contact
['"commits@directory.apache.org" <co...@directory.apache.org>'].