--- servers/slapd/filter.c 2000/05/22 01:46:57 1.42 +++ servers/slapd/filter.c 2000/05/23 22:13:27 1.43 @@ -1,5 +1,5 @@ /* filter.c - routines for parsing and dealing with filters */ -/* $OpenLDAP: pkg/ldap/servers/slapd/filter.c,v 1.41 2000/05/21 21:15:55 kurt Exp $ */ +/* $OpenLDAP: pkg/ldap/servers/slapd/filter.c,v 1.42 2000/05/22 01:46:57 kurt Exp $ */ /* * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file @@ -312,17 +312,28 @@ get_filter( break; } + free( ftmp ); + if ( err != LDAP_SUCCESS ) { - free( (char *) f ); if ( *fstr != NULL ) { free( *fstr ); } + + if( err != SLAPD_DISCONNECT ) { + /* ignore error */ + f->f_choice = SLAPD_FILTER_COMPUTED; + f->f_result = SLAPD_COMPARE_UNDEFINED; + *fstr = ch_strdup( "(badfilter)" ); + err = LDAP_SUCCESS; + *filt = f; + + } else { + free(f); + } } else { *filt = f; } - free( ftmp ); - Debug( LDAP_DEBUG_FILTER, "end get_filter %d\n", err, 0, 0 ); return( err ); }