From f41322d8ef5389a1e8075976bc4b66487f813e1b Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Thu, 3 Jan 2008 08:25:58 +0000 Subject: [PATCH] Fix prev commit --- libraries/libldap/filter.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/libraries/libldap/filter.c b/libraries/libldap/filter.c index 3ad77c4fdb..cd70ac4ea0 100644 --- a/libraries/libldap/filter.c +++ b/libraries/libldap/filter.c @@ -50,7 +50,8 @@ static int put_simple_filter LDAP_P(( static int put_substring_filter LDAP_P(( BerElement *ber, char *type, - char *str )); + char *str, + char *nextstar )); static int put_filter_list LDAP_P(( BerElement *ber, @@ -693,7 +694,7 @@ put_simple_filter( ftype = LDAP_FILTER_PRESENT; } else { - rc = put_substring_filter( ber, str, value ); + rc = put_substring_filter( ber, str, value, nextstar ); goto done; } } break; @@ -720,9 +721,8 @@ done: } static int -put_substring_filter( BerElement *ber, char *type, char *val ) +put_substring_filter( BerElement *ber, char *type, char *val, char *nextstar ) { - char *nextstar; int gotstar = 0; ber_tag_t ftype = LDAP_FILTER_SUBSTRINGS; @@ -734,12 +734,13 @@ put_substring_filter( BerElement *ber, char *type, char *val ) } for( ; *val; val=nextstar ) { - nextstar = ldap_pvt_find_wildcard( val ); + if ( gotstar ) + nextstar = ldap_pvt_find_wildcard( val ); if ( nextstar == NULL ) { return -1; } - + if ( *nextstar == '\0' ) { ftype = LDAP_SUBSTRING_FINAL; } else { @@ -751,9 +752,7 @@ put_substring_filter( BerElement *ber, char *type, char *val ) } } - if ( *val == '\0' ) { - return -1; - } else { + if ( *val != '\0' || ftype == LDAP_SUBSTRING_ANY ) { ber_slen_t len = ldap_pvt_filter_value_unescape( val ); if ( len <= 0 ) { @@ -1099,7 +1098,7 @@ put_simple_vrFilter( ftype = LDAP_FILTER_PRESENT; } else { - rc = put_substring_filter( ber, str, value ); + rc = put_substring_filter( ber, str, value, nextstar ); goto done; } } break; -- 2.39.5