]> git.sur5r.net Git - openldap/commitdiff
free values in case of error
authorPierangelo Masarati <ando@openldap.org>
Fri, 4 Nov 2005 01:29:48 +0000 (01:29 +0000)
committerPierangelo Masarati <ando@openldap.org>
Fri, 4 Nov 2005 01:29:48 +0000 (01:29 +0000)
servers/slapd/add.c

index 250da6093a9fa81555c0a336a6ddb54d49f7b499..eb0af1569b42c386ccbf24e5ee6b536084b162a0 100644 (file)
@@ -46,7 +46,7 @@ do_add( Operation *op, SlapReply *rs )
        Modifications   tmp;
        char            textbuf[ SLAP_TEXT_BUFLEN ];
        size_t          textlen = sizeof( textbuf );
-       int             rc = 0;
+       int             rc = 1;
 
        Debug( LDAP_DEBUG_TRACE, "do_add\n", 0, 0, 0 );
        /*
@@ -194,7 +194,14 @@ do_add( Operation *op, SlapReply *rs )
 
 done:;
        if ( modlist != NULL ) {
-               slap_mods_free( modlist, 0 );
+               int     freevals = 0;
+
+               if ( rc != 0 && op->ora_e == NULL ) {
+                       freevals = 1;
+               }
+
+               /* in case of error, free the values as well */
+               slap_mods_free( modlist, freevals );
        }
 
        if ( op->ora_e != NULL ) {