From 1a6de0760d5e2593e1b12a665923ca83134c109e Mon Sep 17 00:00:00 2001 From: "Vadim B. Mikheev" Date: Fri, 27 Feb 1998 08:43:53 +0000 Subject: [PATCH] Check SELECT permissions in subqueries. --- src/backend/executor/execMain.c | 24 ++++++++++++------------ src/backend/executor/nodeSubplan.c | 3 +++ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index 6326ab215d..35107c8af2 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -26,7 +26,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.44 1998/02/26 04:31:09 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.45 1998/02/27 08:43:52 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -54,12 +54,12 @@ #include "catalog/heap.h" #include "commands/trigger.h" +void +ExecCheckPerms(CmdType operation, int resultRelation, List *rangeTable, + Query *parseTree); /* decls for local routines only used within this module */ -static void -ExecCheckPerms(CmdType operation, int resultRelation, List *rangeTable, - Query *parseTree); static TupleDesc InitPlan(CmdType operation, Query *parseTree, Plan *plan, EState *estate); @@ -273,14 +273,7 @@ ExecutorEnd(QueryDesc *queryDesc, EState *estate) BufferRefCountRestore(estate->es_refcount); } -/* =============================================================== - * =============================================================== - static routines follow - * =============================================================== - * =============================================================== - */ - -static void +void ExecCheckPerms(CmdType operation, int resultRelation, List *rangeTable, @@ -376,6 +369,13 @@ ExecCheckPerms(CmdType operation, } } +/* =============================================================== + * =============================================================== + static routines follow + * =============================================================== + * =============================================================== + */ + /* ---------------------------------------------------------------- * InitPlan diff --git a/src/backend/executor/nodeSubplan.c b/src/backend/executor/nodeSubplan.c index edd1908fc3..cba1e04c88 100644 --- a/src/backend/executor/nodeSubplan.c +++ b/src/backend/executor/nodeSubplan.c @@ -106,11 +106,14 @@ ExecSubPlan(SubPlan *node, List *pvar, ExprContext *econtext) * * ---------------------------------------------------------------- */ +extern void ExecCheckPerms(CmdType op, int resRel, List *rtable, Query *q); bool ExecInitSubPlan(SubPlan *node, EState *estate, Plan *parent) { EState *sp_estate = CreateExecutorState(); + ExecCheckPerms (CMD_SELECT, 0, node->rtable, (Query*) NULL); + sp_estate->es_range_table = node->rtable; sp_estate->es_param_list_info = estate->es_param_list_info; sp_estate->es_param_exec_vals = estate->es_param_exec_vals;