X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fstr2filter.c;h=04667cc345b73f4efdf15806ec5b8ea51c950952;hb=9b4bf8a973c8cfea809be9a4b658f785a6b16f2f;hp=ff7cd450adfc7eea72d5e479af5fd74831697131;hpb=6107ba67d2fd7eadb23ffdd1d284306011ef4013;p=openldap diff --git a/servers/slapd/str2filter.c b/servers/slapd/str2filter.c index ff7cd450ad..04667cc345 100644 --- a/servers/slapd/str2filter.c +++ b/servers/slapd/str2filter.c @@ -1,7 +1,7 @@ /* str2filter.c - parse an rfc 1588 string filter */ /* $OpenLDAP$ */ /* - * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. + * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */ @@ -16,7 +16,9 @@ #include "slap.h" #include +#if 0 /* unused */ static char *find_matching_paren( const char *s ); +#endif /* unused */ static Filter *str2list( const char *str, long unsigned int ftype); static Filter *str2simple( const char *str); static int str2subvals( const char *val, Filter *f); @@ -26,9 +28,8 @@ str2filter( const char *str ) { int rc; Filter *f = NULL; - BerElement *ber; char berbuf[256]; - struct berval *bv = NULL; + BerElement *ber = (BerElement *)berbuf; Connection conn; const char *text = NULL; @@ -42,35 +43,21 @@ str2filter( const char *str ) return NULL; } - ber = ber_alloc_t( LBER_USE_DER ); - if( ber == NULL ) { - return NULL; - } + ber_init2( ber, NULL, LBER_USE_DER ); rc = ldap_pvt_put_filter( ber, str ); if( rc < 0 ) { goto done; } - rc = ber_flatten( ber, &bv ); - if( rc < 0 ) { - goto done; - } - - ber_free( ber, 0 ); - - ber = (BerElement *)berbuf; - ber_init2( ber, bv, 0 ); + ber_reset( ber, 1 ); conn.c_connid = 0; rc = get_filter( &conn, ber, &f, &text ); - if( rc ) { - goto done; - } done: - ber_bvfree( bv ); + ber_free_buf( ber ); return f; }