Author: matthew Date: 2007-02-24 07:39:17 -0700 (Sat, 24 Feb 2007) New Revision: 1766
Added: trunk/db/db-4.5.20-fixes-1.patch Log: Add upstream fixes for DB-4.5.20 Added: trunk/db/db-4.5.20-fixes-1.patch =================================================================== --- trunk/db/db-4.5.20-fixes-1.patch (rev 0) +++ trunk/db/db-4.5.20-fixes-1.patch 2007-02-24 14:39:17 UTC (rev 1766) @@ -0,0 +1,92 @@ +Submitted By: Matthew Burgess <matthew at linuxfromscratch dot org> +Date: 2007-02-24 +Initial Package Version: 4.5.20 +Upstream Status: From Upstream +Origin: http://www.oracle.com/technology/products/berkeley-db/db/update/4.5.20/patch.4.5.20.html +Description: Fixes a couple of issues when trying to access databases through + the Java API. + +diff -Naur 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-09-09 14:29:04.000000000 +0000 ++++ db-4.5.20/rep/rep_method.c 2007-02-14 21:14:13.000000000 +0000 +@@ -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 -Naur 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-09-12 20:15:21.000000000 +0000 ++++ db-4.5.20/rep/rep_record.c 2007-02-14 21:14:13.000000000 +0000 +@@ -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); + } + +diff -Naur db-4.5.20.orig/sequence/sequence.c db-4.5.20/sequence/sequence.c +--- db-4.5.20.orig/sequence/sequence.c 2006-08-24 14:56:16.000000000 +0000 ++++ db-4.5.20/sequence/sequence.c 2007-02-14 21:13:48.000000000 +0000 +@@ -228,6 +228,9 @@ + 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,6 +368,7 @@ + ret = t_ret; + + ENV_LEAVE(dbenv, ip); ++ __dbt_userfree(dbenv, keyp, NULL, NULL); + return (ret); + } + +@@ -765,6 +769,10 @@ + { + 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; + key->flags = seq->seq_key.flags; -- http://linuxfromscratch.org/mailman/listinfo/patches FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page
