Cyrus ptloader and canonification ( '.' and '^' divider in addresses )

Cornelius Hald hald at icandy.de
Wed Feb 11 20:02:52 CET 2015


Hi guys!

Yesterday I've tried again to hunt down my mysterious crashes in
ptloader. Therefore I've forked the cyrus package on OBS and added a lot
of debug output to ptclient/ldap.c. In particular to ptsmodule_get_dn()
because that is where the crash occurs.

I'm still not sure what causes the crash, but found something else I
can't really explain. So I'm hoping someone here could point me in the
right direction.

It looks like ptsmodule_get_dn() tries to find the DN for a given user
(or email address, or alias, etc.)

Usually the generated LDAP filter looks like this:
(|(&(|(uid=cyrus-admin)(uid=cyrus-murder))(uid=peter.weber))(&(|(uid=peter.weber)(mail=peter.weber at example.com)(mail=peter.weber@))(objectclass=kolabinetorgperson)))

And returns a DN like that:
uid=weber,ou=People,dc=example,dc=com

So far so good. But sometimes I see queries for the same user but with
'^' instead of '.' as divider between first name and last name.

Like this:
(|(&(|(uid=cyrus-admin)(uid=cyrus-murder))(uid=peter^weber))(&(|(uid=peter^weber)(mail=peter^weber at example.com)(mail=peter^weber@))(objectclass=kolabinetorgperson)))

Those queries do not return a valid DN but PTSM_FAIL.

So my question is: Why are the requests sometimes in one format and
sometimes in a different format. And is that intentional.

Thanks!
Conny



More information about the users mailing list