X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-ldap%2Fmodrdn.c;h=8c7eee586999da39d18882f3c568f6dcee9f1738;hb=08059f1633bfd9d0a709761b026bdb8e4441c6e6;hp=cd130894253dde1328f400555787734f14746602;hpb=e2fdaed3c756735547f7bb77c9055667f35b1071;p=openldap diff --git a/servers/slapd/back-ldap/modrdn.c b/servers/slapd/back-ldap/modrdn.c index cd13089425..8c7eee5869 100644 --- a/servers/slapd/back-ldap/modrdn.c +++ b/servers/slapd/back-ldap/modrdn.c @@ -1,7 +1,7 @@ /* modrdn.c - ldap backend modrdn function */ /* $OpenLDAP$ */ /* - * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved. + * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */ /* This is an altered version */ @@ -62,7 +62,7 @@ ldap_back_modrdn( struct ldapinfo *li = (struct ldapinfo *) be->be_private; struct ldapconn *lc; - char *mdn = NULL, *mnewSuperior = NULL; + struct berval mdn = { 0, NULL }, mnewSuperior = { 0, NULL }; lc = ldap_back_getconn( li, conn, op ); if ( !lc || !ldap_back_dobind(lc, op) ) { @@ -78,20 +78,19 @@ ldap_back_modrdn( */ #ifdef ENABLE_REWRITE switch ( rewrite_session( li->rwinfo, "newSuperiorDn", - newSuperior->bv_val, conn, &mnewSuperior ) ) { + newSuperior->bv_val, conn, &mnewSuperior.bv_val ) ) { case REWRITE_REGEXEC_OK: - if ( mnewSuperior == NULL ) { - mnewSuperior = ( char * )newSuperior; + if ( mnewSuperior.bv_val == NULL ) { + mnewSuperior.bv_val = ( char * )newSuperior; } #ifdef NEW_LOGGING - LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1, - "[rw] newSuperiorDn:" - " \"%s\" -> \"%s\"\n", - newSuperior, mnewSuperior )); + LDAP_LOG( BACK_LDAP, DETAIL1, + "[rw] newSuperiorDn:" " \"%s\" -> \"%s\"\n", + newSuperior, mnewSuperior.bv_val, 0 ); #else /* !NEW_LOGGING */ Debug( LDAP_DEBUG_ARGS, "rw> newSuperiorDn:" " \"%s\" -> \"%s\"\n%s", - newSuperior->bv_val, mnewSuperior, "" ); + newSuperior->bv_val, mnewSuperior.bv_val, "" ); #endif /* !NEW_LOGGING */ break; @@ -102,15 +101,14 @@ ldap_back_modrdn( return( -1 ); case REWRITE_REGEXEC_ERR: - send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR, + send_ldap_result( conn, op, LDAP_OTHER, NULL, "Operations error", NULL, NULL ); return( -1 ); } #else /* !ENABLE_REWRITE */ - mnewSuperior = ldap_back_dn_massage( li, - ch_strdup( newSuperior->bv_val ), 0 ); - if ( mnewSuperior == NULL ) { + ldap_back_dn_massage( li, newSuperior, &mnewSuperior, 0, 1 ); + if ( mnewSuperior.bv_val == NULL ) { return( -1 ); } #endif /* !ENABLE_REWRITE */ @@ -120,17 +118,17 @@ ldap_back_modrdn( /* * Rewrite the modrdn dn, if required */ - switch ( rewrite_session( li->rwinfo, "modrDn", dn->bv_val, conn, &mdn ) ) { + switch ( rewrite_session( li->rwinfo, "modrDn", dn->bv_val, conn, &mdn.bv_val ) ) { case REWRITE_REGEXEC_OK: - if ( mdn == NULL ) { - mdn = ( char * )dn->bv_val; + if ( mdn.bv_val == NULL ) { + mdn.bv_val = ( char * )dn->bv_val; } #ifdef NEW_LOGGING - LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1, - "[rw] modrDn: \"%s\" -> \"%s\"\n", dn->bv_val, mdn )); + LDAP_LOG( BACK_LDAP, DETAIL1, + "[rw] modrDn: \"%s\" -> \"%s\"\n", dn->bv_val, mdn.bv_val, 0 ); #else /* !NEW_LOGGING */ Debug( LDAP_DEBUG_ARGS, "rw> modrDn: \"%s\" -> \"%s\"\n%s", - dn->bv_val, mdn, "" ); + dn->bv_val, mdn.bv_val, "" ); #endif /* !NEW_LOGGING */ break; @@ -140,29 +138,22 @@ ldap_back_modrdn( return( -1 ); case REWRITE_REGEXEC_ERR: - send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR, + send_ldap_result( conn, op, LDAP_OTHER, NULL, "Operations error", NULL, NULL ); return( -1 ); } #else /* !ENABLE_REWRITE */ - mdn = ldap_back_dn_massage( li, ch_strdup( dn->bv_val ), 0 ); + ldap_back_dn_massage( li, dn, &mdn, 0, 1 ); #endif /* !ENABLE_REWRITE */ - ldap_rename2_s( lc->ld, mdn, newrdn->bv_val, mnewSuperior, deleteoldrdn ); + ldap_rename2_s( lc->ld, mdn.bv_val, newrdn->bv_val, mnewSuperior.bv_val, deleteoldrdn ); -#ifdef ENABLE_REWRITE - if ( mdn != dn->bv_val ) { -#endif /* ENABLE_REWRITE */ - free( mdn ); -#ifdef ENABLE_REWRITE + if ( mdn.bv_val != dn->bv_val ) { + free( mdn.bv_val ); } -#endif /* ENABLE_REWRITE */ - if ( mnewSuperior != NULL -#ifdef ENABLE_REWRITE - && mnewSuperior != newSuperior->bv_val -#endif /* ENABLE_REWRITE */ - ) { - free( mnewSuperior ); + if ( mnewSuperior.bv_val != NULL + && mnewSuperior.bv_val != newSuperior->bv_val ) { + free( mnewSuperior.bv_val ); } return( ldap_back_op_result( lc, op ) );