Pierre-Luc Lacroix created DIRSERVER-1964:
---------------------------------------------

             Summary: Duplicate DN returned
                 Key: DIRSERVER-1964
                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1964
             Project: Directory ApacheDS
          Issue Type: Bug
          Components: core
    Affects Versions: 1.5.7
            Reporter: Pierre-Luc Lacroix


A single user started complaining that he was unable to login. When looking at 
the logs, we noticed the following entry:

"result: 4 Size limit exceeded"

Curious, I sent the same ldapsearch request to see why more than one user would 
be returned:

# ldapsearch -x -h 192.168.1.150 -p 1850 -D "dc=authserver" -b "dc=authserver" 
"(&(cn=user50)(ou=UAT))" -w password -M -z 1 -l 5

# extended LDIF
#
# LDAPv3
# base <dc=authserver> with scope subtree # filter: (&(cn=user50)(ou=UAT)) # 
requesting: ALL # with manageDSAit control #

# user50, UAT, authserver
dn: cn=user50,ou=UAT,dc=authserver
sn: user50
name: user50
userPassword:: MWYzNGJkMTctMjFhOS00ZDM2LWI4MzgtZDEwNDZmNmZiZGQ3
objectClass: person
objectClass: extensibleObject
objectClass: top
ou: UAT
cn: user50

# search result
search: 2
result: 4 Size limit exceeded

# numResponses: 2
# numEntries: 1




Running the same, but with a higher value of -z (-z 1000):

# ldapsearch -x -h 192.168.1.150 -p 1850 -D "dc=authserver" -b "dc=authserver" 
"(&(cn=user50)(ou=UAT))" -w password -M -z 1000 -l 5


# extended LDIF
#
# LDAPv3
# base <dc=authserver> with scope subtree # filter: (&(cn=user50)(ou=UAT)) # 
requesting: ALL # with manageDSAit control #

# user50, UAT, authserver
dn: cn=user50,ou=UAT,dc=authserver
sn: user50
name: user50
userPassword:: MWYzNGJkMTctMjFhOS00ZDM2LWI4MzgtZDEwNDZmNmZiZGQ3
objectClass: person
objectClass: extensibleObject
objectClass: top
ou: UAT
cn: user50

# user50, UAT, authserver
dn: cn=user50,ou=UAT,dc=authserver
sn: user50
name: user50
userPassword:: YTg1NTM2MDMtZWQ1NS00OGQ4LWFlNjMtOTRkN2YwMzg1OGFj
objectClass: person
objectClass: extensibleObject
objectClass: top
ou: UAT
cn: user50

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2


You can see that both entries have the exact same "dn":
dn: cn=user50,ou=UAT,dc=authserver
dn: cn=user50,ou=UAT,dc=authserver


When looking at the code, I tried to reproduce the same issue in a different 
environment, but the CoreSession object will actually not allow you to add 
duplicate entries, throwing the following exception:

org.apache.directory.shared.ldap.exception.LdapEntryAlreadyExistsException: 
ERR_250 cn=user50,ou=UAT,dc=authserver already exists!

Is it possible that a bug in ApacheDS has corrupted the internal database?

Thank you.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to