- BUGFIX: CREATE TABLE statement with explicit labeled columns

- BUGFIX: SELECT count(*) does not filter unallowed tuples
This commit is contained in:
KaiGai Kohei 2008-03-02 08:10:12 +00:00
commit fb8c5a3ba0
5 changed files with 53 additions and 9 deletions

View file

@ -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:

View file

@ -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:

View file

@ -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

View file

@ -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 <kaigai@kaigai.gr.jp> - 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 <kaigai@kaigai.gr.jp> - sepostgresql-8.3.0-2.117
- ".beta" removed.

View file

@ -1,4 +1,4 @@
policy_module(sepostgresql, 2.117)
policy_module(sepostgresql, 2.121)
gen_require(`
all_userspace_class_perms