--- /dev/null
+*** sequence/sequence.c.orig 27 Sep 2006 14:56:17 -0000 12.39
+--- sequence/sequence.c 26 Oct 2006 07:36:05 -0000
+***************
+*** 228,233 ****
+--- 228,236 ----
+ seq->seq_data.ulen = seq->seq_data.size = sizeof(seq->seq_record);
+ seq->seq_rp = &seq->seq_record;
+
++ if ((ret = __dbt_usercopy(dbenv, keyp)) != 0)
++ goto err;
++
+ memset(&seq->seq_key, 0, sizeof(DBT));
+ if ((ret = __os_malloc(dbenv, keyp->size, &seq->seq_key.data)) != 0)
+ goto err;
+***************
+*** 365,370 ****
+--- 368,374 ----
+ ret = t_ret;
+
+ ENV_LEAVE(dbenv, ip);
++ __dbt_userfree(dbenv, keyp, NULL, NULL);
+ return (ret);
+ }
+
+***************
+*** 764,769 ****
+--- 768,777 ----
+ DBT *key;
+ {
+ SEQ_ILLEGAL_BEFORE_OPEN(seq, "DB_SEQUENCE->get_key");
++
++ if (F_ISSET(key, DB_DBT_USERCOPY))
++ return (__db_retcopy(seq->seq_dbp->dbenv, key,
++ seq->seq_key.data, seq->seq_key.size, NULL, 0));
+
+ key->data = seq->seq_key.data;
+ key->size = key->ulen = seq->seq_key.size;
--- /dev/null
+*** 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);
+ }
+