]> git.sur5r.net Git - openldap/commitdiff
Fix SEGV when no newSuperior is specified
authorHoward Chu <hyc@openldap.org>
Mon, 24 Dec 2001 20:27:00 +0000 (20:27 +0000)
committerHoward Chu <hyc@openldap.org>
Mon, 24 Dec 2001 20:27:00 +0000 (20:27 +0000)
servers/slapd/modrdn.c

index 62a6078d9a2e15660615553ae47ea7afdcf2d984..4bd0c6d170156a6d02f4a23421d060ef1b4ecfd0 100644 (file)
@@ -382,7 +382,7 @@ do_modrdn(
 #endif
                {
                        if ( (*be->be_modrdn)( be, conn, op, pdn->bv_val, ndn->bv_val,
-                               pnewrdn->bv_val, deloldrdn, pnewSuperior->bv_val ) == 0
+                               pnewrdn->bv_val, deloldrdn, pnewSuperior ? pnewSuperior->bv_val : NULL ) == 0
 #ifdef SLAPD_MULTIMASTER
                                && ( be->be_update_ndn == NULL || !repl_user )
 #endif
@@ -390,7 +390,7 @@ do_modrdn(
                                struct replog_moddn moddn;
                                moddn.newrdn = pnewrdn->bv_val;
                                moddn.deloldrdn = deloldrdn;
-                               moddn.newsup = pnewSuperior->bv_val;
+                               moddn.newsup = pnewSuperior ? pnewSuperior->bv_val : NULL;
 
                                replog( be, op, pdn->bv_val, ndn->bv_val, &moddn );
                        }
@@ -423,8 +423,8 @@ cleanup:
        if( nnewrdn != NULL ) ber_bvfree( nnewrdn );
 
        free( newSuperior.bv_val );
-       if ( pnewSuperior != NULL ) free( pnewSuperior );
-       if ( nnewSuperior != NULL ) free( nnewSuperior );
+       if ( pnewSuperior != NULL ) ber_bvfree( pnewSuperior );
+       if ( nnewSuperior != NULL ) ber_bvfree( nnewSuperior );
 
        return rc;
 }