[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
back-sql and unicode
- To: openldap-bugs@OpenLDAP.org
- Subject: back-sql and unicode
- From: Dmitry Chernikov <chernikov@beltel.ru>
- Date: Thu, 11 Dec 2003 16:18:58 +0300
- User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.6b) Gecko/20031203 Thunderbird/0.4RC2
Hello,
There is problem with unicode processing. (openldap 2.1.24 protocol v3)
Currently back-sql sources uses ldap_pvt_str2upper function to uppercase
filter values instead of unicode aware version. Thus search always
returns empty result.
Problem source files
\servers\slapd\back-sql\search.c
\servers\slapd\back-sql\sql-wrap.c
\servers\slapd\back-sql\entry-id.c
and \servers\slapd\ad.c
And this patch fixes error in sql expression when left operand is empty:
file: \servers\slapd\back-sql\search.c
static int
backsql_process_filter_list( backsql_srch_info *bsi, Filter *f, int op )
{
.......
res = backsql_process_filter( bsi, f );
if ( res < 0 ) {
/*
* TimesTen : If the query has no answers,
* don't bother to run the query.
*/
return -1;
}
f = f->f_next;
if ( f == NULL ) {
break;
}
+ if (res==0) continue; /*left operand is empty*/
switch ( op ) {
case LDAP_FILTER_AND:
backsql_strfcat( &bsi->flt_where, &bsi->fwhere_len, "l",
(ber_len_t)sizeof( " AND " ) - 1, " AND " );
break;
case LDAP_FILTER_OR:
backsql_strfcat( &bsi->flt_where, &bsi->fwhere_len, "l",
(ber_len_t)sizeof( " OR " ) - 1, " OR " );
break;
.......
}