]> git.sur5r.net Git - openldap/commitdiff
Added mixed-case as well as up-cased DN argument. The behavior of back-bdb2
authorHoward Chu <hyc@openldap.org>
Sat, 18 Sep 1999 23:40:03 +0000 (23:40 +0000)
committerHoward Chu <hyc@openldap.org>
Sat, 18 Sep 1999 23:40:03 +0000 (23:40 +0000)
and back-ldbm are preserved, they only use the up-cased DNs. back-passwd
uses the mixed-case DN. All others are using mixed-case DN, may need more
fixing.

52 files changed:
servers/slapd/add.c
servers/slapd/back-bdb2/bind.c
servers/slapd/back-bdb2/compare.c
servers/slapd/back-bdb2/delete.c
servers/slapd/back-bdb2/external.h
servers/slapd/back-bdb2/modify.c
servers/slapd/back-bdb2/modrdn.c
servers/slapd/back-bdb2/search.c
servers/slapd/back-ldap/bind.c
servers/slapd/back-ldap/compare.c
servers/slapd/back-ldap/delete.c
servers/slapd/back-ldap/external.h
servers/slapd/back-ldap/modify.c
servers/slapd/back-ldap/modrdn.c
servers/slapd/back-ldap/search.c
servers/slapd/back-ldbm/bind.c
servers/slapd/back-ldbm/compare.c
servers/slapd/back-ldbm/delete.c
servers/slapd/back-ldbm/external.h
servers/slapd/back-ldbm/modify.c
servers/slapd/back-ldbm/modrdn.c
servers/slapd/back-ldbm/search.c
servers/slapd/back-passwd/external.h
servers/slapd/back-passwd/search.c
servers/slapd/back-perl/bind.c
servers/slapd/back-perl/compare.c
servers/slapd/back-perl/delete.c
servers/slapd/back-perl/external.h
servers/slapd/back-perl/modify.c
servers/slapd/back-perl/modrdn.c
servers/slapd/back-perl/search.c
servers/slapd/back-shell/bind.c
servers/slapd/back-shell/compare.c
servers/slapd/back-shell/delete.c
servers/slapd/back-shell/external.h
servers/slapd/back-shell/modify.c
servers/slapd/back-shell/modrdn.c
servers/slapd/back-shell/search.c
servers/slapd/back-tcl/external.h
servers/slapd/back-tcl/tcl_bind.c
servers/slapd/back-tcl/tcl_compare.c
servers/slapd/back-tcl/tcl_delete.c
servers/slapd/back-tcl/tcl_modify.c
servers/slapd/back-tcl/tcl_modrdn.c
servers/slapd/back-tcl/tcl_search.c
servers/slapd/bind.c
servers/slapd/compare.c
servers/slapd/delete.c
servers/slapd/modify.c
servers/slapd/modrdn.c
servers/slapd/search.c
servers/slapd/slap.h

index 388ad9d629960ca608cca10e26f7600babd74cc6..eab269a1302ac97b374ee01f8397b1602e97f203 100644 (file)
@@ -67,17 +67,17 @@ do_add( Connection *conn, Operation *op )
                return -1;
        }
 
-       ndn = ch_strdup( dn );
-
-       if ( dn_normalize_case( ndn ) == NULL ) {
+       if ( dn_normalize( dn ) == NULL ) {
                Debug( LDAP_DEBUG_ANY, "do_add: invalid dn (%s)\n", dn, 0, 0 );
                send_ldap_result( conn, op, LDAP_INVALID_DN_SYNTAX, NULL,
                    "invalid DN", NULL, NULL );
                free( dn );
-               free( ndn );
                return LDAP_INVALID_DN_SYNTAX;
        }
 
+       ndn = ch_strdup( dn );
+       ldap_pvt_str2upper( ndn );
+
        e = (Entry *) ch_calloc( 1, sizeof(Entry) );
 
        e->e_dn = dn;
index e022a5533b91d7075457e4f28a2b6b71ce74d1d6..40652e55792cbdf08b6b6c79b211a768ec92c510 100644 (file)
@@ -316,6 +316,7 @@ bdb2_back_bind(
     Connection         *conn,
     Operation          *op,
     char               *dn,
+    char               *ndn,
     int                        method,
        char            *mech,
     struct berval      *cred,
@@ -335,7 +336,7 @@ bdb2_back_bind(
                return( 1 );
        }
 
-       ret = bdb2i_back_bind_internal( be, conn, op, dn, method, mech, cred, edn );
+       ret = bdb2i_back_bind_internal( be, conn, op, ndn, method, mech, cred, edn );
 
        (void) bdb2i_leave_backend_r( lock );
 
index 46093d61a6adbf146a3b73280e6fd401d8bbab31..db0c1177508a32410b9ecc7e35b89698fef4c79a 100644 (file)
@@ -108,6 +108,7 @@ bdb2_back_compare(
     Connection *conn,
     Operation  *op,
     char       *dn,
+    char       *ndn,
     Ava                *ava
 )
 {
@@ -126,7 +127,7 @@ bdb2_back_compare(
 
        }
 
-       ret = bdb2i_back_compare_internal( be, conn, op, dn, ava );
+       ret = bdb2i_back_compare_internal( be, conn, op, ndn, ava );
        (void) bdb2i_leave_backend_r( lock );
        bdb2i_stop_timing( be->bd_info, time1, "CMP", conn, op );
 
index eee7b6d914730e55bc695c5404387373ea953f55..806dbd12fee6d212e77bb41db497b48b50b73491 100644 (file)
@@ -173,7 +173,8 @@ bdb2_back_delete(
     BackendDB  *be,
     Connection *conn,
     Operation  *op,
-    char       *dn
+    char       *dn,
+    char       *ndn
 )
 {
        DB_LOCK         lock;
@@ -189,7 +190,7 @@ bdb2_back_delete(
                return( -1 );
        }
 
-       ret = bdb2i_back_delete_internal( be, conn, op, dn );
+       ret = bdb2i_back_delete_internal( be, conn, op, ndn );
        (void) bdb2i_leave_backend_w( lock );
        bdb2i_stop_timing( be->bd_info, time1, "DEL", conn, op );
 
index 9af5a84ed6430654d68f863d860f758cf1190588..dad989377aa716f4b9281cbe87c955c36f5c7e4d 100644 (file)
@@ -22,35 +22,35 @@ extern int  bdb2_back_db_config LDAP_P(( BackendDB *bd,
 
 extern int bdb2_back_bind LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, int method, char* mech,
+       char *dn, char *ndn, int method, char* mech,
        struct berval *cred, char** edn ));
 
 extern int     bdb2_back_unbind LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op ));
 
 extern int     bdb2_back_search LDAP_P(( BackendDB *bd,
-       Connection *conn, Operation *op,
-       char *base, int scope, int deref, int sizelimit, int timelimit,
+       Connection *conn, Operation *op, char *base,
+       char *nbase, int scope, int deref, int sizelimit, int timelimit,
        Filter *filter, char *filterstr, char **attrs, int attrsonly ));
 
 extern int     bdb2_back_compare LDAP_P((BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, Ava   *ava ));
+       char *dn, char *ndn, Ava        *ava ));
 
 extern int     bdb2_back_modify LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, LDAPModList *ml ));
+       char *dn, char *ndn, LDAPModList *ml ));
 
 extern int     bdb2_back_modrdn LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, char*newrdn, int deleteoldrdn,
+       char *dn, char *ndn, char*newrdn, int deleteoldrdn,
        char *newSuperior ));
 
 extern int     bdb2_back_add LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op, Entry *e ));
 
 extern int     bdb2_back_delete LDAP_P(( BackendDB *bd,
-       Connection *conn, Operation *op, char *dn ));
+       Connection *conn, Operation *op, char *dn, char *ndn ));
 
 extern int     bdb2_back_abandon LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op, int msgid ));
index 817d3ba26f6afe5c9b7e29aca62c5b1ffbf27b65..de632c8df139cf4ef98d543b273a8d91aa2e38d7 100644 (file)
@@ -126,6 +126,7 @@ bdb2_back_modify(
     Connection *conn,
     Operation  *op,
     char       *dn,
+    char       *ndn,
     LDAPModList        *modlist
 )
 {
@@ -153,7 +154,7 @@ bdb2_back_modify(
                        break;
        }
 
-       if ( (e = bdb2i_dn2entry_w( be, dn, &matched )) == NULL ) {
+       if ( (e = bdb2i_dn2entry_w( be, ndn, &matched )) == NULL ) {
                char *matched_dn = NULL;
                struct berval **refs = NULL;
 
@@ -198,7 +199,7 @@ bdb2_back_modify(
                goto done;
        }
 
-       ret = bdb2i_back_modify_internal( be, conn, op, dn, modlist, e );
+       ret = bdb2i_back_modify_internal( be, conn, op, ndn, modlist, e );
        bdb2i_cache_return_entry_w( &li->li_cache, e );
 
 done:
index 47c260fed78aa10dcebfb0cc8ab20be70cd12235..43b49cdb754c4ad9386281a719d962812c2e3012 100644 (file)
@@ -478,6 +478,7 @@ bdb2_back_modrdn(
     Connection *conn,
     Operation  *op,
     char       *dn,
+    char       *ndn,
     char       *newrdn,
     int                deleteoldrdn,
     char       *newSuperior
@@ -497,7 +498,7 @@ bdb2_back_modrdn(
 
        }
 
-       ret = bdb2i_back_modrdn_internal( be, conn, op, dn,
+       ret = bdb2i_back_modrdn_internal( be, conn, op, ndn,
                                        newrdn, deleteoldrdn,
                                        newSuperior );
 
index 4bec697151f942d1d814c59bc87c5a00047e0c94..d40dbd1a4fea4e49252b5650d71d6e67da1ecd73 100644 (file)
@@ -329,6 +329,7 @@ bdb2_back_search(
     Connection *conn,
     Operation  *op,
     char       *base,
+    char       *nbase,
     int                scope,
     int                deref,
     int                slimit,
@@ -353,7 +354,7 @@ bdb2_back_search(
 
        }
 
-       ret = bdb2i_back_search_internal( be, conn, op, base, scope, deref,
+       ret = bdb2i_back_search_internal( be, conn, op, nbase, scope, deref,
                                        slimit, tlimit, filter, filterstr, attrs, attrsonly );
 
        (void) bdb2i_leave_backend_r( lock );
index 45f9df5c1e30d31c5b3ff78a590174fe9bc368e5..263321f4c37ad82ae9d5a654ec7098372ab1fde3 100644 (file)
@@ -38,6 +38,7 @@ ldap_back_bind(
     Connection         *conn,
     Operation          *op,
     char               *dn,
+    char               *ndn,
     int                        method,
        char            *mech,
     struct berval      *cred,
index 206437d4324496a53b58f9c0237cd4cc6789aedb..98b0de3befbfa3d29be01651a52928360aefd6a3 100644 (file)
@@ -38,6 +38,7 @@ ldap_back_compare(
     Connection *conn,
     Operation  *op,
     char       *dn,
+    char       *ndn,
     Ava                *ava
 )
 {
index b5e00cc2bbb8fb31fa75d5cc62edcc0113850f82..b6f84b48ada50b2594368213204d613c3830a0ef 100644 (file)
@@ -37,7 +37,8 @@ ldap_back_delete(
     Backend    *be,
     Connection *conn,
     Operation  *op,
-    char       *dn
+    char       *dn,
+    char       *ndn
 )
 {
        struct ldapinfo *li = (struct ldapinfo *) be->be_private;
index 58b5e77a07112347d195e75369585cf7525eb7d8..7493c816cd11820da216933352bb3fae54c19ac6 100644 (file)
@@ -17,35 +17,35 @@ extern int  ldap_back_db_config LDAP_P(( BackendDB *bd,
 
 extern int ldap_back_bind LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, int method, char* mech,
+       char *dn, char *ndn, int method, char* mech,
        struct berval *cred, char** edn ));
 
 extern int     ldap_back_conn_destroy LDAP_P(( BackendDB *bd,
        Connection *conn ));
 
 extern int     ldap_back_search LDAP_P(( BackendDB *bd,
-       Connection *conn, Operation *op,
-       char *base, int scope, int deref, int sizelimit, int timelimit,
+       Connection *conn, Operation *op, char *base, char *nbase,
+       int scope, int deref, int sizelimit, int timelimit,
        Filter *filter, char *filterstr, char **attrs, int attrsonly ));
 
 extern int     ldap_back_compare LDAP_P((BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, Ava   *ava ));
+       char *dn, char *ndn, Ava        *ava ));
 
 extern int     ldap_back_modify LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, LDAPModList *ml ));
+       char *dn, char *ndn, LDAPModList *ml ));
 
 extern int     ldap_back_modrdn LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, char*newrdn, int deleteoldrdn,
+       char *dn, char *ndn, char*newrdn, int deleteoldrdn,
         char *newSuperior ));
 
 extern int     ldap_back_add LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op, Entry *e ));
 
 extern int     ldap_back_delete LDAP_P(( BackendDB *bd,
-       Connection *conn, Operation *op, char *dn ));
+       Connection *conn, Operation *op, char *dn, char *ndn ));
 
 extern int     ldap_back_abandon LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op, int msgid ));
index c1b7df03376e710b1ba2b7e00cb0c03c8664742d..3245a231fd29b1c80633e8ac985dfefe152445d8 100644 (file)
@@ -38,6 +38,7 @@ ldap_back_modify(
     Connection *conn,
     Operation  *op,
     char       *dn,
+    char       *ndn,
     LDAPModList        *ml
 )
 {
index b2c4cecd3b261fd977f29ceaff3e791dbcfb27db..9e94f2f7d7e70df7b057e2591aba72e29c946694 100644 (file)
@@ -38,6 +38,7 @@ ldap_back_modrdn(
     Connection *conn,
     Operation  *op,
     char       *dn,
+    char       *ndn,
     char       *newrdn,
     int                deleteoldrdn,
     char       *newSuperior
index 8eb4a31f0b3e9ee8a56203a0f8faeac4b2a9a043..9e8619cd47889ab29b763cabf6bb0ead1a31e33f 100644 (file)
@@ -42,6 +42,7 @@ ldap_back_search(
     Connection *conn,
     Operation  *op,
     char       *base,
+    char       *nbase,
     int                scope,
     int                deref,
     int                size,
index 1880a8a8ccb10f147dd00b96a0c13570917a42c5..aa6013372594cd89fcf35f2058738f899af9cdaa 100644 (file)
@@ -69,6 +69,7 @@ ldbm_back_bind(
     Connection         *conn,
     Operation          *op,
     char               *dn,
+    char               *ndn,
     int                        method,
        char            *mech,
     struct berval      *cred,
@@ -88,6 +89,7 @@ ldbm_back_bind(
        Debug(LDAP_DEBUG_ARGS, "==> ldbm_back_bind: dn: %s\n", dn, 0, 0);
 
        *edn = NULL;
+       dn = ndn;
 
        /* get entry with reader lock */
        if ( (e = dn2entry_r( be, dn, &matched )) == NULL ) {
index 96932cecfc49e15e9276daee84c1f2cca3b6e164..75e5695d9dab8bcb23bd93755d536733d1b80074 100644 (file)
@@ -22,6 +22,7 @@ ldbm_back_compare(
     Connection *conn,
     Operation  *op,
     char       *dn,
+    char       *ndn,
     Ava                *ava
 )
 {
@@ -33,7 +34,7 @@ ldbm_back_compare(
        int             manageDSAit = get_manageDSAit( op );
 
        /* get entry with reader lock */
-       if ( (e = dn2entry_r( be, dn, &matched )) == NULL ) {
+       if ( (e = dn2entry_r( be, ndn, &matched )) == NULL ) {
                char *matched_dn = NULL;
                struct berval **refs = NULL;
 
index eb3ed850e2006ca68242d68ec01117f87b3b1be6..19437912faca486fc4bbd07b8dc10cdb98c0ecee 100644 (file)
@@ -21,7 +21,8 @@ ldbm_back_delete(
     Backend    *be,
     Connection *conn,
     Operation  *op,
-    char       *dn
+    char       *dn,
+    char       *ndn
 )
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
@@ -35,7 +36,7 @@ ldbm_back_delete(
        Debug(LDAP_DEBUG_ARGS, "==> ldbm_back_delete: %s\n", dn, 0, 0);
 
        /* get entry with writer lock */
-       if ( (e = dn2entry_w( be, dn, &matched )) == NULL ) {
+       if ( (e = dn2entry_w( be, ndn, &matched )) == NULL ) {
                char *matched_dn = NULL;
                struct berval **refs = NULL;
 
index e1b8696db6dafa39ff88df9f90cf520e14bdfb7a..c8a1b25d5f47939df6eb1df6688c9ac93de763b1 100644 (file)
@@ -24,35 +24,35 @@ extern int  ldbm_back_db_config LDAP_P(( BackendDB *bd,
 
 extern int ldbm_back_bind LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, int method, char* mech,
+       char *dn, char *ndn, int method, char* mech,
        struct berval *cred, char** edn ));
 
 extern int     ldbm_back_unbind LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op ));
 
 extern int     ldbm_back_search LDAP_P(( BackendDB *bd,
-       Connection *conn, Operation *op,
-       char *base, int scope, int deref, int sizelimit, int timelimit,
+       Connection *conn, Operation *op, char *base,
+       char *nbase, int scope, int deref, int sizelimit, int timelimit,
        Filter *filter, char *filterstr, char **attrs, int attrsonly ));
 
 extern int     ldbm_back_compare LDAP_P((BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, Ava   *ava ));
+       char *dn, char *ndn, Ava        *ava ));
 
 extern int     ldbm_back_modify LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, LDAPModList *ml ));
+       char *dn, char *ndn, LDAPModList *ml ));
 
 extern int     ldbm_back_modrdn LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, char* newrdn, int deleteoldrdn,
+       char *dn, char *ndn, char* newrdn, int deleteoldrdn,
        char *newSuperior ));
 
 extern int     ldbm_back_add LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op, Entry *e ));
 
 extern int     ldbm_back_delete LDAP_P(( BackendDB *bd,
-       Connection *conn, Operation *op, char *dn ));
+       Connection *conn, Operation *op, char *dn, char *ndn ));
 
 extern int     ldbm_back_abandon LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op, ber_int_t msgid ));
index 770be8dbc2632057140251b1fa6691b8b19a116b..af69d50bc67bec6b92cc63b77571685b3de327ca 100644 (file)
@@ -168,6 +168,7 @@ ldbm_back_modify(
     Connection *conn,
     Operation  *op,
     char       *dn,
+    char       *ndn,
     LDAPModList        *modlist
 )
 {
@@ -179,7 +180,7 @@ ldbm_back_modify(
        Debug(LDAP_DEBUG_ARGS, "ldbm_back_modify:\n", 0, 0, 0);
 
        /* acquire and lock entry */
-       if ( (e = dn2entry_w( be, dn, &matched )) == NULL ) {
+       if ( (e = dn2entry_w( be, ndn, &matched )) == NULL ) {
                char* matched_dn = NULL;
                struct berval **refs = NULL;
 
@@ -222,7 +223,7 @@ ldbm_back_modify(
        }
        
        /* Modify the entry */
-       if ( ldbm_modify_internal( be, conn, op, dn, modlist, e ) != 0 ) {
+       if ( ldbm_modify_internal( be, conn, op, ndn, modlist, e ) != 0 ) {
                goto error_return;
        }
 
index 08300fbf6834af17cb59a6e134f4b03aa7968352..e1e71b05d4502adcf4f4a7b3a62e4d86e2b38c2c 100644 (file)
@@ -38,6 +38,7 @@ ldbm_back_modrdn(
     Connection *conn,
     Operation  *op,
     char       *dn,
+    char       *ndn,
     char       *newrdn,
     int                deleteoldrdn,
     char       *newSuperior
@@ -74,7 +75,7 @@ ldbm_back_modrdn(
               0, 0 );
 
        /* get entry with writer lock */
-       if ( (e = dn2entry_w( be, dn, &matched )) == NULL ) {
+       if ( (e = dn2entry_w( be, ndn, &matched )) == NULL ) {
                char* matched_dn = NULL;
                struct berval** refs = NULL;
 
index 2858e249610486af8ab6af19568ee75175f87bd5..556653720f39cd913ccd81d18d6aa655e0b32aa7 100644 (file)
@@ -30,6 +30,7 @@ ldbm_back_search(
     Connection *conn,
     Operation  *op,
     char       *base,
+    char       *nbase,
     int                scope,
     int                deref,
     int                slimit,
@@ -57,10 +58,10 @@ ldbm_back_search(
 
        /* get entry with reader lock */
        if ( deref & LDAP_DEREF_FINDING ) {
-               e = deref_dn_r( be, base, &err, &matched, &text );
+               e = deref_dn_r( be, nbase, &err, &matched, &text );
 
        } else {
-               e = dn2entry_r( be, base, &matched );
+               e = dn2entry_r( be, nbase, &matched );
                err = e != NULL ? LDAP_SUCCESS : LDAP_REFERRAL;
                text = NULL;
        }
index 92dd26e95d47fc02292764ee656ed7e8bdf0495b..78cd5af15089505e9946e663e000cb8d383459ea 100644 (file)
@@ -7,8 +7,8 @@ LDAP_BEGIN_DECL
 extern int     passwd_back_initialize LDAP_P(( BackendInfo *bi ));
 
 extern int  passwd_back_search LDAP_P(( BackendDB *be,
-       Connection *c, Operation *o,
-       char *base, int scope, int deref, int slimit, int tlimit,
+       Connection *c, Operation *o, char *base,
+       char *nbase, int scope, int deref, int slimit, int tlimit,
        Filter *f, char *filterstr, char **attrs, int attrsonly));
 
 extern int passwd_back_db_config LDAP_P((BackendDB *bd,
index 68af4b3fa44ed6f670cc83a7c51cbd58e3cb0581..5e86049dc9ac8151d0cbc30194b4ce4dc62b682d 100644 (file)
@@ -27,6 +27,7 @@ passwd_back_search(
     Connection *conn,
     Operation  *op,
     char       *base,
+    char       *nbase,
     int                scope,
     int                deref,
     int                slimit,
@@ -65,7 +66,7 @@ passwd_back_search(
 #endif /* HAVE_SETPWFILE */
 
        /* Handle a query for the base of this backend */
-       if ( be_issuffix( be,  base ) ) {
+       if ( be_issuffix( be,  nbase ) ) {
                struct berval   val, *vals[2];
 
                vals[0] = &val;
@@ -164,8 +165,8 @@ passwd_back_search(
                 */
                if( !be_issuffix( be, parent ) ) {
                        int i;
-                       for( i=0; be->be_suffix[i] != NULL; i++ ) {
-                               if( dn_issuffix( base, be->be_suffix[i] ) ) {
+                       for( i=0; be->be_nsuffix[i] != NULL; i++ ) {
+                               if( dn_issuffix( nbase, be->be_nsuffix[i] ) ) {
                                        matched = ch_strdup( be->be_suffix[i] );
                                        break;
                                }
@@ -185,8 +186,6 @@ passwd_back_search(
                        goto done;
                }
 
-               user = ldap_pvt_str2lower( user );
-
                if ( (pw = getpwnam( user )) == NULL ) {
                        matched = parent;
                        parent = NULL;
index 9d20afd783aa525c05e040271083c3d2d58423bd..23bc12781520543a8085e796086a01bea6a2bb06 100644 (file)
@@ -34,6 +34,7 @@ perl_back_bind(
        Connection *conn,
        Operation *op,
        char *dn,
+       char *ndn,
        int method,
        char            *mech,
        struct berval *cred,
index 4c9f3904ef673d2bf0cb9f0dbbc6c9ca91ae470a..a48d30c7219e95deb25d1f60908f83a14cc74720 100644 (file)
@@ -32,6 +32,7 @@ perl_back_compare(
        Connection      *conn,
        Operation       *op,
        char    *dn,
+       char    *ndn,
        Ava             *ava
 )
 {
index 19d2346f9a7994c56197f324c4bd5680b8474eb1..b0e90b922f01863b2683d03bee85050ccf7b04e2 100644 (file)
@@ -25,7 +25,8 @@ perl_back_delete(
        Backend *be,
        Connection      *conn,
        Operation       *op,
-       char    *dn
+       char    *dn,
+       char    *ndn
 )
 {
        int len;
index d41fb13ea5dc7efdcb8e08f5a5811e9bcad4a8fc..aa9f2430140ef0f6a275ec238dc7e74b39568fcb 100644 (file)
@@ -17,35 +17,35 @@ extern int  perl_back_db_config LDAP_P(( BackendDB *bd,
 
 extern int perl_back_bind LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, int method, char* mech,
+       char *dn, char *ndn, int method, char* mech,
        struct berval *cred, char** edn ));
 
 extern int     perl_back_unbind LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op ));
 
 extern int     perl_back_search LDAP_P(( BackendDB *bd,
-       Connection *conn, Operation *op,
-       char *base, int scope, int deref, int sizelimit, int timelimit,
+       Connection *conn, Operation *op, char *base,
+       char *nbase, int scope, int deref, int sizelimit, int timelimit,
        Filter *filter, char *filterstr, char **attrs, int attrsonly ));
 
 extern int     perl_back_compare LDAP_P((BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, Ava   *ava ));
+       char *dn, char *ndn, Ava        *ava ));
 
 extern int     perl_back_modify LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, LDAPModList *ml ));
+       char *dn, char *ndn, LDAPModList *ml ));
 
 extern int     perl_back_modrdn LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, char*newrdn, int deleteoldrdn,
+       char *dn, char *ndn, char*newrdn, int deleteoldrdn,
        char *newSuperior ));
 
 extern int     perl_back_add LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op, Entry *e ));
 
 extern int     perl_back_delete LDAP_P(( BackendDB *bd,
-       Connection *conn, Operation *op, char *dn ));
+       Connection *conn, Operation *op, char *dn, char *ndn ));
 
 LDAP_END_DECL
 
index 028b42e136a67e6ffcf01d940dc78f8a280712b3..3b52095c21fafbff2efa29031caffd42f4764747 100644 (file)
@@ -27,6 +27,7 @@ perl_back_modify(
        Connection      *conn,
        Operation       *op,
        char    *dn,
+       char    *ndn,
        LDAPModList     *modlist
 )
 {
index d74701418f96dd6bfab5e6c50814a32214791949..18c303702b601a0c7953d887b8e189e53e68997e 100644 (file)
@@ -40,6 +40,7 @@ perl_back_modrdn(
        Connection      *conn,
        Operation       *op,
        char    *dn,
+       char    *ndn,
        char    *newrdn,
        int             deleteoldrdn,
        char    *newSuperior
index 0feb28852dc297920db1192a68c1cdd9b82eebc2..dc1e804464428d7959c1d041a8aba176c781305f 100644 (file)
@@ -32,6 +32,7 @@ perl_back_search(
        Connection *conn,
        Operation *op,
        char *base,
+       char *nbase,
        int scope,
        int deref,
        int sizelimit,
index 44bd6cd5e2ca9ea06f9feb7663deceebd9cd3b49..287098467a98c421f9b6a707602b0bbf2faf6692 100644 (file)
@@ -17,6 +17,7 @@ shell_back_bind(
     Connection         *conn,
     Operation          *op,
     char               *dn,
+    char               *ndn,
     int                        method,
        char            *mech,
     struct berval      *cred,
index 940f213fc5a927a8ff8681a3922344a06753f256..3562427f625c223a0618227bbaf6694430ad379d 100644 (file)
@@ -17,6 +17,7 @@ shell_back_compare(
     Connection *conn,
     Operation  *op,
     char       *dn,
+    char       *ndn,
     Ava                *ava
 )
 {
index 27f67a2c6375de5516df322355675da3c396bcfb..1a240d39ca271e93e4fd2fbd686fa785fa683166 100644 (file)
@@ -16,7 +16,8 @@ shell_back_delete(
     Backend    *be,
     Connection *conn,
     Operation  *op,
-    char       *dn
+    char       *dn,
+    char       *ndn
 )
 {
        struct shellinfo        *si = (struct shellinfo *) be->be_private;
index 64c2dce5bcc5436c7e5ccabe190e4576b49eada1..9c850fb6f2a1eb774a0cc342372975b68550085a 100644 (file)
@@ -17,35 +17,35 @@ extern int  shell_back_db_config LDAP_P(( BackendDB *bd,
 
 extern int shell_back_bind LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, int method, char* mech,
+       char *dn, char *ndn, int method, char* mech,
        struct berval *cred, char** edn ));
 
 extern int     shell_back_unbind LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op ));
 
 extern int     shell_back_search LDAP_P(( BackendDB *bd,
-       Connection *conn, Operation *op,
-       char *base, int scope, int deref, int sizelimit, int timelimit,
+       Connection *conn, Operation *op, char *base,
+       char *nbase, int scope, int deref, int sizelimit, int timelimit,
        Filter *filter, char *filterstr, char **attrs, int attrsonly ));
 
 extern int     shell_back_compare LDAP_P((BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, Ava   *ava ));
+       char *dn, char *ndn, Ava        *ava ));
 
 extern int     shell_back_modify LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, LDAPModList *ml ));
+       char *dn, char *ndn, LDAPModList *ml ));
 
 extern int     shell_back_modrdn LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op,
-       char *dn, char*newrdn, int deleteoldrdn,
+       char *dn, char *ndn, char*newrdn, int deleteoldrdn,
         char *newSuperior ));
 
 extern int     shell_back_add LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op, Entry *e ));
 
 extern int     shell_back_delete LDAP_P(( BackendDB *bd,
-       Connection *conn, Operation *op, char *dn ));
+       Connection *conn, Operation *op, char *dn, char *ndn ));
 
 extern int     shell_back_abandon LDAP_P(( BackendDB *bd,
        Connection *conn, Operation *op, int msgid ));
index 154bd2a6eb5c15cfbcae6d9e26949f6b5030f9a0..5408a096da111d4e24b00f365f267c4fb3893676 100644 (file)
@@ -17,6 +17,7 @@ shell_back_modify(
     Connection *conn,
     Operation  *op,
     char       *dn,
+    char       *ndn,
     LDAPModList        *ml
 )
 {
index 1df37d579c90b5609a418d3b3b513278eda0fc2a..a9c26c4b37ec53c818fbd035f3767e703ae507ab 100644 (file)
@@ -30,6 +30,7 @@ shell_back_modrdn(
     Connection *conn,
     Operation  *op,
     char       *dn,
+    char       *ndn,
     char       *newrdn,
     int                deleteoldrdn,
     char       *newSuperior
index b2b6587719ba9fd30fa4fcebb6d4190d7a6da487..05de6df7af576b44794bd175af205bbf76b0b6ec 100644 (file)
@@ -17,6 +17,7 @@ shell_back_search(
     Connection *conn,
     Operation  *op,
     char       *base,
+    char       *nbase,
     int                scope,
     int                deref,
     int                size,
index ece4c51e62cdd1f1443c3c1a3e6ec99dcdd709ab..ff799627828ee0c8cebafb3ab6342aa1f93fab41 100644 (file)
@@ -20,35 +20,35 @@ extern int tcl_back_db_config LDAP_P ((BackendDB * bd,
 
 extern int tcl_back_bind LDAP_P ((BackendDB * bd,
                Connection * conn, Operation * op,
-               char *dn, int method, char *mech,
+               char *dn, char *ndn, int method, char *mech,
                struct berval * cred, char **edn));
 
 extern int tcl_back_unbind LDAP_P ((BackendDB * bd,
                Connection * conn, Operation * op));
 
 extern int tcl_back_search LDAP_P ((BackendDB * bd,
-               Connection * conn, Operation * op,
-               char *base, int scope, int deref, int sizelimit, int timelimit,
+               Connection * conn, Operation * op, char *base,
+               char *nbase, int scope, int deref, int sizelimit, int timelimit,
                Filter * filter, char *filterstr, char **attrs, int attrsonly));
 
 extern int tcl_back_compare LDAP_P ((BackendDB * bd,
                Connection * conn, Operation * op,
-               char *dn, Ava * ava));
+               char *dn, char *ndn, Ava * ava));
 
 extern int tcl_back_modify LDAP_P ((BackendDB * bd,
                Connection * conn, Operation * op,
-               char *dn, LDAPModList * ml));
+               char *dn, char *ndn, LDAPModList * ml));
 
 extern int tcl_back_modrdn LDAP_P ((BackendDB * bd,
                Connection * conn, Operation * op,
-               char *dn, char *newrdn, int deleteoldrdn,
+               char *dn, char *ndn, char *newrdn, int deleteoldrdn,
                char *newSuperior));
 
 extern int tcl_back_add LDAP_P ((BackendDB * bd,
                Connection * conn, Operation * op, Entry * e));
 
 extern int tcl_back_delete LDAP_P ((BackendDB * bd,
-               Connection * conn, Operation * op, char *dn));
+               Connection * conn, Operation * op, char *dn, char *ndn));
 
 extern int tcl_back_abandon LDAP_P ((BackendDB * bd,
                Connection * conn, Operation * op, int msgid));
index a26da559f9ce7b3e970e63d6b7a35129d77a8d24..7adc9ef01f440aa9a31b9da26a09991bb1be7941 100644 (file)
@@ -22,6 +22,7 @@ tcl_back_bind (
        Connection * conn,
        Operation * op,
        char *dn,
+       char *ndn,
        int method,
        char            *mech,
        struct berval *cred,
index 06d23f54de9549da83ab8e1ee47e768ed90b92a9..7f9ba0ea30bd2a43471f0b829ab59def0b767bce 100644 (file)
@@ -22,6 +22,7 @@ tcl_back_compare (
        Connection * conn,
        Operation * op,
        char *dn,
+       char *ndn,
        Ava * ava
 )
 {
index 53946ec63c7f20e7486e3508c59b5fcf8e4e9744..e55d399044430a42829fd6f34624c1812b56e813 100644 (file)
@@ -20,7 +20,8 @@ tcl_back_delete (
        Backend * be,
        Connection * conn,
        Operation * op,
-       char *dn
+       char *dn,
+       char *ndn
 )
 {
        char *command, *suf_tcl, *results;
index e79bc943d83db4ab06c0bdeea3fdc7340c4092be..44d342ba1d13f9ed567c07b7ecd50a3fd465b64a 100644 (file)
@@ -22,6 +22,7 @@ tcl_back_modify (
        Connection * conn,
        Operation * op,
        char *dn,
+       char *ndn,
        LDAPModList * modlist
 )
 {
index d6aa9fbdf347246dec5006ae9fa4144615aebac7..e3f7299172f6a3bd2c62d54cd9db4138c5649013 100644 (file)
@@ -35,6 +35,7 @@ tcl_back_modrdn (
        Connection * conn,
        Operation * op,
        char *dn,
+       char *ndn,
        char *newrdn,
        int deleteoldrdn,
        char *newSuperior
index a26c4820f7311dde3bffd370b3970e495b16cc55..921c9f9527880ce91b681a23c6785b4ca4dc77d8 100644 (file)
@@ -22,6 +22,7 @@ tcl_back_search (
        Connection * conn,
        Operation * op,
        char *base,
+       char *nbase,
        int scope,
        int deref,
        int sizelimit,
index d42080d70f6954ff0439cfe66af722ece03e648c..a285c0328b301c691668b989e210b27235a15421 100644 (file)
@@ -109,15 +109,16 @@ do_bind(
                goto cleanup;
        }
 
-       ndn = ch_strdup( dn );
-
-       if ( dn_normalize_case( ndn ) == NULL ) {
+       if ( dn_normalize( dn ) == NULL ) {
                Debug( LDAP_DEBUG_ANY, "bind: invalid dn (%s)\n", dn, 0, 0 );
                send_ldap_result( conn, op, rc = LDAP_INVALID_DN_SYNTAX, NULL,
                    "invalid DN", NULL, NULL );
                goto cleanup;
        }
 
+       ndn = ch_strdup( dn );
+       ldap_pvt_str2upper( ndn );
+
        op->o_protocol = version;
 
        if( method != LDAP_AUTH_SASL ) {
@@ -286,7 +287,7 @@ do_bind(
                /* deref suffix alias if appropriate */
                ndn = suffix_alias( be, ndn );
 
-               if ( (*be->be_bind)( be, conn, op, ndn, method, mech, &cred, &edn ) == 0 ) {
+               if ( (*be->be_bind)( be, conn, op, dn, ndn, method, mech, &cred, &edn ) == 0 ) {
                        ldap_pvt_thread_mutex_lock( &conn->c_mutex );
 
                        conn->c_cdn = dn;
index 1176265b413fbca6012f07699e2f82c3d826eab1..0ad02a5b9feb736015ac7804de3b24e2068abbe6 100644 (file)
@@ -29,7 +29,7 @@ do_compare(
     Operation  *op
 )
 {
-       char    *ndn;
+       char    *dn, *ndn;
        Ava     ava;
        Backend *be;
        int rc = LDAP_SUCCESS;
@@ -56,7 +56,7 @@ do_compare(
         *      }
         */
 
-       if ( ber_scanf( op->o_ber, "{a{ao}}", &ndn, &ava.ava_type,
+       if ( ber_scanf( op->o_ber, "{a{ao}}", &dn, &ava.ava_type,
            &ava.ava_value ) == LBER_ERROR ) {
                Debug( LDAP_DEBUG_ANY, "ber_scanf failed\n", 0, 0, 0 );
                send_ldap_disconnect( conn, op,
@@ -64,17 +64,17 @@ do_compare(
                return -1;
        }
 
-       if( dn_normalize_case( ndn ) == NULL ) {
-               Debug( LDAP_DEBUG_ANY, "do_compare: invalid dn (%s)\n", ndn, 0, 0 );
+       if( dn_normalizedn ) == NULL ) {
+               Debug( LDAP_DEBUG_ANY, "do_compare: invalid dn (%s)\n", dn, 0, 0 );
                send_ldap_result( conn, op, rc = LDAP_INVALID_DN_SYNTAX, NULL,
                    "invalid DN", NULL, NULL );
-               free( ndn );
+               free( dn );
                ava_free( &ava, 0 );
                return rc;
        }
 
        if( ( rc = get_ctrls( conn, op, 1 )) != LDAP_SUCCESS ) {
-               free( ndn );
+               free( dn );
                ava_free( &ava, 0 );
                Debug( LDAP_DEBUG_ANY, "do_compare: get_ctrls failed\n", 0, 0, 0 );
                return rc;
@@ -83,10 +83,13 @@ do_compare(
        value_normalize( ava.ava_value.bv_val, attr_syntax( ava.ava_type ) );
 
        Debug( LDAP_DEBUG_ARGS, "do_compare: dn (%s) attr (%s) value (%s)\n",
-           ndn, ava.ava_type, ava.ava_value.bv_val );
+           dn, ava.ava_type, ava.ava_value.bv_val );
 
        Statslog( LDAP_DEBUG_STATS, "conn=%ld op=%d CMP dn=\"%s\" attr=\"%s\"\n",
-           op->o_connid, op->o_opid, ndn, ava.ava_type, 0 );
+           op->o_connid, op->o_opid, dn, ava.ava_type, 0 );
+
+       ndn = ch_strdup( dn );
+       ldap_pvt_str2upper( ndn );
 
        /*
         * We could be serving multiple database backends.  Select the
@@ -94,6 +97,7 @@ do_compare(
         * if we don't hold it.
         */
        if ( (be = select_backend( ndn )) == NULL ) {
+               free( dn );
                free( ndn );
                ava_free( &ava, 0 );
 
@@ -106,12 +110,13 @@ do_compare(
        ndn = suffix_alias( be, ndn );
 
        if ( be->be_compare ) {
-               (*be->be_compare)( be, conn, op, ndn, &ava );
+               (*be->be_compare)( be, conn, op, dn, ndn, &ava );
        } else {
                send_ldap_result( conn, op, rc = LDAP_UNWILLING_TO_PERFORM,
                        NULL, "Function not implemented", NULL, NULL );
        }
 
+       free( dn );
        free( ndn );
        ava_free( &ava, 0 );
 
index 292e1019e4c23b6e5255f156347aaba1411ac620..235a425c0c953c154d1c4dafde4233cfce13749d 100644 (file)
@@ -30,7 +30,7 @@ do_delete(
     Operation  *op
 )
 {
-       char    *ndn;
+       char    *dn, *ndn;
        Backend *be;
        int rc;
 
@@ -50,29 +50,32 @@ do_delete(
         *      DelRequest := DistinguishedName
         */
 
-       if ( ber_scanf( op->o_ber, "a", &ndn ) == LBER_ERROR ) {
+       if ( ber_scanf( op->o_ber, "a", &dn ) == LBER_ERROR ) {
                Debug( LDAP_DEBUG_ANY, "ber_scanf failed\n", 0, 0, 0 );
                send_ldap_disconnect( conn, op,
                        LDAP_PROTOCOL_ERROR, "decoding error" );
                return -1;
        }
 
-       if(     dn_normalize_case( ndn ) == NULL ) {
-               Debug( LDAP_DEBUG_ANY, "do_delete: invalid dn (%s)\n", ndn, 0, 0 );
+       if(     dn_normalizedn ) == NULL ) {
+               Debug( LDAP_DEBUG_ANY, "do_delete: invalid dn (%s)\n", dn, 0, 0 );
                send_ldap_result( conn, op, rc = LDAP_INVALID_DN_SYNTAX, NULL,
                    "invalid DN", NULL, NULL );
-               free( ndn );
+               free( dn );
                return rc;
        }
 
        if( ( rc = get_ctrls( conn, op, 1 ) ) != LDAP_SUCCESS ) {
-               free( ndn );
+               free( dn );
                Debug( LDAP_DEBUG_ANY, "do_add: get_ctrls failed\n", 0, 0, 0 );
                return rc;
        } 
 
-       Debug( LDAP_DEBUG_ARGS, "do_delete: dn (%s)\n", ndn, 0, 0 );
-       Debug( LDAP_DEBUG_STATS, "DEL dn=\"%s\"\n", ndn, 0, 0 );
+       Debug( LDAP_DEBUG_ARGS, "do_delete: dn (%s)\n", dn, 0, 0 );
+       Debug( LDAP_DEBUG_STATS, "DEL dn=\"%s\"\n", dn, 0, 0 );
+
+       ndn = ch_strdup( dn );
+       ldap_pvt_str2upper( ndn );
 
        /*
         * We could be serving multiple database backends.  Select the
@@ -82,6 +85,7 @@ do_delete(
        if ( (be = select_backend( ndn )) == NULL ) {
                send_ldap_result( conn, op, rc = LDAP_REFERRAL,
                        NULL, NULL, default_referral, NULL );
+               free( dn );
                free( ndn );
                return rc;
        }
@@ -89,6 +93,7 @@ do_delete(
        if ( global_readonly || be->be_readonly ) {
                Debug( LDAP_DEBUG_ANY, "do_delete: database is read-only\n",
                       0, 0, 0 );
+               free( dn );
                free( ndn );
                send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
                                  NULL, "database is read-only", NULL, NULL );
@@ -111,13 +116,13 @@ do_delete(
                        strcmp( be->be_update_ndn, op->o_ndn ) == 0 )
 #endif
                {
-                       if ( (*be->be_delete)( be, conn, op, ndn ) == 0 ) {
+                       if ( (*be->be_delete)( be, conn, op, dn, ndn ) == 0 ) {
 #ifdef SLAPD_MULTIMASTER
                                if (be->be_update_ndn == NULL ||
                                        strcmp( be->be_update_ndn, op->o_ndn ))
 #endif
                                {
-                                       replog( be, op, ndn, NULL );
+                                       replog( be, op, dn, NULL );
                                }
                        }
 #ifndef SLAPD_MULTIMASTER
@@ -132,6 +137,7 @@ do_delete(
                        NULL, "Function not implemented", NULL, NULL );
        }
 
+       free( dn );
        free( ndn );
        return rc;
 }
index 8e3521bfac690c7c0d7dcce6f9ee5393085af629..7a61fc1cd63a146dd92a44bbb76090e9cba45cb4 100644 (file)
@@ -35,7 +35,7 @@ do_modify(
     Operation  *op
 )
 {
-       char            *ndn;
+       char            *dn, *ndn;
        char            *last;
        ber_tag_t       tag;
        ber_len_t       len;
@@ -76,20 +76,20 @@ do_modify(
         *      }
         */
 
-       if ( ber_scanf( op->o_ber, "{a" /*}*/, &ndn ) == LBER_ERROR ) {
+       if ( ber_scanf( op->o_ber, "{a" /*}*/, &dn ) == LBER_ERROR ) {
                Debug( LDAP_DEBUG_ANY, "do_modify: ber_scanf failed\n", 0, 0, 0 );
                send_ldap_disconnect( conn, op,
                        LDAP_PROTOCOL_ERROR, "decoding error" );
                return -1;
        }
 
-       Debug( LDAP_DEBUG_ARGS, "do_modify: dn (%s)\n", ndn, 0, 0 );
+       Debug( LDAP_DEBUG_ARGS, "do_modify: dn (%s)\n", dn, 0, 0 );
 
-       if(     dn_normalize_case( ndn ) == NULL ) {
-               Debug( LDAP_DEBUG_ANY, "do_modify: invalid dn (%s)\n", ndn, 0, 0 );
+       if(     dn_normalizedn ) == NULL ) {
+               Debug( LDAP_DEBUG_ANY, "do_modify: invalid dn (%s)\n", dn, 0, 0 );
                send_ldap_result( conn, op, rc = LDAP_INVALID_DN_SYNTAX, NULL,
                    "invalid DN", NULL, NULL );
-               free( ndn );
+               free( dn );
                return rc;
        }
 
@@ -111,7 +111,7 @@ do_modify(
                {
                        send_ldap_disconnect( conn, op,
                                LDAP_PROTOCOL_ERROR, "decoding modlist error" );
-                       free( ndn );
+                       free( dn );
                        free( *modtail );
                        *modtail = NULL;
                        modlist_free( modlist );
@@ -129,7 +129,7 @@ do_modify(
                                (long) (*modtail)->ml_op, 0, 0 );
                        send_ldap_result( conn, op, LDAP_PROTOCOL_ERROR,
                            NULL, "unrecognized modify operation", NULL, NULL );
-                       free( ndn );
+                       free( dn );
                        modlist_free( modlist );
                        return LDAP_PROTOCOL_ERROR;
                }
@@ -144,7 +144,7 @@ do_modify(
                        send_ldap_result( conn, op, LDAP_PROTOCOL_ERROR,
                            NULL, "unrecognized modify operation without values",
                                NULL, NULL );
-                       free( ndn );
+                       free( dn );
                        modlist_free( modlist );
                        return LDAP_PROTOCOL_ERROR;
                }
@@ -165,14 +165,17 @@ do_modify(
 #endif
 
        if( (rc = get_ctrls( conn, op, 1 )) != LDAP_SUCCESS ) {
-               free( ndn );
+               free( dn );
                modlist_free( modlist );
                Debug( LDAP_DEBUG_ANY, "do_modify: get_ctrls failed\n", 0, 0, 0 );
                return rc;
        } 
 
        Statslog( LDAP_DEBUG_STATS, "conn=%ld op=%d MOD dn=\"%s\"\n",
-           op->o_connid, op->o_opid, ndn, 0, 0 );
+           op->o_connid, op->o_opid, dn, 0, 0 );
+
+       ndn = ch_strdup( ndn );
+       ldap_pvt_str2upper( ndn );
 
        /*
         * We could be serving multiple database backends.  Select the
@@ -180,6 +183,7 @@ do_modify(
         * if we don't hold it.
         */
        if ( (be = select_backend( ndn )) == NULL ) {
+               free( dn );
                free( ndn );
                modlist_free( modlist );
                send_ldap_result( conn, op, rc = LDAP_REFERRAL,
@@ -220,6 +224,7 @@ do_modify(
                                rc = add_modified_attrs( op, &modlist );
 
                                if( rc != LDAP_SUCCESS ) {
+                                       free( dn );
                                        free( ndn );
                                        modlist_free( modlist );
                                        send_ldap_result( conn, op, rc,
@@ -229,14 +234,14 @@ do_modify(
                                }
                        }
 
-                       if ( (*be->be_modify)( be, conn, op, ndn, modlist ) == 0 
+                       if ( (*be->be_modify)( be, conn, op, dn, ndn, modlist ) == 0 
 #ifdef SLAPD_MULTIMASTER
                                && ( be->be_update_ndn == NULL ||
                                        strcmp( be->be_update_ndn, op->o_ndn ) != 0 )
 #endif
                        ) {
                                /* but we log only the ones not from a replicator user */
-                               replog( be, op, ndn, modlist );
+                               replog( be, op, dn, modlist );
                        }
 
 #ifndef SLAPD_MULTIMASTER
@@ -253,6 +258,7 @@ do_modify(
        }
 
 done:
+       free( dn );
        free( ndn );
        modlist_free( modlist );
        return rc;
index 14d643545b85dc16f4410783698323ed355f7c83..60441237f48b67aebd0145a5659d381379a6ff00 100644 (file)
@@ -43,7 +43,7 @@ do_modrdn(
     Operation  *op
 )
 {
-       char    *ndn, *newrdn;
+       char    *dn, *ndn, *newrdn;
        ber_int_t       deloldrdn;
        Backend *be;
        /* Vars for LDAP v3 newSuperior support */
@@ -74,7 +74,7 @@ do_modrdn(
         *      }
         */
 
-       if ( ber_scanf( op->o_ber, "{aab", &ndn, &newrdn, &deloldrdn )
+       if ( ber_scanf( op->o_ber, "{aab", &dn, &newrdn, &deloldrdn )
            == LBER_ERROR ) {
                Debug( LDAP_DEBUG_ANY, "ber_scanf failed\n", 0, 0, 0 );
                send_ldap_disconnect( conn, op,
@@ -82,11 +82,11 @@ do_modrdn(
                return -1;
        }
 
-       if( dn_normalize_case( ndn ) == NULL ) {
-               Debug( LDAP_DEBUG_ANY, "do_modrdn: invalid dn (%s)\n", ndn, 0, 0 );
+       if( dn_normalizedn ) == NULL ) {
+               Debug( LDAP_DEBUG_ANY, "do_modrdn: invalid dn (%s)\n", dn, 0, 0 );
                send_ldap_result( conn, op, rc = LDAP_INVALID_DN_SYNTAX, NULL,
                    "invalid DN", NULL, NULL );
-               free( ndn );
+               free( dn );
                free( newrdn );
                return rc;
        }
@@ -95,7 +95,7 @@ do_modrdn(
                Debug( LDAP_DEBUG_ANY, "do_modrdn: invalid rdn (%s)\n", newrdn, 0, 0 );
                send_ldap_result( conn, op, rc = LDAP_INVALID_DN_SYNTAX, NULL,
                    "invalid RDN", NULL, NULL );
-               free( ndn );
+               free( dn );
                free( newrdn );
                return rc;
        }
@@ -112,7 +112,7 @@ do_modrdn(
                               0, 0, 0 );
                        send_ldap_disconnect( conn, op,
                                LDAP_PROTOCOL_ERROR, "newSuperior requires LDAPv3" );
-                       free( ndn );
+                       free( dn );
                        free( newrdn );
                        return -1;
                }
@@ -124,7 +124,7 @@ do_modrdn(
                           0, 0, 0 );
                        send_ldap_disconnect( conn, op,
                                LDAP_PROTOCOL_ERROR, "decoding error" );
-                       free( ndn );
+                       free( dn );
                        free( newrdn );
                    return -1;
                }
@@ -143,11 +143,11 @@ do_modrdn(
 
        Debug( LDAP_DEBUG_ARGS,
            "do_modrdn: dn (%s) newrdn (%s) newsuperior (%s)\n",
-               ndn, newrdn,
+               dn, newrdn,
                newSuperior != NULL ? newSuperior : "" );
 
        if ( ber_scanf( op->o_ber, /*{*/ "}") == LBER_ERROR ) {
-               free( ndn );
+               free( dn );
                free( newrdn ); 
                free( newSuperior );
                free( nnewSuperior );
@@ -164,7 +164,7 @@ do_modrdn(
        } 
 
        Statslog( LDAP_DEBUG_STATS, "conn=%ld op=%d MODRDN dn=\"%s\"\n",
-           op->o_connid, op->o_opid, ndn, 0, 0 );
+           op->o_connid, op->o_opid, dn, 0, 0 );
 
        /*
         * We could be serving multiple database backends.  Select the
@@ -172,7 +172,11 @@ do_modrdn(
         * if we don't hold it.
         */
 
+       ndn = ch_strdup( dn );
+       ldap_pvt_str2upper( ndn );
+
        if ( (be = select_backend( ndn )) == NULL ) {
+               free( dn );
                free( ndn );
                free( newrdn ); 
                free( newSuperior );
@@ -203,6 +207,7 @@ do_modrdn(
                        send_ldap_result( conn, op, rc,
                                NULL, NULL, NULL, NULL );
 
+                       free( dn );
                        free( ndn );
                        free( newrdn );
                        free( newSuperior );
@@ -231,7 +236,7 @@ do_modrdn(
                        strcmp( be->be_update_ndn, op->o_ndn ) == 0 )
 #endif
                {
-                       if ( (*be->be_modrdn)( be, conn, op, ndn, newrdn,
+                       if ( (*be->be_modrdn)( be, conn, op, dn, ndn, newrdn,
                            deloldrdn, newSuperior ) == 0
 #ifdef SLAPD_MULTIMASTER
                                && ( be->be_update_ndn == NULL ||
@@ -243,7 +248,7 @@ do_modrdn(
                                moddn.deloldrdn = deloldrdn;
                                moddn.newsup = newSuperior;
 
-                               replog( be, op, ndn, &moddn );
+                               replog( be, op, dn, &moddn );
                        }
 #ifndef SLAPD_MULTIMASTER
                } else {
@@ -257,6 +262,7 @@ do_modrdn(
        }
 
 done:
+       free( dn );
        free( ndn );
        free( newrdn ); 
        free( newSuperior );
index 32a797d249da8f553f28b729d2562f73f285b5f0..3e28c17ae7df5729b1b66cfefdf0ed985cede3b1 100644 (file)
@@ -30,7 +30,7 @@ do_search(
        int             i, err;
        ber_int_t               scope, deref, attrsonly;
        ber_int_t               sizelimit, timelimit;
-       char            *base = NULL, *fstr = NULL;
+       char            *base = NULL, *nbase = NULL, *fstr = NULL;
        Filter          *filter = NULL;
        char            **attrs = NULL;
        Backend         *be;
@@ -105,7 +105,7 @@ do_search(
                goto return_results;
        }
 
-       if( dn_normalize_case( base ) == NULL ) {
+       if( dn_normalize( base ) == NULL ) {
                send_ldap_result( conn, op, LDAP_INVALID_DN_SYNTAX,
                        NULL, "invalid DN", NULL, NULL );
                rc = -1;
@@ -161,29 +161,32 @@ do_search(
            "conn=%ld op=%d SRCH base=\"%s\" scope=%d filter=\"%s\"\n",
            op->o_connid, op->o_opid, base, scope, fstr );
 
+       nbase = ch_strdup( base );
+       ldap_pvt_str2upper( nbase );
+
        if ( scope == LDAP_SCOPE_BASE ) {
 #if defined( SLAPD_MONITOR_DN )
-               if ( strcmp( base, SLAPD_MONITOR_DN ) == 0 ) {
+               if ( strcmp( nbase, SLAPD_MONITOR_DN ) == 0 ) {
                        monitor_info( conn, op, attrs, attrsonly );
                        goto return_results;
                }
 #endif
 
 #if defined( SLAPD_CONFIG_DN )
-               if ( strcmp( base, SLAPD_CONFIG_DN ) == 0 ) {
+               if ( strcmp( nbase, SLAPD_CONFIG_DN ) == 0 ) {
                        config_info( conn, op, attrs, attrsonly );
                        goto return_results;
                }
 #endif
 
 #if defined( SLAPD_SCHEMA_DN )
-               if ( strcmp( base, SLAPD_SCHEMA_DN ) == 0 ) {
+               if ( strcmp( nbase, SLAPD_SCHEMA_DN ) == 0 ) {
                        schema_info( conn, op, attrs, attrsonly );
                        goto return_results;
                }
 #endif
 
-               if ( strcmp( base, LDAP_ROOT_DSE ) == 0 ) {
+               if ( strcmp( nbase, LDAP_ROOT_DSE ) == 0 ) {
                        root_dse_info( conn, op, attrs, attrsonly );
                        goto return_results;
                }
@@ -194,7 +197,7 @@ do_search(
         * appropriate one, or send a referral to our "referral server"
         * if we don't hold it.
         */
-       if ( (be = select_backend( base )) == NULL ) {
+       if ( (be = select_backend( nbase )) == NULL ) {
                send_ldap_result( conn, op, rc = LDAP_REFERRAL,
                        NULL, NULL, default_referral, NULL );
 
@@ -202,11 +205,11 @@ do_search(
        }
 
        /* deref the base if needed */
-       base = suffix_alias( be, base );
+       nbase = suffix_alias( be, nbase );
 
        /* actually do the search and send the result(s) */
        if ( be->be_search ) {
-               (*be->be_search)( be, conn, op, base, scope, deref, sizelimit,
+               (*be->be_search)( be, conn, op, base, nbase, scope, deref, sizelimit,
                    timelimit, filter, fstr, attrs, attrsonly );
        } else {
                send_ldap_result( conn, op, rc = LDAP_UNWILLING_TO_PERFORM,
@@ -215,6 +218,7 @@ do_search(
 
 return_results:;
        if( base != NULL) free( base );
+       if( nbase != NULL) free( nbase );
        if( fstr != NULL) free( fstr );
        if( filter != NULL) filter_free( filter );
        if ( attrs != NULL ) {
index 7cec633145cf1b596dbef466c2eab059ff09f3ec..304a5090d78182c9b57f9faf9852e97cf288b1b2 100644 (file)
@@ -542,32 +542,32 @@ struct slap_backend_info {
        /* LDAP Operations Handling Routines */
        int     (*bi_op_bind)  LDAP_P(( BackendDB *bd,
                struct slap_conn *c, struct slap_op *o,
-               char *dn, int method, char* mechanism,
+               char *dn, char *ndn, int method, char* mechanism,
                struct berval *cred, char** edn ));
        int (*bi_op_unbind) LDAP_P((BackendDB *bd,
                struct slap_conn *c, struct slap_op *o ));
        int     (*bi_op_search) LDAP_P((BackendDB *bd,
                struct slap_conn *c, struct slap_op *o,
-               char *base, int scope, int deref,
+               char *base, char *nbase, int scope, int deref,
                int slimit, int tlimit,
                Filter *f, char *filterstr, char **attrs,
                int attrsonly));
        int     (*bi_op_compare)LDAP_P((BackendDB *bd,
                struct slap_conn *c, struct slap_op *o,
-               char *dn, Ava *ava));
+               char *dn, char *ndn, Ava *ava));
        int     (*bi_op_modify) LDAP_P((BackendDB *bd,
                struct slap_conn *c, struct slap_op *o,
-               char *dn, LDAPModList *m));
+               char *dn, char *ndn, LDAPModList *m));
        int     (*bi_op_modrdn) LDAP_P((BackendDB *bd,
                struct slap_conn *c, struct slap_op *o,
-               char *dn, char *newrdn, int deleteoldrdn,
+               char *dn, char *ndn, char *newrdn, int deleteoldrdn,
                char *newSuperior));
        int     (*bi_op_add)    LDAP_P((BackendDB *bd,
                struct slap_conn *c, struct slap_op *o,
                Entry *e));
        int     (*bi_op_delete) LDAP_P((BackendDB *bd,
                struct slap_conn *c, struct slap_op *o,
-               char *dn));
+               char *dn, char *ndn));
        int     (*bi_op_abandon) LDAP_P((BackendDB *bd,
                struct slap_conn *c, struct slap_op *o,
                ber_int_t msgid));