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