[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: back-sql and unicode



> 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:

You should open an ITS, and provide a patch against HEAD code
(simply run "cvs diff -u" from a checked out tree with
your changes applied).

p.

>
> 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;
> .......
> }


-- 
Pierangelo Masarati
mailto:pierangelo.masarati@sys-net.it