mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
check result of str2filter; syncrepl: can be broken; retcode: can't; pcache: shouldn't (ITS#6391)
This commit is contained in:
parent
993fbf4514
commit
1970251bb7
@ -768,6 +768,10 @@ url2query(
|
|||||||
}
|
}
|
||||||
query.scope = lud->lud_scope;
|
query.scope = lud->lud_scope;
|
||||||
query.filter = str2filter( lud->lud_filter );
|
query.filter = str2filter( lud->lud_filter );
|
||||||
|
if ( query.filter == NULL ) {
|
||||||
|
rc = -1;
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
tempstr.bv_val = ch_malloc( strlen( lud->lud_filter ) + 1 );
|
tempstr.bv_val = ch_malloc( strlen( lud->lud_filter ) + 1 );
|
||||||
tempstr.bv_len = 0;
|
tempstr.bv_len = 0;
|
||||||
@ -2639,7 +2643,14 @@ pc_bind_attrs( Operation *op, Entry *e, QueryTemplate *temp,
|
|||||||
}
|
}
|
||||||
*p2 = '\0';
|
*p2 = '\0';
|
||||||
op->o_tmpfree( vals, op->o_tmpmemctx );
|
op->o_tmpfree( vals, op->o_tmpmemctx );
|
||||||
return str2filter_x( op, fbv->bv_val );
|
|
||||||
|
/* FIXME: are we sure str2filter_x can't fail?
|
||||||
|
* caller needs to check */
|
||||||
|
{
|
||||||
|
Filter *f = str2filter_x( op, fbv->bv_val );
|
||||||
|
assert( f != NULL );
|
||||||
|
return f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if the requested entry is from the cache and has a valid
|
/* Check if the requested entry is from the cache and has a valid
|
||||||
|
@ -257,6 +257,9 @@ retcode_op_internal( Operation *op, SlapReply *rs )
|
|||||||
1, &op2.ors_filterstr, op2.o_tmpmemctx );
|
1, &op2.ors_filterstr, op2.o_tmpmemctx );
|
||||||
op2.ors_filter = str2filter_x( &op2, op2.ors_filterstr.bv_val );
|
op2.ors_filter = str2filter_x( &op2, op2.ors_filterstr.bv_val );
|
||||||
|
|
||||||
|
/* errAbsObject is defined by this overlay! */
|
||||||
|
assert( op2.ors_filter != NULL );
|
||||||
|
|
||||||
db.bd_info = on->on_info->oi_orig;
|
db.bd_info = on->on_info->oi_orig;
|
||||||
op2.o_bd = &db;
|
op2.o_bd = &db;
|
||||||
|
|
||||||
|
@ -75,6 +75,7 @@ typedef struct syncinfo_s {
|
|||||||
struct berval si_base;
|
struct berval si_base;
|
||||||
struct berval si_logbase;
|
struct berval si_logbase;
|
||||||
struct berval si_filterstr;
|
struct berval si_filterstr;
|
||||||
|
Filter *si_filter;
|
||||||
struct berval si_logfilterstr;
|
struct berval si_logfilterstr;
|
||||||
struct berval si_contextdn;
|
struct berval si_contextdn;
|
||||||
int si_scope;
|
int si_scope;
|
||||||
@ -2724,7 +2725,7 @@ syncrepl_del_nonpresent(
|
|||||||
op->ors_tlimit = SLAP_NO_LIMIT;
|
op->ors_tlimit = SLAP_NO_LIMIT;
|
||||||
op->ors_limit = NULL;
|
op->ors_limit = NULL;
|
||||||
op->ors_attrsonly = 0;
|
op->ors_attrsonly = 0;
|
||||||
op->ors_filter = str2filter_x( op, si->si_filterstr.bv_val );
|
op->ors_filter = filter_dup( si->si_filter, op->o_tmpmemctx );
|
||||||
/* In multimaster, updates can continue to arrive while
|
/* In multimaster, updates can continue to arrive while
|
||||||
* we're searching. Limit the search result to entries
|
* we're searching. Limit the search result to entries
|
||||||
* older than our newest cookie CSN.
|
* older than our newest cookie CSN.
|
||||||
@ -3760,6 +3761,9 @@ syncinfo_free( syncinfo_t *sie, int free_all )
|
|||||||
if ( sie->si_filterstr.bv_val ) {
|
if ( sie->si_filterstr.bv_val ) {
|
||||||
ch_free( sie->si_filterstr.bv_val );
|
ch_free( sie->si_filterstr.bv_val );
|
||||||
}
|
}
|
||||||
|
if ( sie->si_filter ) {
|
||||||
|
filter_free( sie->si_filter );
|
||||||
|
}
|
||||||
if ( sie->si_logfilterstr.bv_val ) {
|
if ( sie->si_logfilterstr.bv_val ) {
|
||||||
ch_free( sie->si_logfilterstr.bv_val );
|
ch_free( sie->si_logfilterstr.bv_val );
|
||||||
}
|
}
|
||||||
@ -4372,6 +4376,13 @@ parse_syncrepl_line(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
si->si_filter = str2filter( si->si_filterstr.bv_val );
|
||||||
|
if ( si->si_filter == NULL ) {
|
||||||
|
Debug( LDAP_DEBUG_ANY, "syncrepl %s " SEARCHBASESTR "=\"%s\": unable to parse filter=\"%s\"\n",
|
||||||
|
si->si_ridtxt, c->be->be_suffix ? c->be->be_suffix[ 0 ].bv_val : "(null)", si->si_filterstr.bv_val );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user