slap_callback cb = { NULL, acl_set_cb_gather, NULL, NULL };
acl_set_gather_t p = { 0 };
const char *text = NULL;
- static struct berval defaultFilter_bv = BER_BVC( "(objectClass=*)" );
/* this routine needs to return the bervals instead of
* plain strings, since syntax is not known. It should
if ( ludp->lud_filter ) {
ber_str2bv_x( ludp->lud_filter, 0, 0, &op2.ors_filterstr,
cp->asc_op->o_tmpmemctx );
+ op2.ors_filter = str2filter_x( cp->asc_op, op2.ors_filterstr.bv_val );
+ if ( op2.ors_filter == NULL ) {
+ rc = LDAP_PROTOCOL_ERROR;
+ goto url_done;
+ }
} else {
- op2.ors_filterstr = defaultFilter_bv;
+ op2.ors_filterstr = *slap_filterstr_objectClass_pres;
+ op2.ors_filter = slap_filter_objectClass_pres;
}
- op2.ors_filter = str2filter_x( cp->asc_op, op2.ors_filterstr.bv_val );
- if ( op2.ors_filter == NULL ) {
- rc = LDAP_PROTOCOL_ERROR;
- goto url_done;
- }
/* Grab the scope */
op2.ors_scope = ludp->lud_scope;
}
url_done:;
- if ( op2.ors_filter ) {
+ if ( op2.ors_filter && op2.ors_filter != slap_filter_objectClass_pres ) {
filter_free_x( cp->asc_op, op2.ors_filter );
}
if ( !BER_BVISNULL( &op2.o_req_ndn ) ) {
Entry *matched, *a;
EntryInfo *ei;
struct berval bv_alias = BER_BVC( "alias" );
-#ifdef LDAP_COMP_MATCH
- AttributeAssertion aa_alias = { NULL, BER_BVNULL, NULL };
-#else
- AttributeAssertion aa_alias = { NULL, BER_BVNULL };
-#endif
+ AttributeAssertion aa_alias = ATTRIBUTEASSERTION_INIT;
Filter af;
DB_LOCK locka, lockr;
int first = 1;
int rc, depth = 1;
Filter f, rf, xf, nf;
ID *stack;
-#ifdef LDAP_COMP_MATCH
- AttributeAssertion aa_ref = { NULL, BER_BVNULL, NULL };
-#else
- AttributeAssertion aa_ref = { NULL, BER_BVNULL };
-#endif
+ AttributeAssertion aa_ref = ATTRIBUTEASSERTION_INIT;
Filter sf;
-#ifdef LDAP_COMP_MATCH
- AttributeAssertion aa_subentry = { NULL, BER_BVNULL, NULL };
-#else
- AttributeAssertion aa_subentry = { NULL, BER_BVNULL };
-#endif
+ AttributeAssertion aa_subentry = ATTRIBUTEASSERTION_INIT;
/*
* This routine takes as input a filter (user-filter)
rs->sr_text = "No suitable candidate target found";
} else if ( candidate == META_TARGET_MULTIPLE ) {
- Filter f = { 0 };
Operation op2 = *op;
SlapReply rs2 = { 0 };
slap_callback cb2 = { 0 };
op2.ors_slimit = 1;
op2.ors_tlimit = SLAP_NO_LIMIT;
- f.f_choice = LDAP_FILTER_PRESENT;
- f.f_desc = slap_schema.si_ad_objectClass;
- op2.ors_filter = &f;
- BER_BVSTR( &op2.ors_filterstr, "(objectClass=*)" );
+ op2.ors_filter = slap_filter_objectClass_pres;
+ op2.ors_filterstr = *slap_filterstr_objectClass_pres;
op2.o_callback = &cb2;
cb2.sc_response = meta_back_conn_cb;
Operation op2 = *op;
slap_callback sc = { 0 };
SlapReply rs2 = { 0 };
- Filter f = { 0 };
backsql_tree_delete_t btd = { 0 };
int rc;
op2.ors_deref = LDAP_DEREF_NEVER;
op2.ors_slimit = SLAP_NO_LIMIT;
op2.ors_tlimit = SLAP_NO_LIMIT;
- op2.ors_filter = &f;
- f.f_choice = LDAP_FILTER_PRESENT;
- f.f_desc = slap_schema.si_ad_objectClass;
- BER_BVSTR( &op2.ors_filterstr, "(objectClass=*)" );
+ op2.ors_filter = slap_filter_objectClass_pres;
+ op2.ors_filterstr = *slap_filterstr_objectClass_pres;
op2.ors_attrs = slap_anlist_all_attributes;
op2.ors_attrsonly = 0;
struct berval dn = BER_BVNULL;
struct berval desc = BER_BVNULL;
struct berval value = BER_BVNULL;
- AttributeAssertion ava = { 0 };
+ AttributeAssertion ava = ATTRIBUTEASSERTION_INIT;
Debug( LDAP_DEBUG_TRACE, "%s do_compare\n",
op->o_log_prefix, 0, 0 );
#include "slap.h"
+const Filter *slap_filter_objectClass_pres;
+const struct berval *slap_filterstr_objectClass_pres;
+
static int get_filter_list(
Operation *op,
BerElement *ber,
ValuesReturnFilter **f,
const char **text );
+int
+filter_init( void )
+{
+ static Filter filter_objectClass_pres = { LDAP_FILTER_PRESENT };
+ static struct berval filterstr_objectClass_pres = BER_BVC("(objectClass=*)");
+
+ filter_objectClass_pres.f_desc = slap_schema.si_ad_objectClass;
+
+ slap_filter_objectClass_pres = &filter_objectClass_pres;
+ slap_filterstr_objectClass_pres = &filterstr_objectClass_pres;
+
+ return 0;
+}
+
+void
+filter_destroy( void )
+{
+ return;
+}
+
int
get_filter(
Operation *op,
return 1;
}
+ if ( filter_init() != 0 ) {
+ slap_debug |= LDAP_DEBUG_NONE;
+ Debug( LDAP_DEBUG_ANY,
+ "%s: filter_init failed\n",
+ name, 0, 0 );
+ return 1;
+ }
+
if ( entry_init() != 0 ) {
slap_debug |= LDAP_DEBUG_NONE;
Debug( LDAP_DEBUG_ANY,
controls_destroy();
+ filter_destroy();
+
schema_destroy();
lutil_passwd_destroy();
SlapReply rs = {REP_RESULT};
slap_callback cb = { NULL, log_old_lookup, NULL, NULL };
Filter f;
- AttributeAssertion ava = {0};
+ AttributeAssertion ava = ATTRIBUTEASSERTION_INIT;
purge_data pd = {0};
char timebuf[LDAP_LUTIL_GENTIME_BUFSIZE];
char csnbuf[LDAP_LUTIL_CSNSTR_BUFSIZE];
goto release;
}
- BER_BVSTR( &o.ors_filterstr, "(objectClass=*)" );
- o.ors_filter = str2filter_x( op, o.ors_filterstr.bv_val );
- if ( o.ors_filter == NULL ) {
- /* FIXME: error? */
- goto release;
- }
+ o.ors_filterstr = *slap_filterstr_objectClass_pres;
+ o.ors_filter = slap_filter_objectClass_pres;
o.ors_scope = LDAP_SCOPE_BASE;
o.ors_deref = LDAP_DEREF_NEVER;
o.o_acl_priv = ACL_COMPARE;
rc = o.o_bd->be_search( &o, &r );
- filter_free_x( &o, o.ors_filter );
if ( o.o_dn.bv_val != op->o_dn.bv_val ) {
slap_op_groups_free( &o );
{
struct query_info *qi, *qnext;
char filter_str[ LDAP_LUTIL_UUIDSTR_BUFSIZE + STRLENOF( "(queryId=)" ) ];
-#ifdef LDAP_COMP_MATCH
- AttributeAssertion ava = { NULL, BER_BVNULL, NULL };
-#else
- AttributeAssertion ava = { NULL, BER_BVNULL };
-#endif
+ AttributeAssertion ava = ATTRIBUTEASSERTION_INIT;
Filter filter = {LDAP_FILTER_EQUALITY};
SlapReply sreply = {REP_RESULT};
slap_callback cb = { NULL, remove_func, NULL, NULL };
SlapReply rs = { REP_RESULT };
Filter f = { 0 };
char filtbuf[ LDAP_LUTIL_UUIDSTR_BUFSIZE + STRLENOF( "(entryUUID=)" ) ];
-#ifdef LDAP_COMP_MATCH
- AttributeAssertion ava = { NULL, BER_BVNULL, NULL };
-#else
- AttributeAssertion ava = { NULL, BER_BVNULL };
-#endif
+ AttributeAssertion ava = ATTRIBUTEASSERTION_INIT;
AttributeName attrs[ 2 ] = { 0 };
int s, rc;
SlapReply rs = { REP_RESULT };
Filter f = { 0 };
char filter_str[ LDAP_LUTIL_UUIDSTR_BUFSIZE + STRLENOF( "(queryId=)" ) ];
-#ifdef LDAP_COMP_MATCH
- AttributeAssertion ava = { NULL, BER_BVNULL, NULL };
-#else
- AttributeAssertion ava = { NULL, BER_BVNULL };
-#endif
+ AttributeAssertion ava = ATTRIBUTEASSERTION_INIT;
AttributeName attrs[ 2 ] = { 0 };
int rc;
SlapReply rs = { 0 };
BerVarray vals = NULL;
Filter f = { 0 }, f2 = { 0 };
-#ifdef LDAP_COMP_MATCH
- AttributeAssertion ava = { NULL, BER_BVNULL, NULL };
-#else
- AttributeAssertion ava = { NULL, BER_BVNULL };
-#endif
+ AttributeAssertion ava = ATTRIBUTEASSERTION_INIT;
AttributeName attrs[ 2 ] = { 0 };
connection_fake_init( &conn, &opbuf, thrctx );
char cbuf[LDAP_LUTIL_CSNSTR_BUFSIZE];
struct berval maxcsn;
Filter cf;
-#ifdef LDAP_COMP_MATCH
- AttributeAssertion eq = { NULL, BER_BVNULL, NULL };
-#else
- AttributeAssertion eq = { NULL, BER_BVNULL };
-#endif
+ AttributeAssertion eq = ATTRIBUTEASSERTION_INIT;
fpres_cookie pcookie;
sync_control *srs = NULL;
struct slap_limits_set fc_limits;
SlapReply frs = { REP_RESULT };
int rc;
Filter mf, af;
-#ifdef LDAP_COMP_MATCH
- AttributeAssertion eq = { NULL, BER_BVNULL, NULL };
-#else
- AttributeAssertion eq;
-#endif
+ AttributeAssertion eq = ATTRIBUTEASSERTION_INIT;
slap_callback cb = {0};
fop = *op;
#define filter_escape_value( in, out ) ldap_bv2escaped_filter_value_x( (in), (out), 0, NULL )
#define filter_escape_value_x( in, out, ctx ) ldap_bv2escaped_filter_value_x( (in), (out), 0, ctx )
+LDAP_SLAPD_V (const Filter *) slap_filter_objectClass_pres;
+LDAP_SLAPD_V (const struct berval *) slap_filterstr_objectClass_pres;
+
+LDAP_SLAPD_F (int) filter_init LDAP_P(( void ));
+LDAP_SLAPD_F (void) filter_destroy LDAP_P(( void ));
/*
* filterentry.c
*/
ComponentFilter *aa_cf; /* for attribute aliasing */
#endif
};
+#ifdef LDAP_COMP_MATCH
+#define ATTRIBUTEASSERTION_INIT { NULL, BER_BVNULL, NULL }
+#else
+#define ATTRIBUTEASSERTION_INIT { NULL, BER_BVNULL }
+#endif
struct SubstringsAssertion {
AttributeDescription *sa_desc;
SlapReply rs_add = {REP_RESULT};
SlapReply rs_modify = {REP_RESULT};
Filter f = {0};
-#ifdef LDAP_COMP_MATCH
- AttributeAssertion ava = { NULL, BER_BVNULL, NULL };
-#else
- AttributeAssertion ava = { NULL, BER_BVNULL };
-#endif
+ AttributeAssertion ava = ATTRIBUTEASSERTION_INIT;
int rc = LDAP_SUCCESS;
struct berval pdn = BER_BVNULL;
if ( uuids ) {
Filter uf;
-#ifdef LDAP_COMP_MATCH
- AttributeAssertion eq = { NULL, BER_BVNULL, NULL };
-#else
- AttributeAssertion eq = { NULL, BER_BVNULL };
-#endif
+ AttributeAssertion eq = ATTRIBUTEASSERTION_INIT;
int i;
op->ors_attrsonly = 1;