]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9929 preserve e_name for memberOf values
authorHoward Chu <hyc@openldap.org>
Mon, 14 Nov 2022 17:48:24 +0000 (17:48 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Mon, 5 Dec 2022 16:32:40 +0000 (16:32 +0000)
servers/slapd/overlays/dynlist.c
tests/data/dynlist.out

index 367b3baf8077e52c6956390e6047db33f8c0e554..0743cf1d05e25356e497c028fa664d783f171c8e 100644 (file)
@@ -369,6 +369,7 @@ done:;
 }
 
 typedef struct dynlist_name_t {
+       struct berval dy_nname;
        struct berval dy_name;
        dynlist_info_t *dy_dli;
        dynlist_map_t *dy_dlm;
@@ -432,10 +433,10 @@ dynlist_nested_memberOf( Entry *e, AttributeDescription *ad, TAvlnode *sups )
                        if ( attr_valfind( a, SLAP_MR_EQUALITY | SLAP_MR_VALUE_OF_ASSERTION_SYNTAX |
                                SLAP_MR_ASSERTED_VALUE_NORMALIZED_MATCH |
                                SLAP_MR_ATTRIBUTE_VALUE_NORMALIZED_MATCH,
-                               &dyn->dy_name, &slot, NULL ) == LDAP_SUCCESS )
+                               &dyn->dy_nname, &slot, NULL ) == LDAP_SUCCESS )
                                continue;
                }
-               attr_merge_one( e, ad, &dyn->dy_name, &dyn->dy_name );
+               attr_merge_one( e, ad, &dyn->dy_name, &dyn->dy_nname );
                if ( !a )
                        a = attr_find( e->e_attrs, ad );
                if ( dyn->dy_sups )
@@ -494,7 +495,7 @@ dynlist_nested_member( Operation *op, dynlist_member_t *dm, TAvlnode *subs )
                dyn = ptr->avl_data;
                if ( ldap_tavl_insert( &dm->dm_groups, dyn, dynlist_ptr_cmp, ldap_avl_dup_error ))
                        continue;
-               if ( overlay_entry_get_ov( op, &dyn->dy_name, NULL, NULL, 0, &ne, on ) != LDAP_SUCCESS || ne == NULL )
+               if ( overlay_entry_get_ov( op, &dyn->dy_nname, NULL, NULL, 0, &ne, on ) != LDAP_SUCCESS || ne == NULL )
                        continue;
                b = attr_find( ne->e_attrs, dm->dm_ad );
                if ( b ) {
@@ -1097,9 +1098,9 @@ dynlist_avl_cmp( const void *c1, const void *c2 )
        int rc;
        n1 = c1; n2 = c2;
 
-       rc = n1->dy_name.bv_len - n2->dy_name.bv_len;
+       rc = n1->dy_nname.bv_len - n2->dy_nname.bv_len;
        if ( rc ) return rc;
-       return ber_bvcmp( &n1->dy_name, &n2->dy_name );
+       return ber_bvcmp( &n1->dy_nname, &n2->dy_nname );
 }
 
 /* build a list of dynamic entries */
@@ -1130,11 +1131,14 @@ dynlist_search1resp( Operation *op, SlapReply *rs )
                        else
                                len = 0;
 
-                       dyn = ch_calloc(1, sizeof(dynlist_name_t)+rs->sr_entry->e_nname.bv_len + 1 + len);
+                       dyn = ch_calloc(1, sizeof(dynlist_name_t)+rs->sr_entry->e_nname.bv_len + 1 +
+                               rs->sr_entry->e_name.bv_len + 1 + len);
                        dyn->dy_name.bv_val = ((char *)(dyn+1)) + len;
+                       dyn->dy_name.bv_len = rs->sr_entry->e_name.bv_len;
+                       dyn->dy_nname.bv_val = dyn->dy_name.bv_val + dyn->dy_name.bv_len + 1;
+                       dyn->dy_nname.bv_len = rs->sr_entry->e_nname.bv_len;
                        dyn->dy_dli = ds->ds_dli;
                        dyn->dy_dlm = ds->ds_dlm;
-                       dyn->dy_name.bv_len = rs->sr_entry->e_nname.bv_len;
                        if ( a ) {
                                Filter *f;
                                /* parse and validate the URIs */
@@ -1172,7 +1176,8 @@ dynlist_search1resp( Operation *op, SlapReply *rs )
                                }
                        }
                        dyn->dy_numuris = j;
-                       memcpy(dyn->dy_name.bv_val, rs->sr_entry->e_nname.bv_val, rs->sr_entry->e_nname.bv_len );
+                       memcpy(dyn->dy_name.bv_val, rs->sr_entry->e_name.bv_val, rs->sr_entry->e_name.bv_len );
+                       memcpy(dyn->dy_nname.bv_val, rs->sr_entry->e_nname.bv_val, rs->sr_entry->e_nname.bv_len );
                        if ( b )
                                dyn->dy_staticmember = ds->ds_dlm->dlm_member_ad;
 
@@ -1329,7 +1334,7 @@ dynlist_filter_group( Operation *op, dynlist_name_t *dyn, Filter *n, dynlist_sea
        if ( ldap_tavl_insert( &ds->ds_fnodes, dyn, dynlist_ptr_cmp, ldap_avl_dup_error ))
                return 0;
 
-       if ( overlay_entry_get_ov( op, &dyn->dy_name, NULL, NULL, 0, &e, on ) !=
+       if ( overlay_entry_get_ov( op, &dyn->dy_nname, NULL, NULL, 0, &e, on ) !=
                LDAP_SUCCESS || e == NULL ) {
                return -1;
        }
@@ -1540,7 +1545,7 @@ dynlist_test_membership(Operation *op, dynlist_name_t *dyn, Entry *e)
 {
        if ( dyn->dy_staticmember ) {
                Entry *grp;
-               if ( overlay_entry_get_ov( op, &dyn->dy_name, NULL, NULL, 0, &grp, (slap_overinst *)op->o_bd->bd_info ) == LDAP_SUCCESS && grp ) {
+               if ( overlay_entry_get_ov( op, &dyn->dy_nname, NULL, NULL, 0, &grp, (slap_overinst *)op->o_bd->bd_info ) == LDAP_SUCCESS && grp ) {
                        Attribute *a = attr_find( grp->e_attrs, dyn->dy_staticmember );
                        int rc;
                        if ( a ) {
@@ -1584,11 +1589,11 @@ dynlist_add_memberOf(Operation *op, SlapReply *rs, dynlist_search_t *ds)
                                                if ( attr_valfind( a, SLAP_MR_EQUALITY | SLAP_MR_VALUE_OF_ASSERTION_SYNTAX |
                                                        SLAP_MR_ASSERTED_VALUE_NORMALIZED_MATCH |
                                                        SLAP_MR_ATTRIBUTE_VALUE_NORMALIZED_MATCH,
-                                                       &dyn->dy_name, &slot, NULL ) != LDAP_SUCCESS )
+                                                       &dyn->dy_nname, &slot, NULL ) != LDAP_SUCCESS )
                                                        a = NULL;
                                        }
                                        if ( !a )
-                                               attr_merge_one( e, dlm->dlm_memberOf_ad, &dyn->dy_name, &dyn->dy_name );
+                                               attr_merge_one( e, dlm->dlm_memberOf_ad, &dyn->dy_name, &dyn->dy_nname );
                                        if ( dyn->dy_sups ) {
                                                dynlist_nested_memberOf( e, dlm->dlm_memberOf_ad, dyn->dy_sups );
                                        }
@@ -1678,11 +1683,11 @@ dynlist_search2resp( Operation *op, SlapReply *rs )
                        if ( dyn->dy_seen )
                                goto next;
                        dyn->dy_seen = 1;
-                       if ( !dnIsSuffixScope( &dyn->dy_name, &op->o_req_ndn, op->ors_scope ))
+                       if ( !dnIsSuffixScope( &dyn->dy_nname, &op->o_req_ndn, op->ors_scope ))
                                goto next;
                        /* can only pre-check if this is a dyngroup, otherwise just build the entry */
                        if ( dyn->dy_dli->dli_dlm && !dyn->dy_dli->dli_dlm->dlm_next &&
-                               !dyn->dy_dlm->dlm_mapped_ad ) {
+                               dyn->dy_dlm && !dyn->dy_dlm->dlm_mapped_ad ) {
                                if ( !dlm ) {
                                        AttributeDescription *ad;
                                        int i;
@@ -1706,7 +1711,7 @@ dynlist_search2resp( Operation *op, SlapReply *rs )
                                if ( !dyn->dy_sups && !dyn->dy_subs && ndf && !dynmember( dyn, f, ndf, df ))
                                        goto next;
                        }
-                       if ( overlay_entry_get_ov( op, &dyn->dy_name, NULL, NULL, 0, &r.sr_entry, on ) != LDAP_SUCCESS ||
+                       if ( overlay_entry_get_ov( op, &dyn->dy_nname, NULL, NULL, 0, &r.sr_entry, on ) != LDAP_SUCCESS ||
                                r.sr_entry == NULL )
                                goto next;
                        r.sr_flags = REP_ENTRY_MUSTRELEASE;
@@ -1809,7 +1814,7 @@ dynlist_nestlink( Operation *op, dynlist_search_t *ds )
                ptr = ldap_tavl_next( ptr, TAVL_DIR_RIGHT )) {
                di = ptr->avl_data;
                if ( ds->ds_dlm ) {
-                       if ( overlay_entry_get_ov( op, &di->dy_name, NULL, NULL, 0, &e, on ) != LDAP_SUCCESS || e == NULL )
+                       if ( overlay_entry_get_ov( op, &di->dy_nname, NULL, NULL, 0, &e, on ) != LDAP_SUCCESS || e == NULL )
                                continue;
                        a = attr_find( e->e_attrs, ds->ds_dlm->dlm_member_ad );
                        if ( a ) {
index 6402366258439471bb2eccdfc39b5e6678e8968b..ddfb0506d00f8d380d2e3f74a44d3a1d509c3fc2 100644 (file)
@@ -344,7 +344,7 @@ mail: melliot@mail.alumni.example.com
 pager: +1 313 555 7671
 facsimileTelephoneNumber: +1 313 555 7762
 telephoneNumber: +1 313 555 4177
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 # Testing filtered memberOf functionality...
 dn: cn=Mark Elliot,ou=Alumni Association,ou=People,dc=example,dc=com
@@ -363,7 +363,7 @@ mail: melliot@mail.alumni.example.com
 pager: +1 313 555 7671
 facsimileTelephoneNumber: +1 313 555 7762
 telephoneNumber: +1 313 555 4177
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 # Testing filtered member functionality...
 dn: cn=All Staff,ou=Groups,dc=example,dc=com
@@ -441,9 +441,9 @@ mail: melliot@mail.alumni.example.com
 pager: +1 313 555 7671
 facsimileTelephoneNumber: +1 313 555 7762
 telephoneNumber: +1 313 555 4177
-memberOf: cn=all staff,ou=groups,dc=example,dc=com
-memberOf: cn=alumni assoc staff,ou=groups,dc=example,dc=com
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=All Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=Alumni Assoc Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 # Testing static group member compare...
 TRUE
@@ -500,7 +500,7 @@ cn: The Smiths
 memberURL: ldap:///ou=People,dc=example,dc=com??sub?(sn=Smith)
 description: Smith family
 member: cn=Jennifer Smith,ou=Alumni Association,ou=People,dc=example,dc=com
-memberOf: cn=meta group,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=Meta Group,ou=Dynamic Lists,dc=example,dc=com
 
 dn: cn=Mark Elliot,ou=Alumni Association,ou=People,dc=example,dc=com
 objectClass: OpenLDAPperson
@@ -518,7 +518,7 @@ mail: melliot@mail.alumni.example.com
 pager: +1 313 555 7671
 facsimileTelephoneNumber: +1 313 555 7762
 telephoneNumber: +1 313 555 4177
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 # Testing nested static group functionality...
 dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,dc=example,
@@ -541,10 +541,10 @@ homePhone: +1 313 555 2333
 pager: +1 313 555 3233
 facsimileTelephoneNumber: +1 313 555 2274
 telephoneNumber: +1 313 555 9022
-memberOf: cn=all staff,ou=groups,dc=example,dc=com
-memberOf: cn=the jensens,ou=groups,dc=example,dc=com
-memberOf: cn=jjs,ou=groups,dc=example,dc=com
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=All Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=The Jensens,ou=Groups,dc=example,dc=com
+memberOf: cn=JJs,ou=Groups,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc
  =com
@@ -554,7 +554,7 @@ cn: Biiff Jensen
 sn: Jensen
 uid: bjorn
 seeAlso: cn=All Staff,ou=Groups,dc=example,dc=com
-seeAlso: cn=itd staff,ou=groups,dc=example,dc=com
+seeAlso: cn=ITD Staff,ou=Groups,dc=example,dc=com
 userPassword:: Ympvcm4=
 homePostalAddress: 19923 Seven Mile Rd. $ South Lyon, MI 49999
 drink: Iced Tea
@@ -566,10 +566,10 @@ homePhone: +1 313 555 5444
 pager: +1 313 555 4474
 facsimileTelephoneNumber: +1 313 555 2177
 telephoneNumber: +1 313 555 0355
-memberOf: cn=all staff,ou=groups,dc=example,dc=com
-memberOf: cn=the jensens,ou=groups,dc=example,dc=com
-memberOf: cn=jjs,ou=groups,dc=example,dc=com
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=All Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=The Jensens,ou=Groups,dc=example,dc=com
+memberOf: cn=JJs,ou=Groups,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,dc=example,dc=com
 objectClass: OpenLDAPperson
@@ -585,10 +585,10 @@ homePhone: +1 313 555 8421
 pager: +1 313 555 2844
 facsimileTelephoneNumber: +1 313 555 9700
 telephoneNumber: +1 313 555 5331
-memberOf: cn=all staff,ou=groups,dc=example,dc=com
-memberOf: cn=bonus group,ou=groups,dc=example,dc=com
-memberOf: cn=alumni assoc staff,ou=groups,dc=example,dc=com
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=All Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=Bonus Group,ou=Groups,dc=example,dc=com
+memberOf: cn=Alumni Assoc Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 dn: cn=James A Jones 2,ou=Information Technology Division,ou=People,dc=example
  ,dc=com
@@ -599,7 +599,7 @@ cn: Jim Jones
 sn: Doe
 uid: jjones
 seeAlso: cn=All Staff,ou=Groups,dc=example,dc=com
-seeAlso: cn=itd staff,ou=groups,dc=example,dc=com
+seeAlso: cn=ITD Staff,ou=Groups,dc=example,dc=com
 homePostalAddress: 933 Brooks $ Anytown, MI 48104
 homePhone: +1 313 555 8838
 title: Senior Manager, Information Technology Division
@@ -609,9 +609,9 @@ postalAddress: Info Tech Division $ 535 W William $ Anytown, MI 48103
 pager: +1 313 555 2833
 facsimileTelephoneNumber: +1 313 555 8688
 telephoneNumber: +1 313 555 7334
-memberOf: cn=jjs,ou=groups,dc=example,dc=com
-memberOf: cn=all staff,ou=groups,dc=example,dc=com
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=JJs,ou=Groups,dc=example,dc=com
+memberOf: cn=All Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 dn: cn=Jane Doe,ou=Alumni Association,ou=People,dc=example,dc=com
 objectClass: OpenLDAPperson
@@ -630,9 +630,9 @@ homePhone: +1 313 555 5445
 pager: +1 313 555 1220
 facsimileTelephoneNumber: +1 313 555 2311
 telephoneNumber: +1 313 555 4774
-memberOf: cn=all staff,ou=groups,dc=example,dc=com
-memberOf: cn=alumni assoc staff,ou=groups,dc=example,dc=com
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=All Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=Alumni Assoc Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 dn: cn=John Doe,ou=Information Technology Division,ou=People,dc=example,dc=com
 objectClass: OpenLDAPperson
@@ -642,7 +642,7 @@ sn: Doe
 uid: johnd
 postalAddress: ITD $ 535 W. William $ Anytown, MI 48109
 seeAlso: cn=All Staff,ou=Groups,dc=example,dc=com
-seeAlso: cn=itd staff,ou=groups,dc=example,dc=com
+seeAlso: cn=ITD Staff,ou=Groups,dc=example,dc=com
 homePostalAddress: 912 East Bllvd $ Anytown, MI 48104
 title: System Administrator, Information Technology Division
 description: overworked!
@@ -651,8 +651,8 @@ homePhone: +1 313 555 3774
 pager: +1 313 555 6573
 facsimileTelephoneNumber: +1 313 555 4544
 telephoneNumber: +1 313 555 9394
-memberOf: cn=all staff,ou=groups,dc=example,dc=com
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=All Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 dn: cn=Jennifer Smith,ou=Alumni Association,ou=People,dc=example,dc=com
 objectClass: OpenLDAPperson
@@ -670,12 +670,12 @@ homePhone: +1 313 555 2333
 pager: +1 313 555 6442
 facsimileTelephoneNumber: +1 313 555 2756
 telephoneNumber: +1 313 555 8232
-memberOf: cn=all staff,ou=groups,dc=example,dc=com
-memberOf: cn=the smiths,ou=dynamic lists,dc=example,dc=com
-memberOf: cn=meta group,ou=dynamic lists,dc=example,dc=com
-memberOf: cn=bonus group,ou=groups,dc=example,dc=com
-memberOf: cn=alumni assoc staff,ou=groups,dc=example,dc=com
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=All Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=The Smiths,ou=Dynamic Lists,dc=example,dc=com
+memberOf: cn=Meta Group,ou=Dynamic Lists,dc=example,dc=com
+memberOf: cn=Bonus Group,ou=Groups,dc=example,dc=com
+memberOf: cn=Alumni Assoc Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 # Testing filtered nested memberOf functionality...
 dn: cn=Jennifer Smith,ou=Alumni Association,ou=People,dc=example,dc=com
@@ -694,12 +694,12 @@ homePhone: +1 313 555 2333
 pager: +1 313 555 6442
 facsimileTelephoneNumber: +1 313 555 2756
 telephoneNumber: +1 313 555 8232
-memberOf: cn=all staff,ou=groups,dc=example,dc=com
-memberOf: cn=the smiths,ou=dynamic lists,dc=example,dc=com
-memberOf: cn=meta group,ou=dynamic lists,dc=example,dc=com
-memberOf: cn=bonus group,ou=groups,dc=example,dc=com
-memberOf: cn=alumni assoc staff,ou=groups,dc=example,dc=com
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=All Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=The Smiths,ou=Dynamic Lists,dc=example,dc=com
+memberOf: cn=Meta Group,ou=Dynamic Lists,dc=example,dc=com
+memberOf: cn=Bonus Group,ou=Groups,dc=example,dc=com
+memberOf: cn=Alumni Assoc Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 dn: cn=Meta Group,ou=Dynamic Lists,dc=example,dc=com
 objectClass: groupOfURLs
@@ -708,7 +708,7 @@ memberURL: ldap:///ou=Dynamic Lists,dc=example,dc=com??sub?(description=Smith%
  20family)
 member: cn=The Smiths,ou=Dynamic Lists,dc=example,dc=com
 member: cn=Jennifer Smith,ou=Alumni Association,ou=People,dc=example,dc=com
-memberOf: cn=bonus group,ou=groups,dc=example,dc=com
+memberOf: cn=Bonus Group,ou=Groups,dc=example,dc=com
 
 dn: cn=The Smiths,ou=Dynamic Lists,dc=example,dc=com
 objectClass: groupOfURLs
@@ -716,8 +716,8 @@ cn: The Smiths
 memberURL: ldap:///ou=People,dc=example,dc=com??sub?(sn=Smith)
 description: Smith family
 member: cn=Jennifer Smith,ou=Alumni Association,ou=People,dc=example,dc=com
-memberOf: cn=meta group,ou=dynamic lists,dc=example,dc=com
-memberOf: cn=bonus group,ou=groups,dc=example,dc=com
+memberOf: cn=Meta Group,ou=Dynamic Lists,dc=example,dc=com
+memberOf: cn=Bonus Group,ou=Groups,dc=example,dc=com
 
 dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,dc=example,dc=com
 objectClass: OpenLDAPperson
@@ -733,10 +733,10 @@ homePhone: +1 313 555 8421
 pager: +1 313 555 2844
 facsimileTelephoneNumber: +1 313 555 9700
 telephoneNumber: +1 313 555 5331
-memberOf: cn=all staff,ou=groups,dc=example,dc=com
-memberOf: cn=bonus group,ou=groups,dc=example,dc=com
-memberOf: cn=alumni assoc staff,ou=groups,dc=example,dc=com
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=All Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=Bonus Group,ou=Groups,dc=example,dc=com
+memberOf: cn=Alumni Assoc Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 dn: cn=James A Jones 2,ou=Information Technology Division,ou=People,dc=example
  ,dc=com
@@ -763,10 +763,10 @@ homePhone: +1 313 555 2333
 pager: +1 313 555 3233
 facsimileTelephoneNumber: +1 313 555 2274
 telephoneNumber: +1 313 555 9022
-memberOf: cn=all staff,ou=groups,dc=example,dc=com
-memberOf: cn=the jensens,ou=groups,dc=example,dc=com
-memberOf: cn=jjs,ou=groups,dc=example,dc=com
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=All Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=The Jensens,ou=Groups,dc=example,dc=com
+memberOf: cn=JJs,ou=Groups,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc
  =com
@@ -776,7 +776,7 @@ cn: Biiff Jensen
 sn: Jensen
 uid: bjorn
 seeAlso: cn=All Staff,ou=Groups,dc=example,dc=com
-seeAlso: cn=itd staff,ou=groups,dc=example,dc=com
+seeAlso: cn=ITD Staff,ou=Groups,dc=example,dc=com
 userPassword:: Ympvcm4=
 homePostalAddress: 19923 Seven Mile Rd. $ South Lyon, MI 49999
 drink: Iced Tea
@@ -788,10 +788,10 @@ homePhone: +1 313 555 5444
 pager: +1 313 555 4474
 facsimileTelephoneNumber: +1 313 555 2177
 telephoneNumber: +1 313 555 0355
-memberOf: cn=all staff,ou=groups,dc=example,dc=com
-memberOf: cn=the jensens,ou=groups,dc=example,dc=com
-memberOf: cn=jjs,ou=groups,dc=example,dc=com
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=All Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=The Jensens,ou=Groups,dc=example,dc=com
+memberOf: cn=JJs,ou=Groups,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 dn: cn=James A Jones 2,ou=Information Technology Division,ou=People,dc=example
  ,dc=com
@@ -802,7 +802,7 @@ cn: Jim Jones
 sn: Doe
 uid: jjones
 seeAlso: cn=All Staff,ou=Groups,dc=example,dc=com
-seeAlso: cn=itd staff,ou=groups,dc=example,dc=com
+seeAlso: cn=ITD Staff,ou=Groups,dc=example,dc=com
 homePostalAddress: 933 Brooks $ Anytown, MI 48104
 homePhone: +1 313 555 8838
 title: Senior Manager, Information Technology Division
@@ -812,9 +812,9 @@ postalAddress: Info Tech Division $ 535 W William $ Anytown, MI 48103
 pager: +1 313 555 2833
 facsimileTelephoneNumber: +1 313 555 8688
 telephoneNumber: +1 313 555 7334
-memberOf: cn=jjs,ou=groups,dc=example,dc=com
-memberOf: cn=all staff,ou=groups,dc=example,dc=com
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=JJs,ou=Groups,dc=example,dc=com
+memberOf: cn=All Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 dn: cn=John Doe,ou=Information Technology Division,ou=People,dc=example,dc=com
 objectClass: OpenLDAPperson
@@ -824,7 +824,7 @@ sn: Doe
 uid: johnd
 postalAddress: ITD $ 535 W. William $ Anytown, MI 48109
 seeAlso: cn=All Staff,ou=Groups,dc=example,dc=com
-seeAlso: cn=itd staff,ou=groups,dc=example,dc=com
+seeAlso: cn=ITD Staff,ou=Groups,dc=example,dc=com
 homePostalAddress: 912 East Bllvd $ Anytown, MI 48104
 title: System Administrator, Information Technology Division
 description: overworked!
@@ -833,8 +833,8 @@ homePhone: +1 313 555 3774
 pager: +1 313 555 6573
 facsimileTelephoneNumber: +1 313 555 4544
 telephoneNumber: +1 313 555 9394
-memberOf: cn=all staff,ou=groups,dc=example,dc=com
-memberOf: cn=dynamic list of members,ou=dynamic lists,dc=example,dc=com
+memberOf: cn=All Staff,ou=Groups,dc=example,dc=com
+memberOf: cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com
 
 # Testing filtered nested member functionality...
 dn: cn=All Staff,ou=Groups,dc=example,dc=com
@@ -910,7 +910,7 @@ memberURL: ldap:///ou=Dynamic Lists,dc=example,dc=com??sub?(description=Smith%
  20family)
 member: cn=The Smiths,ou=Dynamic Lists,dc=example,dc=com
 member: cn=Jennifer Smith,ou=Alumni Association,ou=People,dc=example,dc=com
-memberOf: cn=bonus group,ou=groups,dc=example,dc=com
+memberOf: cn=Bonus Group,ou=Groups,dc=example,dc=com
 
 dn: cn=The Smiths,ou=Dynamic Lists,dc=example,dc=com
 objectClass: groupOfURLs
@@ -918,6 +918,6 @@ cn: The Smiths
 memberURL: ldap:///ou=People,dc=example,dc=com??sub?(sn=Smith)
 description: Smith family
 member: cn=Jennifer Smith,ou=Alumni Association,ou=People,dc=example,dc=com
-memberOf: cn=meta group,ou=dynamic lists,dc=example,dc=com
-memberOf: cn=bonus group,ou=groups,dc=example,dc=com
+memberOf: cn=Meta Group,ou=Dynamic Lists,dc=example,dc=com
+memberOf: cn=Bonus Group,ou=Groups,dc=example,dc=com