diff --git a/servers/slapd/add.c b/servers/slapd/add.c index 3b2602f0fc..2e30ea51ae 100644 --- a/servers/slapd/add.c +++ b/servers/slapd/add.c @@ -184,17 +184,18 @@ do_add( Operation *op, SlapReply *rs ) goto done; } + /* after mods2entry succeeds, vals must not be freed here */ + freevals = 0; + /* make sure RDN is present in attrs */ if ( !is_entry_glue ( op->ora_e )) { rs->sr_err = entry_naming_check( op->ora_e, get_relax( op ), 1, &rs->sr_text, textbuf, textlen ); if ( rs->sr_err != LDAP_SUCCESS ) { - freevals = 0; send_ldap_result( op, rs ); goto done; } } - freevals = 0; oex = op->o_tmpalloc( sizeof(OpExtraDB), op->o_tmpmemctx ); oex->oe.oe_key = (void *)do_add; oex->oe_db = NULL;