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;
|
dynlist_info_t *dli = (dynlist_info_t *)on->on_bi.bi_private;
|
||||||
|
|
||||||
char *ptr;
|
char *ptr;
|
||||||
|
int needBrackets = 0;
|
||||||
|
|
||||||
assert( oldf != NULL );
|
assert( oldf != NULL );
|
||||||
assert( newf != NULL );
|
assert( newf != NULL );
|
||||||
assert( !BER_BVISNULL( oldf ) );
|
assert( !BER_BVISNULL( oldf ) );
|
||||||
assert( !BER_BVISEMPTY( oldf ) );
|
assert( !BER_BVISEMPTY( oldf ) );
|
||||||
|
|
||||||
|
if ( oldf->bv_val[0] != '(' ) {
|
||||||
|
needBrackets = 2;
|
||||||
|
}
|
||||||
|
|
||||||
newf->bv_len = STRLENOF( "(&(!(objectClass=" "))" ")" )
|
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 );
|
newf->bv_val = op->o_tmpalloc( newf->bv_len + 1, op->o_tmpmemctx );
|
||||||
if ( newf->bv_val == NULL ) {
|
if ( newf->bv_val == NULL ) {
|
||||||
return -1;
|
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( newf->bv_val, "(&(!(objectClass=" );
|
||||||
ptr = lutil_strcopy( ptr, dli->dli_oc->soc_cname.bv_val );
|
ptr = lutil_strcopy( ptr, dli->dli_oc->soc_cname.bv_val );
|
||||||
ptr = lutil_strcopy( ptr, "))" );
|
ptr = lutil_strcopy( ptr, "))" );
|
||||||
|
if ( needBrackets ) *ptr++ = '(';
|
||||||
ptr = lutil_strcopy( ptr, oldf->bv_val );
|
ptr = lutil_strcopy( ptr, oldf->bv_val );
|
||||||
|
if ( needBrackets ) *ptr++ = ')';
|
||||||
ptr = lutil_strcopy( ptr, ")" );
|
ptr = lutil_strcopy( ptr, ")" );
|
||||||
newf->bv_len = ptr - newf->bv_val;
|
newf->bv_len = ptr - newf->bv_val;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user