- BUGFIX: CREATE TABLE statement with explicit labeled columns
- BUGFIX: SELECT count(*) does not filter unallowed tuples
This commit is contained in:
parent
c5a1f179ad
commit
fb8c5a3ba0
5 changed files with 53 additions and 9 deletions
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
policy_module(sepostgresql, 2.117)
|
||||
policy_module(sepostgresql, 2.121)
|
||||
|
||||
gen_require(`
|
||||
all_userspace_class_perms
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue