X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fmodrdn.c;h=60889b7a543cbe6a4b70f9363233a9e7925c42e5;hb=f8fb4aca7668c722f41941be719203aa8c298e12;hp=815da7d4816c424f6a9eb294a5fb2f95b5f8d493;hpb=c4b432cb3f058fec34d1abadd7c7072e7014677e;p=openldap diff --git a/servers/slapd/modrdn.c b/servers/slapd/modrdn.c index 815da7d481..60889b7a54 100644 --- a/servers/slapd/modrdn.c +++ b/servers/slapd/modrdn.c @@ -1,6 +1,6 @@ /* $OpenLDAP$ */ /* - * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. + * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */ /* @@ -83,7 +83,7 @@ do_modrdn( * } */ - if ( ber_scanf( op->o_ber, "{oob", &dn, &newrdn, &deloldrdn ) + if ( ber_scanf( op->o_ber, "{mmb", &dn, &newrdn, &deloldrdn ) == LBER_ERROR ) { #ifdef NEW_LOGGING @@ -120,14 +120,14 @@ do_modrdn( goto cleanup; } - if ( ber_scanf( op->o_ber, "o", &newSuperior ) + if ( ber_scanf( op->o_ber, "m", &newSuperior ) == LBER_ERROR ) { #ifdef NEW_LOGGING LDAP_LOG(( "operation", LDAP_LEVEL_ERR, - "do_modrdn: ber_scanf(\"a\") failed\n" )); + "do_modrdn: ber_scanf(\"m\") failed\n" )); #else - Debug( LDAP_DEBUG_ANY, "ber_scanf(\"a\") failed\n", + Debug( LDAP_DEBUG_ANY, "ber_scanf(\"m\") failed\n", 0, 0, 0 ); #endif @@ -281,13 +281,13 @@ do_modrdn( * if we don't hold it. */ if ( (be = select_backend( &ndn, manageDSAit, 0 )) == NULL ) { - struct berval **ref = referral_rewrite( default_referral, + BVarray ref = referral_rewrite( default_referral, NULL, &pdn, LDAP_SCOPE_DEFAULT ); send_ldap_result( conn, op, rc = LDAP_REFERRAL, NULL, NULL, ref ? ref : default_referral, NULL ); - ber_bvecfree( ref ); + bvarray_free( ref ); goto cleanup; } @@ -357,15 +357,15 @@ do_modrdn( } #ifndef SLAPD_MULTIMASTER } else { - struct berval **defref = be->be_update_refs + BVarray defref = be->be_update_refs ? be->be_update_refs : default_referral; - struct berval **ref = referral_rewrite( defref, + BVarray ref = referral_rewrite( defref, NULL, &pdn, LDAP_SCOPE_DEFAULT ); send_ldap_result( conn, op, rc = LDAP_REFERRAL, NULL, NULL, ref ? ref : defref, NULL ); - ber_bvecfree( ref ); + bvarray_free( ref ); #endif } } else { @@ -375,17 +375,14 @@ do_modrdn( } cleanup: - free( dn.bv_val ); free( pdn.bv_val ); free( ndn.bv_val ); - free( newrdn.bv_val ); free( pnewrdn.bv_val ); free( nnewrdn.bv_val ); - free( newSuperior.bv_val ); - free( pnewSuperior.bv_val ); - free( nnewSuperior.bv_val ); + if ( pnewSuperior.bv_val ) free( pnewSuperior.bv_val ); + if ( nnewSuperior.bv_val ) free( nnewSuperior.bv_val ); return rc; }