[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: one-level search error? (ITS#1654)
At 01:26 AM 2002-03-25, Pierangelo Masarati wrote:
>I have a quick fix for this problem, there's a possibly unneeded call
>to dn_normalize() in back-ldbm/search.c:286 of REL_ENG_2 code:
>
> /* check scope */
> if ( !scopeok && scope == LDAP_SCOPE_ONELEVEL ) {
> if ( (dn = dn_parent( be, e->e_ndn )) != NULL ) {
>- (void) dn_normalize( dn );
> scopeok = (dn == realbase)
> ? 1
> : (strcmp( dn, realbase ) ? 0 : 1 );
> free( dn );
>
> } else {
> scopeok = (realbase == NULL || *realbase == '\0');
> }
>
> } else if ( !scopeok && scope == LDAP_SCOPE_SUBTREE ) {
>
>
>that causes the normalized twice portion of the entry's DN to differ from the
>normalized once searchbase. Of course the real bug is in the
>dn_normalize()/dn_validate() code, but I'm sure we don't want to go back
>to those functions and fix their logic.
>
>What seems to happen is that when a sequence of '\' is present, only the
>first couple gets escaped (e.g. '\\\\' becomes '\\\' instead of '\\').
>
>Note that this doesn't affect the fact that normalizing things more
>than once leads to erroneous results: '\\\\' => '\\' => '\' even if the
>logic of dn_normalize() is ok.
>
>I don't remember why that second normalization appeared in that portion
>of code, so I'm not sure whether it's safe to take it away.
It likely was added to deal with spaces after the separator.
Kurt