*** rep/rep_method.c.orig Fri Oct 20 08:34:06 2006 --- rep/rep_method.c Fri Oct 27 12:09:04 2006 *************** *** 526,535 **** * will allow the client to either perform recovery or * simply join in. */ ! if (announce) (void)__rep_send_message(dbenv, DB_EID_BROADCAST, REP_NEWCLIENT, NULL, dbt, 0, 0); ! else (void)__rep_send_message(dbenv, DB_EID_BROADCAST, REP_ALIVE_REQ, NULL, NULL, 0, 0); } --- 526,537 ---- * will allow the client to either perform recovery or * simply join in. */ ! if (announce) { ! if ((ret = __dbt_usercopy(dbenv, dbt)) != 0) ! goto err; (void)__rep_send_message(dbenv, DB_EID_BROADCAST, REP_NEWCLIENT, NULL, dbt, 0, 0); ! } else (void)__rep_send_message(dbenv, DB_EID_BROADCAST, REP_ALIVE_REQ, NULL, NULL, 0, 0); } *************** *** 553,558 **** --- 555,561 ---- } if (pending_event != DB_EVENT_NO_SUCH_EVENT) DB_EVENT(dbenv, pending_event, NULL); + __dbt_userfree(dbenv, dbt, NULL, NULL); return (ret); } *** rep/rep_record.c.orig Fri Oct 20 08:34:06 2006 --- rep/rep_record.c Mon Nov 13 10:46:29 2006 *************** *** 163,168 **** --- 163,176 ---- return (EINVAL); } + if ((ret = __dbt_usercopy(dbenv, control)) != 0 || + (ret = __dbt_usercopy(dbenv, rec)) != 0) { + __dbt_userfree(dbenv, control, rec, NULL); + __db_errx(dbenv, + "DB_ENV->rep_process_message: error retrieving DBT contents"); + return ret; + } + ret = 0; db_rep = dbenv->rep_handle; rep = db_rep->region; *************** *** 621,626 **** --- 629,635 ---- *ret_lsnp = rp->lsn; ret = DB_REP_NOTPERM; } + __dbt_userfree(dbenv, control, rec, NULL); return (ret); }