]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/acl.c
Fixup bdb_entry_release now that entry_decode uses two memory blocks
[openldap] / servers / slapd / acl.c
index f2b9d36caea25afa3e796c54188126b519a4cb13..7c8a3a0a953b2e1d15fc6ab28e941a4d2fb021f7 100644 (file)
@@ -352,7 +352,7 @@ acl_get(
                                        if ( dnlen <= patlen )
                                                continue;
 
-                                       if ( e->e_ndn[dnlen - patlen - 1] != ',' )
+                                       if ( !DN_SEPARATOR( e->e_ndn[dnlen - patlen - 1] ) || DN_ESCAPE( e->e_ndn[dnlen - patlen - 2] ) )
                                                continue;
 
                                        rdn = dn_rdn( NULL, e->e_ndn );
@@ -364,13 +364,13 @@ acl_get(
                                                continue;
 
                                } else if ( a->acl_dn_style == ACL_STYLE_SUBTREE ) {
-                                       if ( dnlen > patlen && e->e_ndn[dnlen - patlen - 1] != ',' )
+                                       if ( dnlen > patlen && ( !DN_SEPARATOR( e->e_ndn[dnlen - patlen - 1] ) || DN_ESCAPE( e->e_ndn[dnlen - patlen - 2] ) ) )
                                                continue;
 
                                } else if ( a->acl_dn_style == ACL_STYLE_CHILDREN ) {
                                        if ( dnlen <= patlen )
                                                continue;
-                                       if ( e->e_ndn[dnlen - patlen - 1] != ',' )
+                                       if ( !DN_SEPARATOR( e->e_ndn[dnlen - patlen - 1] ) || DN_ESCAPE( e->e_ndn[dnlen - patlen - 2] ) )
                                                continue;
                                }
 
@@ -559,7 +559,7 @@ acl_mask(
                                        if ( odnlen <= patlen )
                                                continue;
 
-                                       if ( op->o_ndn[odnlen - patlen - 1] != ',' )
+                                       if ( !DN_SEPARATOR( op->o_ndn[odnlen - patlen - 1] ) || DN_ESCAPE( op->o_ndn[odnlen - patlen - 2] ) )
                                                continue;
 
                                        rdn = dn_rdn( NULL, op->o_ndn );
@@ -571,13 +571,13 @@ acl_mask(
                                                continue;
 
                                } else if ( b->a_dn_style == ACL_STYLE_SUBTREE ) {
-                                       if ( odnlen > patlen && op->o_ndn[odnlen - patlen - 1] != ',' )
+                                       if ( odnlen > patlen && ( !DN_SEPARATOR( op->o_ndn[odnlen - patlen - 1] ) || DN_ESCAPE( op->o_ndn[odnlen - patlen - 2] ) ) )
                                                continue;
 
                                } else if ( b->a_dn_style == ACL_STYLE_CHILDREN ) {
                                        if ( odnlen <= patlen )
                                                continue;
-                                       if ( op->o_ndn[odnlen - patlen - 1] != ',' )
+                                       if ( !DN_SEPARATOR( op->o_ndn[odnlen - patlen - 1] ) || DN_ESCAPE( op->o_ndn[odnlen - patlen - 2] ) )
                                                continue;
                                }