From: Pierangelo Masarati Date: Tue, 8 Dec 2009 00:17:25 +0000 (+0000) Subject: handle simple filters with no brackets (ITS#6421) X-Git-Tag: ACLCHECK_0~19 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=db852e43785a2a26c608ed42fda32168fb19a3e7;p=openldap handle simple filters with no brackets (ITS#6421) --- diff --git a/servers/slapd/overlays/dynlist.c b/servers/slapd/overlays/dynlist.c index 97d28d89a2..457a520047 100644 --- a/servers/slapd/overlays/dynlist.c +++ b/servers/slapd/overlays/dynlist.c @@ -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;