Issue #331 has been reported by Martin Collins.

----------------------------------------
Bug #331: newlines in srcLdap response seem to cause a WrappedException
http://tools.lsc-project.org/issues/331

Author: Martin Collins
Status: New
Priority: Normal
Assigned to: 
Category: Core
Target version: 
Problem in version: 1.2.1, 2.0.x


I believe responses in which attributes are continued on a new line are not 
handled correctly and trigger a WrappedException. I can't edit the source 
directory to remove one of the member's that has a new line in to see if that 
correctly syncs after, but all the groups that do not have new lines are 
syncing so i believe this to be the cause.

Aug 16 16:28:54 - ERROR - Error while synchronizing ID {cn=group-name}: 
org.mozilla.javascript.WrappedException: Wrapped 
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 (<cmd>#1)
Aug 16 16:28:54 - DEBUG - org.mozilla.javascript.WrappedException: Wrapped 
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 (<cmd>#1)
org.mozilla.javascript.WrappedException: Wrapped 
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 (<cmd>#1)
        at 
org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1693) 
[js-1.6R5.jar:na]
        at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:160) 
[js-1.6R5.jar:na]
        at 
org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:204) 
[js-1.6R5.jar:na]
        at 
org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66) 
[js-1.6R5.jar:na]
        at org.mozilla.javascript.gen.c2._c0(<cmd>:1) [na:na]
        at org.mozilla.javascript.gen.c2.call(<cmd>) [na:na]
        at 
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:340) 
[js-1.6R5.jar:na]
        at 
org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2758) 
[js-1.6R5.jar:na]
        at org.mozilla.javascript.gen.c2.call(<cmd>) [na:na]
        at org.mozilla.javascript.gen.c2.exec(<cmd>) [na:na]
        at 
org.lsc.utils.JScriptEvaluator.instanceEval(JScriptEvaluator.java:227) 
[lsc-core-1.2.1.jar:na]
        at 
org.lsc.utils.JScriptEvaluator.evalToStringList(JScriptEvaluator.java:140) 
[lsc-core-1.2.1.jar:na]
        at org.lsc.beans.BeanComparator.getValuesToSet(BeanComparator.java:677) 
[lsc-core-1.2.1.jar:na]
        at 
org.lsc.beans.BeanComparator.getAddModifyEntry(BeanComparator.java:372) 
[lsc-core-1.2.1.jar:na]
        at 
org.lsc.beans.BeanComparator.calculateModifications(BeanComparator.java:248) 
[lsc-core-1.2.1.jar:na]
        at 
org.lsc.AbstractSynchronize.synchronize2Ldap(AbstractSynchronize.java:376) 
[lsc-core-1.2.1.jar:na]
        at org.lsc.SimpleSynchronize.launchTask(SimpleSynchronize.java:272) 
[lsc-core-1.2.1.jar:na]
        at org.lsc.SimpleSynchronize.launch(SimpleSynchronize.java:155) 
[lsc-core-1.2.1.jar:na]
        at org.lsc.Launcher.run(Launcher.java:151) [lsc-core-1.2.1.jar:na]
        at org.lsc.Launcher.main(Launcher.java:123) [lsc-core-1.2.1.jar:na]
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
        at java.util.ArrayList.RangeCheck(ArrayList.java:547) [na:1.6.0_26]
        at java.util.ArrayList.get(ArrayList.java:322) [na:1.6.0_26]
        at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) [na:na]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 [na:1.6.0_26]
        at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_26]
        at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:145) 
[js-1.6R5.jar:na]
        ... 18 common frames omitted


Setup:
 Source:      Windows 2k8
 Destination: OpenLDAP 2.3.43
 LSC:         1.2.1, 2.0-snap
 
[macollins@lon3dwks6 lsc]$ ldapsearch -hdc1.example.com -b'dc=example,dc=com' 
'(cn=group-name)' member -LLL
dn: CN=group-name,OU=Event,OU=All Users,DC=example,DC=com
member: CN=User Name,OU=Other Contacts,OU=HQ,OU=All Users,DC=example,DC=c
 om

Aug 16 16:33:16 - ERROR - Error while synchronizing ID {cn=group-two}: 
org.mozilla.javascript.WrappedException: Wrapped 
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 (<cmd>#1)

dn: CN=group-two,OU=Org,OU=All Users,DC=example,DC=com
member: CN=User One,OU=HQ,OU=All Users,DC=example,DC=com
member: CN=user Two,OU=HQ,OU=All Users,DC=example,DC=com
member: CN=User Three,OU=HQ,OU=All Users,DC=example,DC=com
member: CN=User Four,OU=HQ,OU=All Users,DC=example,DC=co
 m
member: CN=User Five,OU=HQ,OU=All Users,DC=example,DC=com

I've also tried the 2.0 snapshot too and that also has the same error.

Config:

# GLOBAL
src.java.naming.security.credentials = secret

# MAIN DOMAIN
src.java.naming.security.principal = CN=User,CN=Users,dc=example,dc=com
lsc.tasks.ADUsers.srcService.baseDn = cn=Users
lsc.tasks.ADGroups.srcService.baseDn = CN=Users
src.java.naming.provider.url = ldap://dc1:3268/dc=example,dc=com

# DESTINATION
dst.java.naming.provider.url = ldap://localhost:389/dc=example,dc=com
dst.java.naming.security.authentication = simple
dst.java.naming.security.principal = cn=ldapman,dc=example,dc=com
dst.java.naming.security.credentials = password
dst.java.naming.referral = follow
dst.java.naming.ldap.derefAliases = never
dst.java.naming.ldap.pageSize = 400
dst.java.naming.factory.initial = com.sun.jndi.ldap.LdapCtxFactory
dst.java.naming.ldap.version = 3

# SOURCE
src.java.naming.security.authentication = simple
src.java.naming.referral = ignore
src.java.naming.ldap.derefAliases = never
src.java.naming.factory.initial = com.sun.jndi.ldap.LdapCtxFactory
src.java.naming.ldap.version = 3

# TASKS

lsc.tasks = ADUsers,ADGroups,ADGroups

# USERS

lsc.tasks.ADUsers.srcService = org.lsc.jndi.SimpleJndiSrcService
lsc.tasks.ADUsers.dstService = org.lsc.jndi.SimpleJndiDstService

lsc.tasks.ADUsers.srcService.filterAll = 
(&(sAMAccountName=*)(objectClass=user)(sAMAccountType=805306368))
lsc.tasks.ADUsers.srcService.filterId = 
(|(sAMAccountName={uid})(sAMAccountName={sAMAccountName}))
lsc.tasks.ADUsers.srcService.pivotAttrs = sAMAccountName
lsc.tasks.ADUsers.srcService.attrs = description cn sn displayName uid 
givenName mail cn sAMAccountName

lsc.tasks.ADUsers.dstService.baseDn = ou=Users
lsc.tasks.ADUsers.dstService.filterAll = (&(uid=*)(objectClass=posixAccount))
lsc.tasks.ADUsers.dstService.filterId = (|(uid={uid})(uid={sAMAccountName}))
lsc.tasks.ADUsers.dstService.pivotAttrs = uid
lsc.tasks.ADUsers.dstService.attrs = cn uid description cn sn uidNumber 
gidNumber homeDirectory objectClass givenName mail distinguishedName loginShell

lsc.tasks.ADUsers.bean = org.lsc.beans.SimpleBean
lsc.tasks.ADUsers.dn = "uid=" + srcBean.getAttributeValueById("sAMAccountName") 
+ ",ou=Users"

# Groups

lsc.tasks.ADGroups.srcService = org.lsc.jndi.SimpleJndiSrcService
lsc.tasks.ADGroups.dstService = org.lsc.jndi.SimpleJndiDstService

#lsc.tasks.ADGroups.srcService.filterAll = 
(&(cn=*)(objectClass=group)(groupType:1.2.840.113556.1.4.803:=2147483648))
lsc.tasks.ADGroups.srcService.filterAll = (&(cn=*)(objectClass=group))
lsc.tasks.ADGroups.srcService.pivotAttrs = cn
lsc.tasks.ADGroups.srcService.filterId = (&(cn={cn}))
lsc.tasks.ADGroups.srcService.attrs = cn member

lsc.tasks.ADGroups.dstService.baseDn = ou=Groups
lsc.tasks.ADGroups.dstService.filterAll = (&(cn=*)(objectClass=posixGroup))
lsc.tasks.ADGroups.dstService.pivotAttrs = cn
lsc.tasks.ADGroups.dstService.filterId = (cn={cn})
lsc.tasks.ADGroups.dstService.attrs = cn uniqueMember objectClass gidNumber 
distinguishedName

lsc.tasks.ADGroups.bean = org.lsc.beans.SimpleBean
lsc.tasks.ADGroups.dn = "cn=" + srcBean.getAttributeValueById("cn") + 
",ou=Groups"

dn.real_root = dc=example,dc=com

# SyncOpts

lsc.syncoptions.ADUsers = org.lsc.beans.syncoptions.PropertiesBasedSyncOptions
lsc.syncoptions.ADUsers.default.action = K
lsc.syncoptions.ADUsers.default.delimiter = $
lsc.syncoptions.ADUsers.sn.create_value = srcBean.getAttributeValueById("sn") 
== "" ?  srcBean.getAttributeValueById("cn") : 
srcBean.getAttributeValueById("sn")
lsc.syncoptions.ADUsers.objectClass.create_value = 
"top"$"inetOrgPerson"$"posixAccount"$"smokeUser"
lsc.syncoptions.ADUsers.uidNumber.create_value = -1
lsc.syncoptions.ADUsers.gidNumber.create_value = -1
lsc.syncoptions.ADUsers.distinguishedName.create_value = "uid=" + 
srcBean.getAttributeValueById("sAMAccountName") + ",ou=Users,dc=example,dc=com"
lsc.syncoptions.ADUsers.homeDirectory.create_value = 
"/hosts/data/store/ifs/home/" + 
srcBean.getAttributeValueById("sAMAccountName").toLowerCase()
lsc.syncoptions.ADUsers.loginShell.create_value = "/bin/bash"

lsc.syncoptions.ADGroups = org.lsc.beans.syncoptions.PropertiesBasedSyncOptions
lsc.syncoptions.ADGroups.default.action = F
lsc.syncoptions.ADGroups.default.delimiter = $
lsc.syncoptions.ADGroups.objectClass.create_value = 
"top"$"posixGroup"$"smokeGroup"
lsc.syncoptions.ADGroups.distinguishedName.create_value = "cn=" + 
srcBean.getAttributeValueById("cn") + ",ou=Groups,dc=example,dc=com"
lsc.syncoptions.ADGroups.gidNumber.create_value = -1

lsc.syncoptions.ADGroups.uniqueMember.force_value = \
  var umembers = srcBean.getAttributeValuesById("member").toArray(); \
  for (var i=0; i < umembers.length; i++ ) { \
    umembers[i] = srcLdap.attribute(umembers[i], "sAMAccountName").get(0) || 
srcLdap.attribute(umembers[i], "cn").get(0); \
    try { \
      umembers[i] = ldap.attribute(ldap.list("ou=Users", "(uid=" + umembers[i] 
+ ")").get(0), 'distinguishedName').get(0); \
    } catch (e) { \
      try { \
        umembers[i] = ldap.attribute(ldap.list("ou=Groups", "(cn=" + 
umembers[i] + ")").get(0), 'distinguishedName').get(0); \
      } catch (e) { \
        umembers[i] = null \
      } \
    } \
  } \
  var members = new Array(); \
  var j = 0; \
  for(var i=0; i<umembers.length; i++ ) { \
    if(umembers[i] != null) members[j++] = umembers[i]; \
  } \
  members




-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://tools.lsc-project.org/my/account
_______________________________________________________________
Ldap Synchronization Connector (LSC) - http://lsc-project.org

lsc-dev mailing list
[email protected]
http://lists.lsc-project.org/listinfo/lsc-dev

Reply via email to