From 31a0c4a917152f63b4218175cca925e08e6d8830 Mon Sep 17 00:00:00 2001
From: Howard Chu <hyc@openldap.org>
Date: Tue, 25 May 1999 21:40:40 +0000
Subject: [PATCH] For ITS#158: keep mixed-case backend suffix in addition to
 upcased suffix.

---
 servers/slapd/backend.c | 12 ++++++------
 servers/slapd/config.c  |  4 +++-
 servers/slapd/slap.h    |  1 +
 3 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/servers/slapd/backend.c b/servers/slapd/backend.c
index cac8270339..2707e2633d 100644
--- a/servers/slapd/backend.c
+++ b/servers/slapd/backend.c
@@ -366,16 +366,16 @@ select_backend( char * dn )
 
 	dnlen = strlen( dn );
 	for ( i = 0; i < nbackends; i++ ) {
-		for ( j = 0; backends[i].be_suffix != NULL &&
-		    backends[i].be_suffix[j] != NULL; j++ )
+		for ( j = 0; backends[i].be_nsuffix != NULL &&
+		    backends[i].be_nsuffix[j] != NULL; j++ )
 		{
-			len = strlen( backends[i].be_suffix[j] );
+			len = strlen( backends[i].be_nsuffix[j] );
 
 			if ( len > dnlen ) {
 				continue;
 			}
 
-			if ( strcmp( backends[i].be_suffix[j],
+			if ( strcmp( backends[i].be_nsuffix[j],
 			    dn + (dnlen - len) ) == 0 ) {
 				return( &backends[i] );
 			}
@@ -427,8 +427,8 @@ be_issuffix(
 {
 	int	i;
 
-	for ( i = 0; be->be_suffix != NULL && be->be_suffix[i] != NULL; i++ ) {
-		if ( strcmp( be->be_suffix[i], suffix ) == 0 ) {
+	for ( i = 0; be->be_nsuffix != NULL && be->be_nsuffix[i] != NULL; i++ ) {
+		if ( strcmp( be->be_nsuffix[i], suffix ) == 0 ) {
 			return( 1 );
 		}
 	}
diff --git a/servers/slapd/config.c b/servers/slapd/config.c
index 100400e9f3..af5f0ee5a5 100644
--- a/servers/slapd/config.c
+++ b/servers/slapd/config.c
@@ -179,8 +179,10 @@ read_config( char *fname )
 				    fname, lineno, 0 );
 			} else {
 				char *dn = ch_strdup( cargv[1] );
-				(void) dn_normalize_case( dn );
+				(void) dn_normalize( dn );
 				charray_add( &be->be_suffix, dn );
+				(void) dn_upcase( dn );
+				charray_add( &be->be_nsuffix, dn );
 				free( dn );
 			}
 
diff --git a/servers/slapd/slap.h b/servers/slapd/slap.h
index 10cd62fabc..7ce8353259 100644
--- a/servers/slapd/slap.h
+++ b/servers/slapd/slap.h
@@ -255,6 +255,7 @@ struct backend_db {
 
 	/* these should be renamed from be_ to bd_ */
 	char	**be_suffix;	/* the DN suffixes of data in this backend */
+	char	**be_nsuffix;	/* the normalized DN suffixes in this backend */
 	char    **be_suffixAlias;       /* the DN suffix aliases of data in this backend */
 	char	*be_root_dn;	/* the magic "root" dn for this db 	*/
 	char	*be_root_ndn;	/* the magic "root" normalized dn for this db	*/
-- 
GitLab