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];