diff --git a/servers/slapd/backend.c b/servers/slapd/backend.c
index bbcfdea56ba40ce50902bf30dd6850afb5409e8c..8d3d2cfeadd7213fd841aee284ec9eadb5b26942 100644
--- a/servers/slapd/backend.c
+++ b/servers/slapd/backend.c
@@ -442,12 +442,16 @@ select_backend(
 			len = strlen( backends[i].be_nsuffix[j] );
 
 			if ( len > dnlen ) {
+				/* suffix is longer than DN */
 				continue;
 			}
 
-			if ( strcmp( backends[i].be_nsuffix[j],
-			    dn + (dnlen - len) ) == 0 )
-			{
+			if ( len < dnlen && DN_SEPARATOR( dn[(dnlen-len)-1] ) ) {
+				/* make sure we have a separator */
+				continue;
+			}
+
+			if ( strcmp( backends[i].be_nsuffix[j], &dn[dnlen-len] ) == 0 ) {
 				if( be == NULL ) {
 					be = &backends[i];