File patch.4.5.20.2 of Package libdb-4_5

*** 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);
  }