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 );
}
}
#ifdef SLAPD_SCHEMA_NOT_COMPAT
+ f->f_sub = ch_calloc( 1, sizeof(SubstringsAssertion) );
f->f_sub_desc = NULL;
rc = slap_bv2ad( &type, &f->f_sub_desc, text );
if( rc != LDAP_SUCCESS ) {
text = NULL;
+ ch_free( f->f_sub );
f->f_choice = SLAPD_FILTER_COMPUTED;
f->f_result = SLAPD_COMPARE_UNDEFINED;
*fstr = ch_strdup( "(undefined)" );
ber_bvfree( f->f_sub_initial );
ber_bvecfree( f->f_sub_any );
ber_bvfree( f->f_sub_final );
+#ifdef SLAPD_SCHEMA_NOT_COMPAT
+ ch_free( f->f_sub );
+#endif
return rc;
}
}