X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fstr2filter.c;h=04667cc345b73f4efdf15806ec5b8ea51c950952;hb=9b4bf8a973c8cfea809be9a4b658f785a6b16f2f;hp=a48af4065904191fdbedf3a950fdbce971538b6d;hpb=bb9531eda695004f38d37d70dd23d8613c3e3ce3;p=openldap diff --git a/servers/slapd/str2filter.c b/servers/slapd/str2filter.c index a48af40659..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 */ @@ -28,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; @@ -44,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, 1 ); - - 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; }