version 1.60, 2001/06/22 16:09:19
|
version 1.61, 2001/10/22 11:23:05
|
Line 1
|
Line 1
|
/* filter.c - routines for parsing and dealing with filters */ |
/* filter.c - routines for parsing and dealing with filters */ |
/* $OpenLDAP: pkg/ldap/servers/slapd/filter.c,v 1.59 2001/06/16 00:20:48 kurt Exp $ */ |
/* $OpenLDAP: pkg/ldap/servers/slapd/filter.c,v 1.60 2001/06/22 16:09:19 kurt Exp $ */ |
/* |
/* |
* Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. |
* Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. |
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file |
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file |
Line 118 get_filter(
|
Line 118 get_filter(
|
filter_escape_value( f->f_av_value, &escaped ); |
filter_escape_value( f->f_av_value, &escaped ); |
|
|
*fstr = ch_malloc( sizeof("(=)") |
*fstr = ch_malloc( sizeof("(=)") |
+ f->f_av_desc->ad_cname->bv_len |
+ f->f_av_desc->ad_cname.bv_len |
+ escaped.bv_len ); |
+ escaped.bv_len ); |
|
|
sprintf( *fstr, "(%s=%s)", |
sprintf( *fstr, "(%s=%s)", |
f->f_av_desc->ad_cname->bv_val, |
f->f_av_desc->ad_cname.bv_val, |
escaped.bv_val ); |
escaped.bv_val ); |
|
|
ber_memfree( escaped.bv_val ); |
ber_memfree( escaped.bv_val ); |
Line 153 get_filter(
|
Line 153 get_filter(
|
filter_escape_value( f->f_av_value, &escaped ); |
filter_escape_value( f->f_av_value, &escaped ); |
|
|
*fstr = ch_malloc( sizeof("(>=)") |
*fstr = ch_malloc( sizeof("(>=)") |
+ f->f_av_desc->ad_cname->bv_len |
+ f->f_av_desc->ad_cname.bv_len |
+ escaped.bv_len ); |
+ escaped.bv_len ); |
|
|
sprintf( *fstr, "(%s>=%s)", |
sprintf( *fstr, "(%s>=%s)", |
f->f_av_desc->ad_cname->bv_val, |
f->f_av_desc->ad_cname.bv_val, |
escaped.bv_val ); |
escaped.bv_val ); |
|
|
ber_memfree( escaped.bv_val ); |
ber_memfree( escaped.bv_val ); |
Line 179 get_filter(
|
Line 179 get_filter(
|
filter_escape_value( f->f_av_value, &escaped ); |
filter_escape_value( f->f_av_value, &escaped ); |
|
|
*fstr = ch_malloc( sizeof("(<=)") |
*fstr = ch_malloc( sizeof("(<=)") |
+ f->f_av_desc->ad_cname->bv_len |
+ f->f_av_desc->ad_cname.bv_len |
+ escaped.bv_len ); |
+ escaped.bv_len ); |
|
|
sprintf( *fstr, "(%s<=%s)", |
sprintf( *fstr, "(%s<=%s)", |
f->f_av_desc->ad_cname->bv_val, |
f->f_av_desc->ad_cname.bv_val, |
escaped.bv_val ); |
escaped.bv_val ); |
|
|
ber_memfree( escaped.bv_val ); |
ber_memfree( escaped.bv_val ); |
Line 215 get_filter(
|
Line 215 get_filter(
|
ch_free( type.bv_val ); |
ch_free( type.bv_val ); |
|
|
*fstr = ch_malloc( sizeof("(=*)") |
*fstr = ch_malloc( sizeof("(=*)") |
+ f->f_desc->ad_cname->bv_len ); |
+ f->f_desc->ad_cname.bv_len ); |
sprintf( *fstr, "(%s=*)", |
sprintf( *fstr, "(%s=*)", |
f->f_desc->ad_cname->bv_val ); |
f->f_desc->ad_cname.bv_val ); |
|
|
} break; |
} break; |
|
|
Line 236 get_filter(
|
Line 236 get_filter(
|
filter_escape_value( f->f_av_value, &escaped ); |
filter_escape_value( f->f_av_value, &escaped ); |
|
|
*fstr = ch_malloc( sizeof("(~=)") |
*fstr = ch_malloc( sizeof("(~=)") |
+ f->f_av_desc->ad_cname->bv_len |
+ f->f_av_desc->ad_cname.bv_len |
+ escaped.bv_len ); |
+ escaped.bv_len ); |
|
|
sprintf( *fstr, "(%s~=%s)", |
sprintf( *fstr, "(%s~=%s)", |
f->f_av_desc->ad_cname->bv_val, |
f->f_av_desc->ad_cname.bv_val, |
escaped.bv_val ); |
escaped.bv_val ); |
|
|
ber_memfree( escaped.bv_val ); |
ber_memfree( escaped.bv_val ); |
Line 316 get_filter(
|
Line 316 get_filter(
|
filter_escape_value( f->f_mr_value, &escaped ); |
filter_escape_value( f->f_mr_value, &escaped ); |
|
|
*fstr = ch_malloc( sizeof("(:dn::=)") |
*fstr = ch_malloc( sizeof("(:dn::=)") |
+ (f->f_mr_desc ? f->f_mr_desc->ad_cname->bv_len : 0) |
+ (f->f_mr_desc ? f->f_mr_desc->ad_cname.bv_len : 0) |
+ (f->f_mr_rule_text ? strlen(f->f_mr_rule_text) : 0) |
+ (f->f_mr_rule_text ? strlen(f->f_mr_rule_text) : 0) |
+ escaped.bv_len ); |
+ escaped.bv_len ); |
|
|
sprintf( *fstr, "(%s%s%s%s:=%s)", |
sprintf( *fstr, "(%s%s%s%s:=%s)", |
(f->f_mr_desc ? f->f_mr_desc->ad_cname->bv_val : ""), |
(f->f_mr_desc ? f->f_mr_desc->ad_cname.bv_val : ""), |
(f->f_mr_dnattrs ? ":dn" : ""), |
(f->f_mr_dnattrs ? ":dn" : ""), |
(f->f_mr_rule_text ? ":" : ""), |
(f->f_mr_rule_text ? ":" : ""), |
(f->f_mr_rule_text ? f->f_mr_rule_text : ""), |
(f->f_mr_rule_text ? f->f_mr_rule_text : ""), |
Line 474 get_substring_filter(
|
Line 474 get_substring_filter(
|
|
|
if( fstr ) { |
if( fstr ) { |
*fstr = ch_malloc( sizeof("(=" /*)*/) + |
*fstr = ch_malloc( sizeof("(=" /*)*/) + |
f->f_sub_desc->ad_cname->bv_len ); |
f->f_sub_desc->ad_cname.bv_len ); |
sprintf( *fstr, "(%s=" /*)*/, f->f_sub_desc->ad_cname->bv_val ); |
sprintf( *fstr, "(%s=" /*)*/, f->f_sub_desc->ad_cname.bv_val ); |
} |
} |
|
|
for ( tag = ber_first_element( ber, &len, &last ); tag != LBER_DEFAULT; |
for ( tag = ber_first_element( ber, &len, &last ); tag != LBER_DEFAULT; |
Line 646 return_error:
|
Line 646 return_error:
|
*fstr = NULL; |
*fstr = NULL; |
} |
} |
|
|
ad_free( f->f_sub_desc, 1 ); |
|
ber_bvfree( f->f_sub_initial ); |
ber_bvfree( f->f_sub_initial ); |
ber_bvecfree( f->f_sub_any ); |
ber_bvecfree( f->f_sub_any ); |
ber_bvfree( f->f_sub_final ); |
ber_bvfree( f->f_sub_final ); |
Line 683 filter_free( Filter *f )
|
Line 682 filter_free( Filter *f )
|
|
|
switch ( f->f_choice ) { |
switch ( f->f_choice ) { |
case LDAP_FILTER_PRESENT: |
case LDAP_FILTER_PRESENT: |
ad_free( f->f_desc, 1 ); |
|
break; |
break; |
|
|
case LDAP_FILTER_EQUALITY: |
case LDAP_FILTER_EQUALITY: |
Line 694 filter_free( Filter *f )
|
Line 692 filter_free( Filter *f )
|
break; |
break; |
|
|
case LDAP_FILTER_SUBSTRINGS: |
case LDAP_FILTER_SUBSTRINGS: |
ad_free( f->f_sub_desc, 1 ); |
|
if ( f->f_sub_initial != NULL ) { |
if ( f->f_sub_initial != NULL ) { |
ber_bvfree( f->f_sub_initial ); |
ber_bvfree( f->f_sub_initial ); |
} |
} |
Line 747 filter_print( Filter *f )
|
Line 744 filter_print( Filter *f )
|
case LDAP_FILTER_EQUALITY: |
case LDAP_FILTER_EQUALITY: |
filter_escape_value( f->f_av_value, &escaped ); |
filter_escape_value( f->f_av_value, &escaped ); |
fprintf( stderr, "(%s=%s)", |
fprintf( stderr, "(%s=%s)", |
f->f_av_desc->ad_cname->bv_val, |
f->f_av_desc->ad_cname.bv_val, |
escaped.bv_val ); |
escaped.bv_val ); |
ber_memfree( escaped.bv_val ); |
ber_memfree( escaped.bv_val ); |
break; |
break; |
Line 755 filter_print( Filter *f )
|
Line 752 filter_print( Filter *f )
|
case LDAP_FILTER_GE: |
case LDAP_FILTER_GE: |
filter_escape_value( f->f_av_value, &escaped ); |
filter_escape_value( f->f_av_value, &escaped ); |
fprintf( stderr, "(%s>=%s)", |
fprintf( stderr, "(%s>=%s)", |
f->f_av_desc->ad_cname->bv_val, |
f->f_av_desc->ad_cname.bv_val, |
escaped.bv_val ); |
escaped.bv_val ); |
ber_memfree( escaped.bv_val ); |
ber_memfree( escaped.bv_val ); |
break; |
break; |
Line 763 filter_print( Filter *f )
|
Line 760 filter_print( Filter *f )
|
case LDAP_FILTER_LE: |
case LDAP_FILTER_LE: |
filter_escape_value( f->f_av_value, &escaped ); |
filter_escape_value( f->f_av_value, &escaped ); |
fprintf( stderr, "(%s<=%s)", |
fprintf( stderr, "(%s<=%s)", |
f->f_ava->aa_desc->ad_cname->bv_val, |
f->f_ava->aa_desc->ad_cname.bv_val, |
escaped.bv_val ); |
escaped.bv_val ); |
ber_memfree( escaped.bv_val ); |
ber_memfree( escaped.bv_val ); |
break; |
break; |
Line 771 filter_print( Filter *f )
|
Line 768 filter_print( Filter *f )
|
case LDAP_FILTER_APPROX: |
case LDAP_FILTER_APPROX: |
filter_escape_value( f->f_av_value, &escaped ); |
filter_escape_value( f->f_av_value, &escaped ); |
fprintf( stderr, "(%s~=%s)", |
fprintf( stderr, "(%s~=%s)", |
f->f_ava->aa_desc->ad_cname->bv_val, |
f->f_ava->aa_desc->ad_cname.bv_val, |
escaped.bv_val ); |
escaped.bv_val ); |
ber_memfree( escaped.bv_val ); |
ber_memfree( escaped.bv_val ); |
break; |
break; |
|
|
case LDAP_FILTER_SUBSTRINGS: |
case LDAP_FILTER_SUBSTRINGS: |
fprintf( stderr, "(%s=" /*)*/, |
fprintf( stderr, "(%s=" /*)*/, |
f->f_sub_desc->ad_cname->bv_val ); |
f->f_sub_desc->ad_cname.bv_val ); |
if ( f->f_sub_initial != NULL ) { |
if ( f->f_sub_initial != NULL ) { |
filter_escape_value( f->f_sub_initial, &escaped ); |
filter_escape_value( f->f_sub_initial, &escaped ); |
fprintf( stderr, "%s", |
fprintf( stderr, "%s", |
Line 804 filter_print( Filter *f )
|
Line 801 filter_print( Filter *f )
|
|
|
case LDAP_FILTER_PRESENT: |
case LDAP_FILTER_PRESENT: |
fprintf( stderr, "(%s=*)", |
fprintf( stderr, "(%s=*)", |
f->f_desc->ad_cname->bv_val ); |
f->f_desc->ad_cname.bv_val ); |
break; |
break; |
|
|
case LDAP_FILTER_AND: |
case LDAP_FILTER_AND: |