Ldap group troubles

Phil Mayers p.mayers at imperial.ac.uk
Fri Jun 8 01:20:53 CEST 2007


Dourty, Brian R. (IATS) wrote:
> Upgrading is what broke this functionality.  It works with version
> 1.0.1. Sometime after that a change was made to rlm_ldap.c. This change
> modified the ldap_escape_func() function. The way this function works in
> 1.1.4 and up is different than 1.0.1. Basically, it didn't escape
> anything in 1.0.1 and now it does. 
> 
> What we see in 1.1.4/1.1.6 is that a UserDN returned from AD using
> OpenLDAP looks like this:
> 
> CN=Lastname\,Firstname, CN=bla,DC=bla
> 
> After the ldap_escape_func() returns it looks like this:
> 
> CN\\3dLastname\\5c\\5c\\2cFirstname\\2cCN\\3dbla\\2cDC\\3dbla
> 
> The \, gets escaped then translated and becomes \\5c\\5c\\2c which
> doesn't match \, in the member= results of the group.
> 

Actually now that you mention it I seem to remember this coming up 
before, and me giving the same answer to someone else:

FreeRadius' ldap_escape_func appears very over-zealous. I believe it's 
only necessary to escape:

*
(
)
\
NUL

...when substituting values into LDAP filters. FR escapes in addition to 
this:

,
+
"
<
 >
;
=

(and not NUL, but of course FR can't actually deal with strings 
containing embedded nulls. Binary types yes, not strings)

See:

http://www.mail-archive.com/freeradius-users@lists.freeradius.org/msg34741.html

And:

http://www.mail-archive.com/freeradius-users@lists.freeradius.org/msg22126.html

Note that the post in that latter thread is wrong - RFC2254 only 
mandates escaping of the chars in my 1st list, and explicitly not the 
others. However, RFC2254 does *permit* escaping of other chars. I'm 
guessing AD doesn't process that however and thus the fault.

I'd like to know why FR ldap_escape_func was made more strict - was 
there an actual problem or was it solving a problem that doesn't 
actually exist?



More information about the Freeradius-Users mailing list