diff --git a/sepostgresql-pgace-8.3.0-2.patch b/sepostgresql-pgace-8.3.0-2.patch index 1a05514..2aa142d 100644 --- a/sepostgresql-pgace-8.3.0-2.patch +++ b/sepostgresql-pgace-8.3.0-2.patch @@ -1394,7 +1394,7 @@ diff -rpNU3 base/src/backend/libpq/be-fsstubs.c pgace/src/backend/libpq/be-fsstu */ diff -rpNU3 base/src/backend/nodes/copyfuncs.c pgace/src/backend/nodes/copyfuncs.c --- base/src/backend/nodes/copyfuncs.c 2008-01-07 23:51:33.000000000 +0900 -+++ pgace/src/backend/nodes/copyfuncs.c 2008-02-22 14:17:11.000000000 +0900 ++++ pgace/src/backend/nodes/copyfuncs.c 2008-03-02 12:21:10.000000000 +0900 @@ -24,6 +24,7 @@ #include "nodes/plannodes.h" @@ -1411,7 +1411,15 @@ diff -rpNU3 base/src/backend/nodes/copyfuncs.c pgace/src/backend/nodes/copyfuncs return newnode; } -@@ -1869,6 +1871,7 @@ _copyQuery(Query *from) +@@ -1789,6 +1791,7 @@ _copyColumnDef(ColumnDef *from) + COPY_NODE_FIELD(raw_default); + COPY_STRING_FIELD(cooked_default); + COPY_NODE_FIELD(constraints); ++ COPY_NODE_FIELD(pgaceItem); + + return newnode; + } +@@ -1869,6 +1872,7 @@ _copyQuery(Query *from) COPY_NODE_FIELD(limitCount); COPY_NODE_FIELD(rowMarks); COPY_NODE_FIELD(setOperations); @@ -1419,7 +1427,7 @@ diff -rpNU3 base/src/backend/nodes/copyfuncs.c pgace/src/backend/nodes/copyfuncs return newnode; } -@@ -2105,6 +2108,7 @@ _copyCreateStmt(CreateStmt *from) +@@ -2105,6 +2109,7 @@ _copyCreateStmt(CreateStmt *from) COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(oncommit); COPY_STRING_FIELD(tablespacename); @@ -1427,7 +1435,7 @@ diff -rpNU3 base/src/backend/nodes/copyfuncs.c pgace/src/backend/nodes/copyfuncs return newnode; } -@@ -3570,6 +3574,10 @@ copyObject(void *from) +@@ -3570,6 +3575,10 @@ copyObject(void *from) break; default: diff --git a/sepostgresql-sepgsql-8.3.0-2.patch b/sepostgresql-sepgsql-8.3.0-2.patch index 6bd3393..6867889 100644 --- a/sepostgresql-sepgsql-8.3.0-2.patch +++ b/sepostgresql-sepgsql-8.3.0-2.patch @@ -2829,8 +2829,8 @@ diff -rpNU3 pgace/src/backend/security/sepgsql/permissions.c sepgsql/src/backend +} diff -rpNU3 pgace/src/backend/security/sepgsql/proxy.c sepgsql/src/backend/security/sepgsql/proxy.c --- pgace/src/backend/security/sepgsql/proxy.c 1970-01-01 09:00:00.000000000 +0900 -+++ sepgsql/src/backend/security/sepgsql/proxy.c 2008-02-04 17:40:05.000000000 +0900 -@@ -0,0 +1,1574 @@ ++++ sepgsql/src/backend/security/sepgsql/proxy.c 2008-03-02 17:00:56.000000000 +0900 +@@ -0,0 +1,1606 @@ +/* + * src/backend/security/sepgsqlProxy.c + * SE-PostgreSQL Query Proxy function to walk on query node tree @@ -3231,6 +3231,34 @@ diff -rpNU3 pgace/src/backend/security/sepgsql/proxy.c sepgsql/src/backend/secur + return selist; +} + ++static List *walkAggrefHelper(List *selist, Query *query, Node *node) ++{ ++ if (node == NULL) ++ return selist; ++ ++ if (IsA(node, RangeTblRef)) { ++ RangeTblRef *rtr = (RangeTblRef *) node; ++ RangeTblEntry *rte = rt_fetch(rtr->rtindex, query->rtable); ++ ++ if (rte->rtekind == RTE_RELATION) ++ selist = addEvalPgAttribute(selist, rte, 0, DB_COLUMN__SELECT); ++ } else if (IsA(node, JoinExpr)) { ++ JoinExpr *j = (JoinExpr *) node; ++ ++ selist = walkAggrefHelper(selist, query, j->larg); ++ selist = walkAggrefHelper(selist, query, j->rarg); ++ } else if (IsA(node, FromExpr)) { ++ FromExpr *fm = (FromExpr *)node; ++ ListCell *l; ++ ++ foreach (l, fm->fromlist) ++ selist = walkAggrefHelper(selist, query, lfirst(l)); ++ } else { ++ elog(ERROR, "SELinux: unexpected node type (%d) at Query->fromlist", nodeTag(node)); ++ } ++ return selist; ++} ++ +static List *sepgsqlWalkExpr(List *selist, queryChain *qc, Node *node, int flags) +{ + if (node == NULL) @@ -3268,6 +3296,10 @@ diff -rpNU3 pgace/src/backend/security/sepgsql/proxy.c sepgsql/src/backend/secur + + selist = addEvalPgProc(selist, aggref->aggfnoid, DB_PROCEDURE__EXECUTE); + selist = sepgsqlWalkExpr(selist, qc, (Node *) aggref->args, flags); ++ if (aggref->aggstar) { ++ Query *query = getQueryFromChain(qc); ++ selist = walkAggrefHelper(selist, query, (Node *) query->jointree); ++ } + break; + } + case T_OpExpr: diff --git a/sepostgresql.init b/sepostgresql.init index 09b5ef4..57cb6c1 100644 --- a/sepostgresql.init +++ b/sepostgresql.init @@ -9,7 +9,7 @@ PGVERSION="8.3.0" PGMAJORVERSION=`echo "$PGVERSION" | sed 's/^\([0-9]*\.[0-9a-z]*\).*$/\1/'` -SEPGVERSION="2.117" +SEPGVERSION="2.121" # source function library . /etc/rc.d/init.d/functions diff --git a/sepostgresql.spec b/sepostgresql.spec index 994c89f..ac6cf8b 100644 --- a/sepostgresql.spec +++ b/sepostgresql.spec @@ -13,7 +13,7 @@ Summary: Security Enhanced PostgreSQL Name: sepostgresql Version: 8.3.0 -Release: 2.117%{?sepgsql_extension}%{?dist} +Release: 2.121%{?sepgsql_extension}%{?dist} License: BSD Group: Applications/Databases Url: http://code.google.com/p/sepgsql/ @@ -211,6 +211,10 @@ fi %attr(700,sepgsql,sepgsql) %dir %{_localstatedir}/lib/sepgsql/backups %changelog +* Sun Mar 2 2008 - sepostgresql-8.3.0-2.120 +- BUGFIX: CREATE TABLE statement with explicit labeled columns +- BUGFIX: SELECT count(*) does not filter unallowed tuples + * Wed Feb 27 2008 - sepostgresql-8.3.0-2.117 - ".beta" removed. diff --git a/sepostgresql.te b/sepostgresql.te index 42e1bd5..9545732 100644 --- a/sepostgresql.te +++ b/sepostgresql.te @@ -1,4 +1,4 @@ -policy_module(sepostgresql, 2.117) +policy_module(sepostgresql, 2.121) gen_require(` all_userspace_class_perms