X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=servers%2Fslapd%2Ffilter.c;h=34fa6b9f69f32555a41c949841cc8b27af428891;hb=306795461663a6bab277205554fa4df8f9515c8a;hp=19acd9e38dda5f906256a8a1577f33bd8e43f396;hpb=ece7452b05fcbbb14823e113b683365a59f81f05;p=openldap diff --git a/servers/slapd/filter.c b/servers/slapd/filter.c index 19acd9e38d..34fa6b9f69 100644 --- a/servers/slapd/filter.c +++ b/servers/slapd/filter.c @@ -278,6 +278,7 @@ get_filter( if( err != LDAP_SUCCESS && err != SLAPD_DISCONNECT ) { /* ignore error */ + *text = NULL; f.f_choice = SLAPD_FILTER_COMPUTED; f.f_result = SLAPD_COMPARE_UNDEFINED; err = LDAP_SUCCESS; @@ -372,7 +373,13 @@ get_ssa( rc = slap_bv2ad( &desc, &ssa.sa_desc, text ); if( rc != LDAP_SUCCESS ) { - return LDAP_SUCCESS; + /* skip over the rest of this filter */ + for ( tag = ber_first_element( ber, &len, &last ); + tag != LBER_DEFAULT; + tag = ber_next_element( ber, &len, last ) ) { + ber_scanf( ber, "x" ); + } + return rc; } rc = LDAP_PROTOCOL_ERROR; @@ -602,8 +609,8 @@ filter_free( Filter *f ) { Operation op; - op.o_tmpmemctx = NULL; - op.o_tmpmfuncs = &ch_mfuncs; + op.o_tmpmemctx = sl_context( f ); + op.o_tmpmfuncs = &sl_mfuncs; filter_free_x( &op, f ); }