diff --git a/.cvsignore b/.cvsignore index 28f3a6b..9c8b1f2 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -postgresql-8.3.8.tar.bz2 +postgresql-8.3.9.tar.bz2 diff --git a/sepostgresql-core-8.3.patch b/sepostgresql-core-8.3.patch index e732e59..6ea9584 100644 --- a/sepostgresql-core-8.3.patch +++ b/sepostgresql-core-8.3.patch @@ -1,6 +1,6 @@ diff -rpNU3 base/configure sepgsql-new/configure ---- base/configure 2009-09-10 20:11:35.000000000 +0900 -+++ sepgsql-new/configure 2009-09-10 20:24:37.000000000 +0900 +--- base/configure 2009-12-15 16:55:43.000000000 +0900 ++++ sepgsql-new/configure 2009-12-15 17:05:57.000000000 +0900 @@ -314,7 +314,7 @@ ac_includes_default="\ # include #endif" @@ -143,8 +143,8 @@ diff -rpNU3 base/configure sepgsql-new/configure s,@ELF_SYS@,$ELF_SYS,;t t s,@LDFLAGS_SL@,$LDFLAGS_SL,;t t diff -rpNU3 base/configure.in sepgsql-new/configure.in ---- base/configure.in 2009-09-10 20:11:35.000000000 +0900 -+++ sepgsql-new/configure.in 2009-09-10 20:24:37.000000000 +0900 +--- base/configure.in 2009-12-15 16:55:43.000000000 +0900 ++++ sepgsql-new/configure.in 2009-12-15 17:05:57.000000000 +0900 @@ -626,6 +626,19 @@ PGAC_ARG_BOOL(with, zlib, yes, AC_SUBST(with_zlib) @@ -457,8 +457,8 @@ diff -rpNU3 base/src/backend/access/heap/tuptoaster.c sepgsql-new/src/backend/ac /* diff -rpNU3 base/src/backend/access/transam/xact.c sepgsql-new/src/backend/access/transam/xact.c ---- base/src/backend/access/transam/xact.c 2009-03-15 17:47:25.000000000 +0900 -+++ sepgsql-new/src/backend/access/transam/xact.c 2009-05-20 17:35:01.000000000 +0900 +--- base/src/backend/access/transam/xact.c 2009-12-15 16:55:43.000000000 +0900 ++++ sepgsql-new/src/backend/access/transam/xact.c 2009-12-15 17:05:57.000000000 +0900 @@ -35,6 +35,7 @@ #include "miscadmin.h" #include "pg_trace.h" @@ -469,7 +469,7 @@ diff -rpNU3 base/src/backend/access/transam/xact.c sepgsql-new/src/backend/acces #include "storage/procarray.h" @@ -137,6 +138,7 @@ typedef struct TransactionStateData Oid prevUser; /* previous CurrentUserId setting */ - bool prevSecDefCxt; /* previous SecurityDefinerContext setting */ + int prevSecContext; /* previous SecurityRestrictionContext */ bool prevXactReadOnly; /* entry-time xact r/o state */ + int prevRowlv; /* previous Row-level control behavior */ struct TransactionStateData *parent; /* back link to parent */ @@ -477,7 +477,7 @@ diff -rpNU3 base/src/backend/access/transam/xact.c sepgsql-new/src/backend/acces @@ -165,6 +167,7 @@ static TransactionStateData TopTransacti InvalidOid, /* previous CurrentUserId setting */ - false, /* previous SecurityDefinerContext setting */ + 0, /* previous SecurityRestrictionContext */ false, /* entry-time xact r/o state */ + ROWLV_FILTER_MODE, /* previous Row-level control behavior */ NULL /* link to parent state block */ @@ -486,13 +486,13 @@ diff -rpNU3 base/src/backend/access/transam/xact.c sepgsql-new/src/backend/acces @@ -1571,6 +1574,7 @@ StartTransaction(void) s->nChildXids = 0; s->maxChildXids = 0; - GetUserIdAndContext(&s->prevUser, &s->prevSecDefCxt); + GetUserIdAndSecContext(&s->prevUser, &s->prevSecContext); + s->prevRowlv = rowlvGetPerformingMode(); - /* SecurityDefinerContext should never be set outside a transaction */ - Assert(!s->prevSecDefCxt); + /* SecurityRestrictionContext should never be set outside a transaction */ + Assert(s->prevSecContext == 0); -@@ -2071,6 +2075,11 @@ AbortTransaction(void) - SetUserIdAndContext(s->prevUser, s->prevSecDefCxt); +@@ -2072,6 +2076,11 @@ AbortTransaction(void) + SetUserIdAndSecContext(s->prevUser, s->prevSecContext); /* + * Reset behavior of row-level access controls @@ -503,8 +503,8 @@ diff -rpNU3 base/src/backend/access/transam/xact.c sepgsql-new/src/backend/acces * do abort processing */ AfterTriggerEndXact(false); -@@ -3911,6 +3920,11 @@ AbortSubTransaction(void) - SetUserIdAndContext(s->prevUser, s->prevSecDefCxt); +@@ -3912,6 +3921,11 @@ AbortSubTransaction(void) + SetUserIdAndSecContext(s->prevUser, s->prevSecContext); /* + * Reset behavior of row-level access controls @@ -515,9 +515,9 @@ diff -rpNU3 base/src/backend/access/transam/xact.c sepgsql-new/src/backend/acces * We can skip all this stuff if the subxact failed before creating a * ResourceOwner... */ -@@ -4052,6 +4066,7 @@ PushTransaction(void) +@@ -4053,6 +4067,7 @@ PushTransaction(void) s->blockState = TBLOCK_SUBBEGIN; - GetUserIdAndContext(&s->prevUser, &s->prevSecDefCxt); + GetUserIdAndSecContext(&s->prevUser, &s->prevSecContext); s->prevXactReadOnly = XactReadOnly; + s->prevRowlv = rowlvGetPerformingMode(); @@ -921,8 +921,8 @@ diff -rpNU3 base/src/backend/catalog/heap.c sepgsql-new/src/backend/catalog/heap /* * Make a dependency link to force the relation to be deleted if its diff -rpNU3 base/src/backend/catalog/index.c sepgsql-new/src/backend/catalog/index.c ---- base/src/backend/catalog/index.c 2009-02-02 11:47:17.000000000 +0900 -+++ sepgsql-new/src/backend/catalog/index.c 2009-03-13 18:14:33.000000000 +0900 +--- base/src/backend/catalog/index.c 2009-12-15 16:55:43.000000000 +0900 ++++ sepgsql-new/src/backend/catalog/index.c 2009-12-15 17:05:57.000000000 +0900 @@ -37,6 +37,7 @@ #include "catalog/pg_constraint.h" #include "catalog/pg_operator.h" @@ -931,7 +931,7 @@ diff -rpNU3 base/src/backend/catalog/index.c sepgsql-new/src/backend/catalog/ind #include "catalog/pg_tablespace.h" #include "catalog/pg_type.h" #include "commands/tablecmds.h" -@@ -315,6 +316,7 @@ AppendAttributeTuples(Relation indexRela +@@ -316,6 +317,7 @@ AppendAttributeTuples(Relation indexRela new_tuple = heap_addheader(Natts_pg_attribute, false, @@ -939,7 +939,7 @@ diff -rpNU3 base/src/backend/catalog/index.c sepgsql-new/src/backend/catalog/ind ATTRIBUTE_TUPLE_SIZE, (void *) indexTupDesc->attrs[i]); -@@ -602,6 +604,12 @@ index_create(Oid heapRelationId, +@@ -603,6 +605,12 @@ index_create(Oid heapRelationId, Assert(indexRelationId == RelationGetRelid(indexRelation)); /* @@ -952,7 +952,7 @@ diff -rpNU3 base/src/backend/catalog/index.c sepgsql-new/src/backend/catalog/ind * Obtain exclusive lock on it. Although no other backends can see it * until we commit, this prevents deadlock-risk complaints from lock * manager in cases such as CLUSTER. -@@ -624,7 +632,7 @@ index_create(Oid heapRelationId, +@@ -625,7 +633,7 @@ index_create(Oid heapRelationId, */ InsertPgClassTuple(pg_class, indexRelation, RelationGetRelid(indexRelation), @@ -963,7 +963,7 @@ diff -rpNU3 base/src/backend/catalog/index.c sepgsql-new/src/backend/catalog/ind heap_close(pg_class, RowExclusiveLock); diff -rpNU3 base/src/backend/catalog/namespace.c sepgsql-new/src/backend/catalog/namespace.c --- base/src/backend/catalog/namespace.c 2008-01-07 23:51:33.000000000 +0900 -+++ sepgsql-new/src/backend/catalog/namespace.c 2009-09-10 20:24:37.000000000 +0900 ++++ sepgsql-new/src/backend/catalog/namespace.c 2009-12-15 17:05:57.000000000 +0900 @@ -37,6 +37,7 @@ #include "commands/dbcommands.h" #include "miscadmin.h" @@ -1092,8 +1092,8 @@ diff -rpNU3 base/src/backend/catalog/pg_namespace.c sepgsql-new/src/backend/cata nspoid = simple_heap_insert(nspdesc, tup); Assert(OidIsValid(nspoid)); diff -rpNU3 base/src/backend/catalog/pg_proc.c sepgsql-new/src/backend/catalog/pg_proc.c ---- base/src/backend/catalog/pg_proc.c 2008-01-07 23:51:33.000000000 +0900 -+++ sepgsql-new/src/backend/catalog/pg_proc.c 2009-03-13 18:14:33.000000000 +0900 +--- base/src/backend/catalog/pg_proc.c 2009-12-15 16:55:43.000000000 +0900 ++++ sepgsql-new/src/backend/catalog/pg_proc.c 2009-12-15 17:05:57.000000000 +0900 @@ -27,6 +27,7 @@ #include "mb/pg_wchar.h" #include "miscadmin.h" @@ -1112,7 +1112,7 @@ diff -rpNU3 base/src/backend/catalog/pg_proc.c sepgsql-new/src/backend/catalog/p { Oid retval; int parameterCount; -@@ -339,6 +341,13 @@ ProcedureCreate(const char *procedureNam +@@ -343,6 +345,13 @@ ProcedureCreate(const char *procedureNam /* Okay, do it... */ tup = heap_modifytuple(oldtup, tupDesc, values, nulls, replaces); @@ -1126,7 +1126,7 @@ diff -rpNU3 base/src/backend/catalog/pg_proc.c sepgsql-new/src/backend/catalog/p simple_heap_update(rel, &tup->t_self, tup); ReleaseSysCache(oldtup); -@@ -348,6 +357,13 @@ ProcedureCreate(const char *procedureNam +@@ -352,6 +361,13 @@ ProcedureCreate(const char *procedureNam { /* Creating a new procedure */ tup = heap_formtuple(tupDesc, values, nulls); @@ -2304,8 +2304,8 @@ diff -rpNU3 base/src/backend/commands/proclang.c sepgsql-new/src/backend/command } else diff -rpNU3 base/src/backend/commands/schemacmds.c sepgsql-new/src/backend/commands/schemacmds.c ---- base/src/backend/commands/schemacmds.c 2008-01-07 23:51:33.000000000 +0900 -+++ sepgsql-new/src/backend/commands/schemacmds.c 2009-06-19 15:02:12.000000000 +0900 +--- base/src/backend/commands/schemacmds.c 2009-12-15 16:55:43.000000000 +0900 ++++ sepgsql-new/src/backend/commands/schemacmds.c 2009-12-15 17:05:57.000000000 +0900 @@ -25,6 +25,7 @@ #include "commands/schemacmds.h" #include "miscadmin.h" @@ -2319,12 +2319,12 @@ diff -rpNU3 base/src/backend/commands/schemacmds.c sepgsql-new/src/backend/comma Oid owner_uid; Oid saved_uid; + Oid secid = InvalidOid; - bool saved_secdefcxt; + int save_sec_context; AclResult aclresult; -@@ -93,8 +95,15 @@ CreateSchemaCommand(CreateSchemaStmt *st - if (saved_uid != owner_uid) - SetUserIdAndContext(owner_uid, true); +@@ -94,8 +96,15 @@ CreateSchemaCommand(CreateSchemaStmt *st + SetUserIdAndSecContext(owner_uid, + save_sec_context | SECURITY_LOCAL_USERID_CHANGE); + /* Explicitly given security label */ + if (stmt->secLabel) @@ -2339,7 +2339,7 @@ diff -rpNU3 base/src/backend/commands/schemacmds.c sepgsql-new/src/backend/comma /* Advance cmd counter to make the namespace visible */ CommandCounterIncrement(); -@@ -412,3 +421,54 @@ AlterSchemaOwner_internal(HeapTuple tup, +@@ -413,3 +422,54 @@ AlterSchemaOwner_internal(HeapTuple tup, } } @@ -2454,8 +2454,8 @@ diff -rpNU3 base/src/backend/commands/sequence.c sepgsql-new/src/backend/command seq = read_info(elm, seqrel, &buf); diff -rpNU3 base/src/backend/commands/tablecmds.c sepgsql-new/src/backend/commands/tablecmds.c ---- base/src/backend/commands/tablecmds.c 2008-11-05 09:57:00.000000000 +0900 -+++ sepgsql-new/src/backend/commands/tablecmds.c 2009-06-19 15:02:12.000000000 +0900 +--- base/src/backend/commands/tablecmds.c 2009-12-15 16:55:43.000000000 +0900 ++++ sepgsql-new/src/backend/commands/tablecmds.c 2009-12-15 17:05:57.000000000 +0900 @@ -57,6 +57,7 @@ #include "parser/parser.h" #include "rewrite/rewriteDefine.h" @@ -2472,7 +2472,7 @@ diff -rpNU3 base/src/backend/commands/tablecmds.c sepgsql-new/src/backend/comman bool localHasOids; int parentOidCount; List *rawDefaults; -@@ -365,6 +367,10 @@ DefineRelation(CreateStmt *stmt, char re +@@ -375,6 +377,10 @@ DefineRelation(CreateStmt *stmt, char re schema = MergeAttributes(schema, stmt->inhRelations, stmt->relation->istemp, &inheritOids, &old_constraints, &parentOidCount); @@ -2483,7 +2483,7 @@ diff -rpNU3 base/src/backend/commands/tablecmds.c sepgsql-new/src/backend/comman /* * Create a relation descriptor from the relation schema and create the -@@ -422,6 +428,11 @@ DefineRelation(CreateStmt *stmt, char re +@@ -432,6 +438,11 @@ DefineRelation(CreateStmt *stmt, char re } } @@ -2495,7 +2495,7 @@ diff -rpNU3 base/src/backend/commands/tablecmds.c sepgsql-new/src/backend/comman relationId = heap_create_with_catalog(relname, namespaceId, tablespaceId, -@@ -434,7 +445,8 @@ DefineRelation(CreateStmt *stmt, char re +@@ -444,7 +455,8 @@ DefineRelation(CreateStmt *stmt, char re parentOidCount, stmt->oncommit, reloptions, @@ -2505,7 +2505,7 @@ diff -rpNU3 base/src/backend/commands/tablecmds.c sepgsql-new/src/backend/comman StoreCatalogInheritance(relationId, inheritOids); -@@ -660,6 +672,9 @@ truncate_check_rel(Relation rel) +@@ -670,6 +682,9 @@ truncate_check_rel(Relation rel) errmsg("permission denied: \"%s\" is a system catalog", RelationGetRelationName(rel)))); @@ -2515,7 +2515,7 @@ diff -rpNU3 base/src/backend/commands/tablecmds.c sepgsql-new/src/backend/comman /* * We can never allow truncation of shared or nailed-in-cache relations, * because we can't support changing their relfilenode values. -@@ -2591,11 +2606,14 @@ ATRewriteTable(AlteredTableInfo *tab, Oi +@@ -2601,11 +2616,14 @@ ATRewriteTable(AlteredTableInfo *tab, Oi if (newrel) { Oid tupOid = InvalidOid; @@ -2530,7 +2530,7 @@ diff -rpNU3 base/src/backend/commands/tablecmds.c sepgsql-new/src/backend/comman /* Set dropped attributes to null in new tuple */ foreach(lc, dropped_attrs) -@@ -2627,6 +2645,9 @@ ATRewriteTable(AlteredTableInfo *tab, Oi +@@ -2637,6 +2655,9 @@ ATRewriteTable(AlteredTableInfo *tab, Oi /* Preserve OID, if any */ if (newTupDesc->tdhasoid) HeapTupleSetOid(tuple, tupOid); @@ -2540,7 +2540,7 @@ diff -rpNU3 base/src/backend/commands/tablecmds.c sepgsql-new/src/backend/comman } /* Now check any constraints on the possibly-changed tuple */ -@@ -3113,6 +3134,7 @@ ATExecAddColumn(AlteredTableInfo *tab, R +@@ -3123,6 +3144,7 @@ ATExecAddColumn(AlteredTableInfo *tab, R attributeTuple = heap_addheader(Natts_pg_attribute, false, @@ -2548,7 +2548,7 @@ diff -rpNU3 base/src/backend/commands/tablecmds.c sepgsql-new/src/backend/comman ATTRIBUTE_TUPLE_SIZE, (void *) &attributeD); -@@ -4058,6 +4080,10 @@ ATAddForeignKeyConstraint(AlteredTableIn +@@ -4068,6 +4090,10 @@ ATAddForeignKeyConstraint(AlteredTableIn opclasses); } @@ -2559,7 +2559,7 @@ diff -rpNU3 base/src/backend/commands/tablecmds.c sepgsql-new/src/backend/comman /* * Look up the equality operators to use in the constraint. * -@@ -6776,6 +6802,128 @@ AlterSeqNamespaces(Relation classRel, Re +@@ -6786,6 +6812,128 @@ AlterSeqNamespaces(Relation classRel, Re relation_close(depRel, AccessShareLock); } @@ -2710,8 +2710,8 @@ diff -rpNU3 base/src/backend/executor/execJunk.c sepgsql-new/src/backend/executo /* * Use the given slot, or make a new slot if we weren't given one. diff -rpNU3 base/src/backend/executor/execMain.c sepgsql-new/src/backend/executor/execMain.c ---- base/src/backend/executor/execMain.c 2008-09-25 15:09:40.000000000 +0900 -+++ sepgsql-new/src/backend/executor/execMain.c 2009-06-10 21:37:54.000000000 +0900 +--- base/src/backend/executor/execMain.c 2009-12-15 16:55:43.000000000 +0900 ++++ sepgsql-new/src/backend/executor/execMain.c 2009-12-15 17:05:57.000000000 +0900 @@ -38,6 +38,7 @@ #include "access/xact.h" #include "catalog/heap.h" @@ -2972,7 +2972,7 @@ diff -rpNU3 base/src/backend/executor/execMain.c sepgsql-new/src/backend/executo * replace the heap tuple * * Note: if es_crosscheck_snapshot isn't InvalidSnapshot, we check that -@@ -2733,7 +2857,8 @@ OpenIntoRel(QueryDesc *queryDesc) +@@ -2748,7 +2872,8 @@ OpenIntoRel(QueryDesc *queryDesc) 0, into->onCommit, reloptions, @@ -2982,7 +2982,7 @@ diff -rpNU3 base/src/backend/executor/execMain.c sepgsql-new/src/backend/executo FreeTupleDesc(tupdesc); -@@ -2839,6 +2964,10 @@ intorel_receive(TupleTableSlot *slot, De +@@ -2854,6 +2979,10 @@ intorel_receive(TupleTableSlot *slot, De tuple = ExecCopySlotTuple(slot); @@ -4537,8 +4537,8 @@ diff -rpNU3 base/src/backend/parser/parse_target.c sepgsql-new/src/backend/parse } } diff -rpNU3 base/src/backend/postmaster/postmaster.c sepgsql-new/src/backend/postmaster/postmaster.c ---- base/src/backend/postmaster/postmaster.c 2009-09-10 20:11:35.000000000 +0900 -+++ sepgsql-new/src/backend/postmaster/postmaster.c 2009-09-10 20:24:37.000000000 +0900 +--- base/src/backend/postmaster/postmaster.c 2009-12-15 16:55:43.000000000 +0900 ++++ sepgsql-new/src/backend/postmaster/postmaster.c 2009-12-15 17:05:57.000000000 +0900 @@ -107,6 +107,7 @@ #include "postmaster/pgarch.h" #include "postmaster/postmaster.h" @@ -4568,7 +4568,7 @@ diff -rpNU3 base/src/backend/postmaster/postmaster.c sepgsql-new/src/backend/pos /* If we need to signal the autovacuum launcher, do so now */ if (avlauncher_needs_signal) { -@@ -1921,6 +1927,8 @@ SIGHUP_handler(SIGNAL_ARGS) +@@ -1923,6 +1929,8 @@ SIGHUP_handler(SIGNAL_ARGS) signal_child(PgArchPID, SIGHUP); if (SysLoggerPID != 0) signal_child(SysLoggerPID, SIGHUP); @@ -4577,7 +4577,7 @@ diff -rpNU3 base/src/backend/postmaster/postmaster.c sepgsql-new/src/backend/pos /* PgStatPID does not currently need SIGHUP */ /* Reload authentication config files too */ -@@ -1978,6 +1986,9 @@ pmdie(SIGNAL_ARGS) +@@ -1980,6 +1988,9 @@ pmdie(SIGNAL_ARGS) /* and the walwriter too */ if (WalWriterPID != 0) signal_child(WalWriterPID, SIGTERM); @@ -4587,7 +4587,7 @@ diff -rpNU3 base/src/backend/postmaster/postmaster.c sepgsql-new/src/backend/pos pmState = PM_WAIT_BACKENDS; } -@@ -2017,6 +2028,9 @@ pmdie(SIGNAL_ARGS) +@@ -2019,6 +2030,9 @@ pmdie(SIGNAL_ARGS) /* and the walwriter too */ if (WalWriterPID != 0) signal_child(WalWriterPID, SIGTERM); @@ -4597,7 +4597,7 @@ diff -rpNU3 base/src/backend/postmaster/postmaster.c sepgsql-new/src/backend/pos pmState = PM_WAIT_BACKENDS; } -@@ -2050,6 +2064,8 @@ pmdie(SIGNAL_ARGS) +@@ -2052,6 +2066,8 @@ pmdie(SIGNAL_ARGS) signal_child(PgArchPID, SIGQUIT); if (PgStatPID != 0) signal_child(PgStatPID, SIGQUIT); @@ -4606,7 +4606,7 @@ diff -rpNU3 base/src/backend/postmaster/postmaster.c sepgsql-new/src/backend/pos ExitPostmaster(0); break; } -@@ -2298,6 +2314,16 @@ reaper(SIGNAL_ARGS) +@@ -2300,6 +2316,16 @@ reaper(SIGNAL_ARGS) continue; } @@ -4623,7 +4623,7 @@ diff -rpNU3 base/src/backend/postmaster/postmaster.c sepgsql-new/src/backend/pos /* * Else do standard backend child cleanup. */ -@@ -2465,6 +2491,18 @@ HandleChildCrash(int pid, int exitstatus +@@ -2467,6 +2493,18 @@ HandleChildCrash(int pid, int exitstatus signal_child(AutoVacPID, (SendStop ? SIGSTOP : SIGQUIT)); } @@ -4642,7 +4642,7 @@ diff -rpNU3 base/src/backend/postmaster/postmaster.c sepgsql-new/src/backend/pos /* * Force a power-cycle of the pgarch process too. (This isn't absolutely * necessary, but it seems like a good idea for robustness, and it -@@ -2584,7 +2622,8 @@ PostmasterStateMachine(void) +@@ -2586,7 +2624,8 @@ PostmasterStateMachine(void) StartupPID == 0 && (BgWriterPID == 0 || !FatalError) && WalWriterPID == 0 && @@ -8872,9 +8872,9 @@ diff -rpNU3 base/src/backend/security/sepgsql/policy/sepostgresql-devel.te sepgs + allow sepgsql_database_type user_home_t : db_database { load_module }; +') diff -rpNU3 base/src/backend/storage/file/fd.c sepgsql-new/src/backend/storage/file/fd.c ---- base/src/backend/storage/file/fd.c 2008-01-07 23:51:33.000000000 +0900 -+++ sepgsql-new/src/backend/storage/file/fd.c 2009-03-13 18:14:33.000000000 +0900 -@@ -1241,6 +1241,13 @@ FileTruncate(File file, long offset) +--- base/src/backend/storage/file/fd.c 2009-12-15 16:55:43.000000000 +0900 ++++ sepgsql-new/src/backend/storage/file/fd.c 2009-12-15 17:05:57.000000000 +0900 +@@ -1251,6 +1251,13 @@ FileTruncate(File file, long offset) return returnCode; } @@ -9096,8 +9096,8 @@ diff -rpNU3 base/src/backend/tcop/pquery.c sepgsql-new/src/backend/tcop/pquery.c /* diff -rpNU3 base/src/backend/tcop/utility.c sepgsql-new/src/backend/tcop/utility.c ---- base/src/backend/tcop/utility.c 2008-11-05 09:57:00.000000000 +0900 -+++ sepgsql-new/src/backend/tcop/utility.c 2009-06-19 15:02:12.000000000 +0900 +--- base/src/backend/tcop/utility.c 2009-12-15 16:55:43.000000000 +0900 ++++ sepgsql-new/src/backend/tcop/utility.c 2009-12-15 17:05:57.000000000 +0900 @@ -49,6 +49,7 @@ #include "postmaster/bgwriter.h" #include "rewrite/rewriteDefine.h" @@ -9114,7 +9114,7 @@ diff -rpNU3 base/src/backend/tcop/utility.c sepgsql-new/src/backend/tcop/utility case T_AlterSeqStmt: case T_AlterTableStmt: case T_RenameStmt: -@@ -744,6 +746,10 @@ ProcessUtility(Node *parsetree, +@@ -766,6 +768,10 @@ ProcessUtility(Node *parsetree, ExecAlterOwnerStmt((AlterOwnerStmt *) parsetree); break; @@ -9125,7 +9125,7 @@ diff -rpNU3 base/src/backend/tcop/utility.c sepgsql-new/src/backend/tcop/utility case T_AlterTableStmt: { List *stmts; -@@ -1022,6 +1028,10 @@ ProcessUtility(Node *parsetree, +@@ -1046,6 +1052,10 @@ ProcessUtility(Node *parsetree, LoadStmt *stmt = (LoadStmt *) parsetree; closeAllVfds(); /* probably not necessary... */ @@ -9136,7 +9136,7 @@ diff -rpNU3 base/src/backend/tcop/utility.c sepgsql-new/src/backend/tcop/utility /* Allowed names are restricted if you're not superuser */ load_file(stmt->filename, !superuser()); } -@@ -1709,6 +1719,28 @@ CreateCommandTag(Node *parsetree) +@@ -1735,6 +1745,28 @@ CreateCommandTag(Node *parsetree) } break; @@ -9165,7 +9165,7 @@ diff -rpNU3 base/src/backend/tcop/utility.c sepgsql-new/src/backend/tcop/utility case T_AlterTableStmt: { AlterTableStmt *stmt = (AlterTableStmt *) parsetree; -@@ -2248,6 +2280,10 @@ GetCommandLogLevel(Node *parsetree) +@@ -2274,6 +2306,10 @@ GetCommandLogLevel(Node *parsetree) lev = LOGSTMT_DDL; break; @@ -9198,8 +9198,8 @@ diff -rpNU3 base/src/backend/utils/adt/genfile.c sepgsql-new/src/backend/utils/a (seek_offset >= 0) ? SEEK_SET : SEEK_END) != 0) ereport(ERROR, diff -rpNU3 base/src/backend/utils/adt/ri_triggers.c sepgsql-new/src/backend/utils/adt/ri_triggers.c ---- base/src/backend/utils/adt/ri_triggers.c 2008-09-25 15:09:40.000000000 +0900 -+++ sepgsql-new/src/backend/utils/adt/ri_triggers.c 2009-05-20 17:08:02.000000000 +0900 +--- base/src/backend/utils/adt/ri_triggers.c 2009-12-15 16:55:43.000000000 +0900 ++++ sepgsql-new/src/backend/utils/adt/ri_triggers.c 2009-12-15 17:05:57.000000000 +0900 @@ -37,6 +37,7 @@ #include "parser/parse_coerce.h" #include "parser/parse_relation.h" @@ -9238,17 +9238,17 @@ diff -rpNU3 base/src/backend/utils/adt/ri_triggers.c sepgsql-new/src/backend/uti /* Check result */ if (spi_result != SPI_OK_SELECT) elog(ERROR, "SPI_execute_snapshot returned %d", spi_result); -@@ -3256,6 +3266,7 @@ ri_PerformCheck(RI_QueryKey *qkey, SPIPl +@@ -3257,6 +3267,7 @@ ri_PerformCheck(RI_QueryKey *qkey, SPIPl int spi_result; Oid save_userid; - bool save_secdefcxt; + int save_sec_context; + int save_rowlv, temp_rowlv; Datum vals[RI_MAX_NUMKEYS * 2]; char nulls[RI_MAX_NUMKEYS * 2]; -@@ -3336,12 +3347,19 @@ ri_PerformCheck(RI_QueryKey *qkey, SPIPl - GetUserIdAndContext(&save_userid, &save_secdefcxt); - SetUserIdAndContext(RelationGetForm(query_rel)->relowner, true); +@@ -3338,12 +3349,19 @@ ri_PerformCheck(RI_QueryKey *qkey, SPIPl + SetUserIdAndSecContext(RelationGetForm(query_rel)->relowner, + save_sec_context | SECURITY_LOCAL_USERID_CHANGE); + /* Switch Row-level stuff behavior on FK checks, if necessary */ + temp_rowlv = (detectNewRows ? ROWLV_ABORT_MODE : ROWLV_FILTER_MODE); @@ -9263,8 +9263,8 @@ diff -rpNU3 base/src/backend/utils/adt/ri_triggers.c sepgsql-new/src/backend/uti + /* Restore Row-level stuff behavior */ + rowlvSetPerformingMode(save_rowlv); + - /* Restore UID */ - SetUserIdAndContext(save_userid, save_secdefcxt); + /* Restore UID and security context */ + SetUserIdAndSecContext(save_userid, save_sec_context); diff -rpNU3 base/src/backend/utils/adt/varlena.c sepgsql-new/src/backend/utils/adt/varlena.c --- base/src/backend/utils/adt/varlena.c 2008-03-19 09:48:23.000000000 +0900 @@ -9454,8 +9454,8 @@ diff -rpNU3 base/src/backend/utils/cache/plancache.c sepgsql-new/src/backend/uti /* other cases shouldn't happen, but return NULL */ break; diff -rpNU3 base/src/backend/utils/cache/relcache.c sepgsql-new/src/backend/utils/cache/relcache.c ---- base/src/backend/utils/cache/relcache.c 2009-02-02 11:47:17.000000000 +0900 -+++ sepgsql-new/src/backend/utils/cache/relcache.c 2009-03-13 18:14:33.000000000 +0900 +--- base/src/backend/utils/cache/relcache.c 2009-12-15 16:55:43.000000000 +0900 ++++ sepgsql-new/src/backend/utils/cache/relcache.c 2009-12-15 17:05:57.000000000 +0900 @@ -46,6 +46,7 @@ #include "catalog/pg_opclass.h" #include "catalog/pg_proc.h" @@ -9490,7 +9490,7 @@ diff -rpNU3 base/src/backend/utils/cache/relcache.c sepgsql-new/src/backend/util /* * initialize the relation lock manager information */ -@@ -1462,6 +1473,12 @@ formrdesc(const char *relationName, Oid +@@ -1464,6 +1475,12 @@ formrdesc(const char *relationName, Oid relation->rd_rel->relfilenode = RelationGetRelid(relation); /* @@ -9503,7 +9503,7 @@ diff -rpNU3 base/src/backend/utils/cache/relcache.c sepgsql-new/src/backend/util * initialize the relation lock manager information */ RelationInitLockInfo(relation); /* see lmgr.c */ -@@ -2687,6 +2704,13 @@ BuildHardcodedDescriptor(int natts, Form +@@ -2737,6 +2754,13 @@ BuildHardcodedDescriptor(int natts, Form oldcxt = MemoryContextSwitchTo(CacheMemoryContext); @@ -9517,7 +9517,7 @@ diff -rpNU3 base/src/backend/utils/cache/relcache.c sepgsql-new/src/backend/util result = CreateTemplateTupleDesc(natts, hasoids); result->tdtypeid = RECORDOID; /* not right, but we don't care */ result->tdtypmod = -1; -@@ -3446,6 +3470,12 @@ load_relcache_init_file(void) +@@ -3496,6 +3520,12 @@ load_relcache_init_file(void) rel->rd_options = NULL; } @@ -9643,8 +9643,8 @@ diff -rpNU3 base/src/backend/utils/fmgr/dfmgr.c sepgsql-new/src/backend/utils/fm { bool have_slash; diff -rpNU3 base/src/backend/utils/fmgr/fmgr.c sepgsql-new/src/backend/utils/fmgr/fmgr.c ---- base/src/backend/utils/fmgr/fmgr.c 2009-02-02 11:47:17.000000000 +0900 -+++ sepgsql-new/src/backend/utils/fmgr/fmgr.c 2009-03-13 18:14:33.000000000 +0900 +--- base/src/backend/utils/fmgr/fmgr.c 2009-12-15 16:55:43.000000000 +0900 ++++ sepgsql-new/src/backend/utils/fmgr/fmgr.c 2009-12-15 17:05:57.000000000 +0900 @@ -23,6 +23,7 @@ #include "executor/spi.h" #include "miscadmin.h" @@ -9711,8 +9711,8 @@ diff -rpNU3 base/src/backend/utils/init/postinit.c sepgsql-new/src/backend/utils * Figure out our postgres user id, and see if we are a superuser. * diff -rpNU3 base/src/backend/utils/misc/guc.c sepgsql-new/src/backend/utils/misc/guc.c ---- base/src/backend/utils/misc/guc.c 2009-09-10 20:11:35.000000000 +0900 -+++ sepgsql-new/src/backend/utils/misc/guc.c 2009-09-10 20:24:37.000000000 +0900 +--- base/src/backend/utils/misc/guc.c 2009-12-15 16:55:43.000000000 +0900 ++++ sepgsql-new/src/backend/utils/misc/guc.c 2009-12-15 17:05:57.000000000 +0900 @@ -54,6 +54,7 @@ #include "postmaster/postmaster.h" #include "postmaster/syslogger.h" diff --git a/sepostgresql-utils-8.3.patch b/sepostgresql-utils-8.3.patch index 25faf9a..3976c5d 100644 --- a/sepostgresql-utils-8.3.patch +++ b/sepostgresql-utils-8.3.patch @@ -1,6 +1,6 @@ diff -rpNU3 base/src/bin/initdb/initdb.c sepgsql-new/src/bin/initdb/initdb.c ---- base/src/bin/initdb/initdb.c 2009-09-10 20:11:35.000000000 +0900 -+++ sepgsql-new/src/bin/initdb/initdb.c 2009-09-10 20:24:37.000000000 +0900 +--- base/src/bin/initdb/initdb.c 2009-12-15 16:55:43.000000000 +0900 ++++ sepgsql-new/src/bin/initdb/initdb.c 2009-12-15 17:05:57.000000000 +0900 @@ -94,6 +94,7 @@ static bool debug = false; static bool noclean = false; static bool show_setting = false; diff --git a/sepostgresql.init b/sepostgresql.init index e70a789..7c4c571 100644 --- a/sepostgresql.init +++ b/sepostgresql.init @@ -7,9 +7,9 @@ # pidfile: /var/run/postmaster.pid #--------------------------------------------------------------------- -PGVERSION="8.3.8" +PGVERSION="8.3.9" PGMAJORVERSION=`echo "$PGVERSION" | sed 's/^\([0-9]*\.[0-9a-z]*\).*$/\1/'` -SEPGVERSION="2300" +SEPGVERSION="2515" # source function library . /etc/rc.d/init.d/functions diff --git a/sepostgresql.spec b/sepostgresql.spec index 50e0117..a1b2a7e 100644 --- a/sepostgresql.spec +++ b/sepostgresql.spec @@ -11,8 +11,8 @@ Summary: Security Enhanced PostgreSQL Name: sepostgresql -Version: 8.3.8 -Release: 2300%{?dist} +Version: 8.3.9 +Release: 2515%{?dist} License: BSD Group: Applications/Databases Url: http://code.google.com/p/sepgsql/ @@ -199,6 +199,9 @@ fi %attr(700,sepgsql,sepgsql) %dir %{_localstatedir}/lib/sepgsql/backups %changelog +* Fri Dec 25 2009 KaiGai Kohei - 8.3.9-2515 +- upgrade base PostgreSQL v8.3.8->8.3.9 + * Thu Sep 10 2009 KaiGai Kohei - 8.3.8-2300 - upgrade base PostgreSQL v8.3.7->8.3.8 diff --git a/sources b/sources index 76ef09b..b3ecf74 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -aac683d03f765dc58a3a0e5eaa1927bf postgresql-8.3.8.tar.bz2 +e120b001354851b5df26cbee8c2786d5 postgresql-8.3.9.tar.bz2