X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Faclparse.c;h=f41c702ca6f9e3efe76ce6fc861fada46f6a4b3f;hb=2ece0ee378a47df99a05a0dd0db3763bdf9bb125;hp=a67c0b9ad825dcd14a2e8165e008b506ab034dc1;hpb=d19419392cdb255db5aa14c6bdf8ff96530bbe6a;p=openldap diff --git a/servers/slapd/aclparse.c b/servers/slapd/aclparse.c index a67c0b9ad8..f41c702ca6 100644 --- a/servers/slapd/aclparse.c +++ b/servers/slapd/aclparse.c @@ -279,7 +279,7 @@ parse_acl( { sty = ACL_STYLE_REGEX; } else if ( strcasecmp( style, "exact" ) == 0 ) { - sty = ACL_STYLE_BASE; + sty = ACL_STYLE_EXACT; } else if ( strcasecmp( style, "base" ) == 0 ) { sty = ACL_STYLE_BASE; } else if ( strcasecmp( style, "one" ) == 0 ) { @@ -607,6 +607,27 @@ parse_acl( continue; } + if ( strcasecmp( left, "set" ) == 0 ) { + if( b->a_set_pat != NULL ) { + fprintf( stderr, + "%s: line %d: set attribute already specified.\n", + fname, lineno ); + acl_usage(); + } + + if ( right == NULL || *right == '\0' ) { + fprintf( stderr, + "%s: line %d: no set is defined\n", + fname, lineno ); + acl_usage(); + } + + b->a_set_style = sty; + b->a_set_pat = ch_strdup(right); + + continue; + } + #ifdef SLAPD_ACI_ENABLED if ( strcasecmp( left, "aci" ) == 0 ) { if( b->a_aci_at != NULL ) {