mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
handle simple filters with no brackets (ITS#6421)
This commit is contained in:
parent
525f1cafb8
commit
db852e4378
@ -176,14 +176,19 @@ dynlist_make_filter( Operation *op, struct berval *oldf, struct berval *newf )
|
||||
dynlist_info_t *dli = (dynlist_info_t *)on->on_bi.bi_private;
|
||||
|
||||
char *ptr;
|
||||
int needBrackets = 0;
|
||||
|
||||
assert( oldf != NULL );
|
||||
assert( newf != NULL );
|
||||
assert( !BER_BVISNULL( oldf ) );
|
||||
assert( !BER_BVISEMPTY( oldf ) );
|
||||
|
||||
if ( oldf->bv_val[0] != '(' ) {
|
||||
needBrackets = 2;
|
||||
}
|
||||
|
||||
newf->bv_len = STRLENOF( "(&(!(objectClass=" "))" ")" )
|
||||
+ dli->dli_oc->soc_cname.bv_len + oldf->bv_len;
|
||||
+ dli->dli_oc->soc_cname.bv_len + oldf->bv_len + needBrackets;
|
||||
newf->bv_val = op->o_tmpalloc( newf->bv_len + 1, op->o_tmpmemctx );
|
||||
if ( newf->bv_val == NULL ) {
|
||||
return -1;
|
||||
@ -191,7 +196,9 @@ dynlist_make_filter( Operation *op, struct berval *oldf, struct berval *newf )
|
||||
ptr = lutil_strcopy( newf->bv_val, "(&(!(objectClass=" );
|
||||
ptr = lutil_strcopy( ptr, dli->dli_oc->soc_cname.bv_val );
|
||||
ptr = lutil_strcopy( ptr, "))" );
|
||||
if ( needBrackets ) *ptr++ = '(';
|
||||
ptr = lutil_strcopy( ptr, oldf->bv_val );
|
||||
if ( needBrackets ) *ptr++ = ')';
|
||||
ptr = lutil_strcopy( ptr, ")" );
|
||||
newf->bv_len = ptr - newf->bv_val;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user