--- servers/slapd/filter.c 2001/01/17 15:35:53 1.57 +++ servers/slapd/filter.c 2001/05/23 23:07:00 1.58 @@ -1,5 +1,5 @@ /* filter.c - routines for parsing and dealing with filters */ -/* $OpenLDAP: pkg/ldap/servers/slapd/filter.c,v 1.56 2001/01/15 18:17:30 gwilliams Exp $ */ +/* $OpenLDAP: pkg/ldap/servers/slapd/filter.c,v 1.57 2001/01/17 15:35:53 gwilliams Exp $ */ /* * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file @@ -544,7 +544,11 @@ get_substring_filter( #else Debug( LDAP_DEBUG_FILTER, " INITIAL\n", 0, 0, 0 ); #endif - if ( f->f_sub_initial != NULL ) { + + if ( f->f_sub_initial != NULL + || f->f_sub_any != NULL + || f->f_sub_final != NULL ) + { ber_bvfree( value ); goto return_error; } @@ -568,6 +572,12 @@ get_substring_filter( #else Debug( LDAP_DEBUG_FILTER, " ANY\n", 0, 0, 0 ); #endif + + if ( f->f_sub_final != NULL ) { + ber_bvfree( value ); + goto return_error; + } + if( ber_bvecadd( &f->f_sub_any, value ) < 0 ) { ber_bvfree( value ); goto return_error; @@ -591,10 +601,12 @@ get_substring_filter( #else Debug( LDAP_DEBUG_FILTER, " FINAL\n", 0, 0, 0 ); #endif + if ( f->f_sub_final != NULL ) { ber_bvfree( value ); goto return_error; } + f->f_sub_final = value; if( fstr ) {