53 lines
1.5 KiB
Diff
53 lines
1.5 KiB
Diff
|
diff -Nru db-4.5.20.orig/rep/rep_method.c db-4.5.20/rep/rep_method.c
|
||
|
--- db-4.5.20.orig/rep/rep_method.c 2006-11-18 10:37:10.000000000 +0100
|
||
|
+++ db-4.5.20/rep/rep_method.c 2006-11-18 10:47:38.000000000 +0100
|
||
|
@@ -526,10 +526,12 @@
|
||
|
* will allow the client to either perform recovery or
|
||
|
* simply join in.
|
||
|
*/
|
||
|
- if (announce)
|
||
|
+ 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
|
||
|
+ } else
|
||
|
(void)__rep_send_message(dbenv,
|
||
|
DB_EID_BROADCAST, REP_ALIVE_REQ, NULL, NULL, 0, 0);
|
||
|
}
|
||
|
@@ -553,6 +555,7 @@
|
||
|
}
|
||
|
if (pending_event != DB_EVENT_NO_SUCH_EVENT)
|
||
|
DB_EVENT(dbenv, pending_event, NULL);
|
||
|
+ __dbt_userfree(dbenv, dbt, NULL, NULL);
|
||
|
return (ret);
|
||
|
}
|
||
|
|
||
|
diff -Nru db-4.5.20.orig/rep/rep_record.c db-4.5.20/rep/rep_record.c
|
||
|
--- db-4.5.20.orig/rep/rep_record.c 2006-11-18 10:37:10.000000000 +0100
|
||
|
+++ db-4.5.20/rep/rep_record.c 2006-11-18 10:47:38.000000000 +0100
|
||
|
@@ -163,6 +163,14 @@
|
||
|
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,6 +629,7 @@
|
||
|
*ret_lsnp = rp->lsn;
|
||
|
ret = DB_REP_NOTPERM;
|
||
|
}
|
||
|
+ __dbt_userfree(dbenv, control, rec, NULL);
|
||
|
return (ret);
|
||
|
}
|
||
|
|