diff --git a/servers/slapd/acl.c b/servers/slapd/acl.c
index a9db8c393bf2c93d035b999bae00c87ff0155e4b..fcb2ffb4375855ac4de3bdbe3b8519846c7cb7cc 100644
--- a/servers/slapd/acl.c
+++ b/servers/slapd/acl.c
@@ -541,17 +541,19 @@ acl_get(
 						continue;
 
 				} else if ( a->acl_dn_style == ACL_STYLE_ONE ) {
-					int	rdnlen = -1,
-						off = patlen > 0 ? 1 : 0;
+					int	rdnlen = -1, sep = 0;
 
 					if ( dnlen <= patlen )
 						continue;
 
-					if ( patlen > 0 && !DN_SEPARATOR( e->e_ndn[dnlen - patlen - 1] ) )
-						continue;
+					if ( patlen > 0 ) {
+						if ( !DN_SEPARATOR( e->e_ndn[dnlen - patlen - 1] ) )
+							continue;
+						sep = 1;
+					}
 
 					rdnlen = dn_rdnlen( NULL, &e->e_nname );
-					if ( rdnlen != dnlen - patlen - off )
+					if ( rdnlen != dnlen - patlen - sep )
 						continue;
 
 				} else if ( a->acl_dn_style == ACL_STYLE_SUBTREE ) {